package Ġcom . atlassian . performance . tools . virtual users . api Ċ Ċ import Ġcom . atlassian . performance . tools . jira actions . api . scenario . Scenario Ċ import Ġcom . atlassian . performance . tools . j ir aso ftware actions . api . J ira Software Scenario Ċ import Ġcom . atlassian . performance . tools . virtual users . api . b rowsers . Browser Ċ import Ġcom . atlassian . performance . tools . virtual users . api . b rowsers . Google Chrome Ċ import Ġcom . atlassian . performance . tools . virtual users . api . b rowsers . Head less Chrome Browser Ċ import Ġcom . atlassian . performance . tools . virtual users . api . config . Virtual User Behavior Ċ import Ġcom . atlassian . performance . tools . virtual users . api . config . Virtual User Target Ċ import Ġcom . atlassian . performance . tools . virtual users . api . users . Rest User Generator Ċ import Ġcom . atlassian . performance . tools . virtual users . api . users . Supp lied User Generator Ċ import Ġcom . atlassian . performance . tools . virtual users . api . users . User Generator Ċ import Ġcom . atlassian . performance . tools . virtual users . logs . Log Configuration Ċ import Ġorg . apache . commons . cli .* Ċ import Ġorg . apache . logging . log 4 j . core . config . Abstract Configuration Ċ import Ġjava . net . URI Ċ import Ġjava . net . URL Ċ import Ġjava . time . Duration Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠParsed Ġcli Ġargs Ġstored Ġas Ġfields . Ċ Ġ* ĠUse Ġ{@ link ĠTest Options . Parser } Ġto Ġparse . Ċ Ġ*/ Ċ @ Suppress (" Deprecated Callable Add Replace With ") Ċ class ĠVirtual User Options ( ĊĠĠĠ Ġval Ġtarget : ĠVirtual User Target , ĊĠĠĠ Ġval Ġbehavior : ĠVirtual User Behavior Ċ ) Ġ{ ĊĠĠĠ Ġ@ Deprecated ( deprecated Getter Message ) ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġval Ġhelp : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbehavior . help ĊĊĠĠĠ Ġ@ Deprecated ( deprecated Getter Message ) ĊĠĠĠ Ġval Ġj ira Address : ĠURI ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtarget . web Application ĊĊĠĠĠ Ġ@ Deprecated ( deprecated Getter Message ) ĊĠĠĠ Ġval Ġadmin Login : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtarget . userName ĊĊĠĠĠ Ġ@ Deprecated ( deprecated Getter Message ) ĊĠĠĠ Ġval Ġadmin Password : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtarget . password ĊĊĠĠĠ Ġ@ Deprecated (" This Ġfield Ġmoved Ġto ĠVirtual User Behavior ", ĠReplace With (" behavior . load ")) ĊĠĠĠ Ġval Ġvirtual User Load : ĠVirtual User Load ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbehavior . load ĊĊĠĠĠ Ġ@ Deprecated ( deprecated Getter Message ) ĊĠĠĠ Ġval Ġscenario : ĠClass < out ĠScenario > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbehavior . scenario ĊĊĠĠĠ Ġ@ Deprecated ( deprecated Getter Message ) ĊĠĠĠ Ġval Ġseed : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbehavior . seed ĊĊĠĠĠ Ġ@ Deprecated ( deprecated Getter Message ) ĊĠĠĠ Ġval Ġdiagnostics Limit : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbehavior . diagnostics Limit ĊĊĠĠĠ Ġ@ Deprecated ( deprecated Getter Message ) ĊĠĠĠ Ġval Ġbrowser : ĠClass < out ĠBrowser > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbehavior . browser ĊĊĠĠĠ Ġprivate Ġval Ġnormalized J ira Address : ĠURI Ġ= Ġvalidate J ira Address () ĊĊĠĠĠ Ġ@ Deprecated ( ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Use Ġthe Ġ 2 - arg Ġconstructor . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Kotlin Ġdefaults Ġdon 't Ġwork Ġfrom ĠJava Ġand Ġintroduce Ġbinary Ġcompatibility Ġproblems . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" More over , Ġforcing Ġto Ġthink Ġabout Ġthe Ġvalues Ġexposes Ġthe Ġpowerful Ġoptions Ġat Ġthe Ġusers Ġdis posal ." ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġhelp : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġj ira Address : ĠURI Ġ= ĠURI (" http :// localhost : 8 0 8 0 / "), ĊĠĠĠĠĠĠĠ Ġadmin Login : ĠString Ġ= Ġ" admin ", ĊĠĠĠĠĠĠĠ Ġadmin Password : ĠString Ġ= Ġ" admin ", ĊĠĠĠĠĠĠĠ Ġvirtual User Load : ĠVirtual User Load Ġ= ĠVirtual User Load (), ĊĠĠĠĠĠĠĠ Ġscenario : ĠClass < out ĠScenario > Ġ= ĠJira Software Scenario :: class . java , ĊĠĠĠĠĠĠĠ Ġseed : ĠLong Ġ= ĠRandom (). next Long (), ĊĠĠĠĠĠĠĠ Ġdiagnostics Limit : ĠInt Ġ= Ġ 6 4 , ĊĠĠĠĠĠĠĠ Ġallow In secure Connections : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġhelp Ġ= Ġhelp , ĊĠĠĠĠĠĠĠ Ġj ira Address Ġ= Ġj ira Address , ĊĠĠĠĠĠĠĠ Ġadmin Login Ġ= Ġadmin Login , ĊĠĠĠĠĠĠĠ Ġadmin Password Ġ= Ġadmin Password , ĊĠĠĠĠĠĠĠ Ġvirtual User Load Ġ= Ġvirtual User Load , ĊĠĠĠĠĠĠĠ Ġscenario Ġ= Ġscenario , ĊĠĠĠĠĠĠĠ Ġseed Ġ= Ġseed , ĊĠĠĠĠĠĠĠ Ġdiagnostics Limit Ġ= Ġdiagnostics Limit , ĊĠĠĠĠĠĠĠ Ġbrowser Ġ= Ġif Ġ( allow In secure Connections ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom . atlassian . performance . tools . virtual users . Google Chrome With In secure Connection Support :: class . java ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHead less Chrome Browser :: class . java ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Deprecated ( message Ġ= Ġ" Use Ġthe Ġ 2 - arg Ġconstructor ") ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") Ġhelp : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġj ira Address : ĠURI , ĊĠĠĠĠĠĠĠ Ġadmin Login : ĠString , ĊĠĠĠĠĠĠĠ Ġadmin Password : ĠString , ĊĠĠĠĠĠĠĠ Ġvirtual User Load : ĠVirtual User Load , ĊĠĠĠĠĠĠĠ Ġscenario : ĠClass < out ĠScenario >, ĊĠĠĠĠĠĠĠ Ġseed : ĠLong , ĊĠĠĠĠĠĠĠ Ġdiagnostics Limit : ĠInt , ĊĠĠĠĠĠĠĠ Ġbrowser : ĠClass < out ĠBrowser > ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġtarget Ġ= ĠVirtual User Target ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Application Ġ= Ġj ira Address , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserName Ġ= Ġadmin Login , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġadmin Password ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġbehavior Ġ= ĠVirtual User Behavior . Builder ( scenario ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( virtual User Load ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. seed ( seed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. diagnostics Limit ( diagnostics Limit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. browser ( browser ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġwith Target ( ĊĠĠĠĠĠĠĠ Ġtarget : ĠVirtual User Target ĊĠĠĠ Ġ) Ġ= ĠVirtual User Options ( ĊĠĠĠĠĠĠĠ Ġtarget Ġ= Ġtarget , ĊĠĠĠĠĠĠĠ Ġbehavior Ġ= Ġbehavior ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġwith Behavior ( ĊĠĠĠĠĠĠĠ Ġbehavior : ĠVirtual User Behavior ĊĠĠĠ Ġ) Ġ= ĠVirtual User Options ( ĊĠĠĠĠĠĠĠ Ġtarget Ġ= Ġtarget , ĊĠĠĠĠĠĠĠ Ġbehavior Ġ= Ġbehavior ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġhelp Parameter Ġ= Ġ" help " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġj ira Address Parameter Ġ= Ġ" jira - address " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġlogin Parameter Ġ= Ġ" login " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġpassword Parameter Ġ= Ġ" password " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval Ġvirtual Users Parameter Ġ= Ġ" virtual - users " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġlogging Parameter Ġ= Ġ" logging " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġhold Parameter Ġ= Ġ" hold " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġr amp Parameter Ġ= Ġ" ramp " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġflat Parameter Ġ= Ġ" flat " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġmax Overall Load Parameter Ġ= Ġ" max - overall - load " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġscenario Parameter Ġ= Ġ" scenario " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġbrowser Parameter Ġ= Ġ" browser " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġseed Parameter Ġ= Ġ" seed " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġdiagnostics Limit Parameter Ġ= Ġ" diagnostics - limit " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġallow In secure Connections Parameter Ġ= Ġ" allow - in secure - connections " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġskip Setup Parameter Ġ= Ġ" skip - setup " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġcreate Users Parameter Ġ= Ġ" create - users " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġuser Generator Parameter Ġ= Ġ" user - generator " ĊĊĠĠĠĠĠĠĠ Ġval Ġoptions : ĠOptions Ġ= ĠOptions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder (" h ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( help Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" This Ġhelp ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( jira Address Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. arg Name (" address ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Address Ġof Ġtested ĠJIRA Ġas ĠURI ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( login Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Login Ġof Ġan Ġadmin Ġuser ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( password Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Password Ġof Ġan Ġadmin Ġuser ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( virtual Users Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Number Ġof Ġvirtual Ġusers Ġto Ġexecute .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( logging Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Custom Ġlogging Ġconfiguration ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( hold Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Initial Ġhold Ġduration Ġin ĠISO - 8 6 0 1 Ġformat ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( ramp Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Load Ġr amp Ġduration Ġin ĠISO - 8 6 0 1 Ġformat ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( flat Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Flat Ġload Ġduration Ġin ĠISO - 8 6 0 1 Ġformat ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( max Overall Load Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Maximum Ġaction Ġrate Ġfor Ġeach ĠV U Ġthroughout Ġthe Ġentire Ġduration ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠFormat : Ġ< decimal Ġreal Ġnumber >/< ISO - 8 6 0 1 Ġduration >" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( scenario Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Custom Ġscenario ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( browser Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Custom Ġbrowser ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( seed Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Root Ġseed .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( diagnostics Limit Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Limit ing Ġhow Ġmany Ġtimes Ġdiagnostics Ġcan Ġbe Ġexecuted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( allow In secure Connections Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Allow s Ġin secure Ġconnections Ġto Ġthe Ġbrowser ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( skip Setup Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Sk ips Ġthe Ġsetup Ġaction ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( create Users Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Creates Ġusers ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOption . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. long Opt ( user Generator Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Arg ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. desc (" Users Ġgenerator Ġclass ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated ( ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" You Ġcan Ġconfigure Ġbrowser Ġoptions Ġby Ġimplementing ĠBrowser ĠSPI " ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ Suppress (" Deprecated Callable Add Replace With ") ĊĠĠĠ Ġfun Ġget Allow In secure Connections (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠ Ġreturn Ġbehavior . browser Ġ== Ġcom . atlassian . performance . tools . virtual users . Google Chrome With In secure Connection Support :: class . java ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSerial izes Ġto ĠCLI Ġargs . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Cli Args (): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠ Ġval Ġflags : ĠList < String > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelp Parameter Ġto Ġbehavior . help , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow In secure Connections Parameter Ġto Ġget Allow In secure Connections (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Setup Parameter Ġto Ġbehavior . skip Setup ĊĠĠĠĠĠĠĠ Ġ). map NotNull Ġ{ Ġ( parameter , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ) Ġ"-- $ parameter " Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġparameters : ĠList < String > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj ira Address Parameter Ġto Ġnormalized J ira Address , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Parameter Ġto Ġtarget . userName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Parameter Ġto Ġtarget . password , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvirtual Users Parameter Ġto Ġbehavior . load . virtual Users , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogging Parameter Ġto Ġbehavior . logging . canonical Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold Parameter Ġto Ġbehavior . load . hold , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr amp Parameter Ġto Ġbehavior . load . ramp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflat Parameter Ġto Ġbehavior . load . flat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Overall Load Parameter Ġto Ġbehavior . load . max Overall Load . let Ġ{ Ġ"${ it . change }/${ it . time }" Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Parameter Ġto Ġbehavior . scenario . canonical Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiagnostics Limit Parameter Ġto Ġbehavior . diagnostics Limit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseed Parameter Ġto Ġbehavior . seed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrowser Parameter Ġto Ġbehavior . browser . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Generator Parameter Ġto Ġbehavior . user Generator . name ĊĊĠĠĠĠĠĠĠ Ġ). flatMap Ġ{ Ġ( parameter , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ("-- $ parameter ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ( flags Ġ+ Ġparameters ). to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate J ira Address (): ĠURI Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . web Application . to URL () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Invalid ĠJira ĠURL : Ġ${ target . web Application }", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠURL ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl . protocol , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl . host , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl . port , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . file . endsWith ("/") Ġ-> Ġurl . file ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġurl . file Ġ+ Ġ"/" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ). to URI () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprint Help () Ġ{ ĊĠĠĠĠĠĠĠ ĠHelp Formatter (). print Help ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" EntryPoint ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠParser Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠParses Ġcli Ġargs . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġparse ( args : ĠArray < String >): ĠVirtual User Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparser : ĠCommandLine Parser Ġ= ĠDefault Parser () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Line Ġ= Ġparser . parse ( options , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj ira Address Ġ= ĠURI ( command Line . getOption Value ( jira Address Parameter )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadmin Login Ġ= Ġcommand Line . getOption Value ( login Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadmin Password Ġ= Ġcommand Line . getOption Value ( password Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvirtual Users Ġ= Ġcommand Line . getOption Value ( virtual Users Parameter ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhold Ġ= ĠDuration . parse ( command Line . getOption Value ( hold Parameter )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr amp Ġ= ĠDuration . parse ( command Line . getOption Value ( ramp Parameter )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflat Ġ= ĠDuration . parse ( command Line . getOption Value ( flat Parameter )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Overall Load Ġ= Ġcommand Line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getOption Value ( max Overall Load Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġit . split ('/') Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġ( actions , Ġtime ) Ġ-> ĠTemp oral Rate ( actions . toDouble (), ĠDuration . parse ( time )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiagnostics Limit Ġ= Ġcommand Line . getOption Value ( diagnostics Limit Parameter ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseed Ġ= Ġcommand Line . getOption Value ( seed Parameter ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġskip Setup Ġ= Ġcommand Line . has Option ( skip Setup Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreate Users Ġ= Ġcommand Line . has Option ( create Users Parameter ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠVirtual User Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Ġ= ĠVirtual User Target ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Application Ġ= Ġj ira Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserName Ġ= Ġadmin Login , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġadmin Password ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior Ġ= ĠVirtual User Behavior . Builder ( get Scenario ( command Line )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. diagnostics Limit ( diagnostics Limit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. seed ( seed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. browser ( get Browser ( command Line )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. logging ( get Logging ( command Line )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVirtual User Load . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. virtual Users ( virtual Users ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hold ( hold ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ramp ( ramp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flat ( flat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġif Ġ( max Overall Load Ġ!= Ġnull ) Ġit . max Overall Load ( max Overall Load ) Ġelse Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. skip Setup ( skip Setup ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. user Generator ( if Ġ( create Users ) ĠRest User Generator :: class . java Ġelse ĠgetUser Generator ( command Line )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Scenario ( command Line : ĠCommandLine ): ĠClass < out ĠScenario > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscenario Ġ= Ġcommand Line . getOption Value ( scenario Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscenario Class Ġ= ĠClass . forName ( scenario ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscenario Constructor Ġ= Ġscenario Class . get Constructor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( scenario Constructor . newInstance () Ġas ĠScenario ):: class . java ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Browser ( command Line : ĠCommandLine ): ĠClass < out ĠBrowser > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( command Line . has Option ( browser Parameter )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbrowser Ġ= Ġcommand Line . getOption Value ( browser Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbrowser Class Ġ= ĠClass . forName ( browser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbrowser Constructor Ġ= Ġbrowser Class . get Constructor () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( browser Constructor . newInstance () Ġas ĠBrowser ):: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠGoogle Chrome :: class . java ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Logging ( command Line : ĠCommandLine ): ĠClass < out ĠAbstract Configuration > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( command Line . has Option ( logging Parameter )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogging Ġ= Ġcommand Line . getOption Value ( logging Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogging Class Ġ= ĠClass . forName ( logging ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogging Constructor Ġ= Ġlogging Class . get Constructor () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( logging Constructor . newInstance () Ġas ĠAbstract Configuration ):: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠLog Configuration :: class . java ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetUser Generator ( command Line : ĠCommandLine ): ĠClass < out ĠUser Generator > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( command Line . has Option ( user Generator Parameter )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Generator Ġ= Ġcommand Line . getOption Value ( user Generator Parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Generator Class Ġ= ĠClass . forName ( user Generator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Generator Constructor Ġ= Ġuser Generator Class . get Constructor () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( user Generator Constructor . newInstance () Ġas ĠUser Generator ):: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠSup p lied User Generator :: class . java ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġconst Ġval Ġdeprecated Getter Message Ġ= Ġ" Raise Ġa ĠJ PERF ĠJira Ġstory Ġto Ġexplain Ġwhy Ġyou Ġneed Ġaccess Ġto Ġthis Ġfield " Ċ