package Ġcom . atlassian . performance . tools . j ir aper form anc et ests . api Ċ Ċ import Ġcom . atlassian . performance . tools . aws . api . Aws Ċ import Ġcom . atlassian . performance . tools . aws . api . Invest ment Ċ import Ġcom . atlassian . performance . tools . aws infrastructure . api . Dataset Catalog ue Ċ import Ġcom . atlassian . performance . tools . aws infrastructure . api . Infrastructure Formula Ċ import Ġcom . atlassian . performance . tools . aws infrastructure . api . jira . Standalone Formula Ċ import Ġcom . atlassian . performance . tools . aws infrastructure . api . storage . J ira Software Storage Ċ import Ġcom . atlassian . performance . tools . aws infrastructure . api . virtual users . Ec 2 Virtual Users Formula Ċ import Ġcom . atlassian . performance . tools . infrastructure . api . app . App Source Ċ import Ġcom . atlassian . performance . tools . infrastructure . api . app . Apps Ċ import Ġcom . atlassian . performance . tools . infrastructure . api . app . Maven App Ċ import Ġcom . atlassian . performance . tools . infrastructure . api . app . No App Ċ import Ġcom . atlassian . performance . tools . infrastructure . api . dataset . Dataset Ċ import Ġcom . atlassian . performance . tools . jira actions . api . ActionType Ċ 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 . report . api . Criteria Ċ import Ġcom . atlassian . performance . tools . report . api . Performance Criteria Ċ import Ġcom . atlassian . performance . tools . report . api . judge . Maximum Coverage J udge Ċ import Ġcom . atlassian . performance . tools . virtual users . api . Virtual User Load Ċ import Ġcom . atlassian . performance . tools . virtual users . api . b rowsers . Browser Ċ 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 . workspace . api . Root Workspace Ċ import Ġcom . atlassian . performance . tools . workspace . api . Test Workspace Ċ import Ġcom . google . common . util . concurrent . Thread Factory Builder Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . time . Duration Ċ import Ġjava . util . concurrent . Executors Ċ Ċ /** Ċ Ġ* ĠTests Ġthe Ġperformance Ġimpact Ġof Ġthe Ġ[ app ]. Ċ Ġ*/ Ċ class ĠApp Impact Test ( ĊĠĠĠ Ġprivate Ġval Ġapp : ĠApp Source , ĊĠĠĠ Ġprivate Ġval Ġaws : ĠAws , ĊĠĠĠ Ġvar Ġtest Jar : ĠFile Ċ ) Ġ{ ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġapp : ĠMaven App , ĊĠĠĠĠĠĠĠ Ġaws : ĠAws ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġapp Ġ= Ġapp , ĊĠĠĠĠĠĠĠ Ġaws Ġ= Ġaws , ĊĠĠĠĠĠĠĠ Ġtest Jar Ġ= ĠFile (" target /${ app . artifactId }- performance - tests -${ app . version }- fat - tests . jar ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar Ġscenario : ĠClass < out ĠScenario > Ġ= ĠJira Software Scenario :: class . java ĊĠĠĠ Ġvar Ġbrowser : ĠClass < out ĠBrowser > Ġ= ĠHead less Chrome Browser :: class . java ĊĠĠĠ Ġvar Ġcriteria : ĠMap < ActionType <* >, ĠCriteria > Ġ= Ġempty Map () ĊĠĠĠ Ġvar Ġj ira Version : ĠString Ġ= Ġ" 7 . 5 . 0 " ĊĠĠĠ Ġvar Ġduration : ĠDuration Ġ= ĠDuration . of Minutes ( 2 0 ) ĊĠĠĠ Ġinternal Ġvar Ġdataset : ĠDataset Ġ= ĠDataset Catalog ue (). large J ira () ĊĠĠĠ Ġprivate Ġval Ġoutput Directory : ĠPath Ġ= ĠPaths . get (" target ") ĊĠĠĠ Ġprivate Ġval Ġapp Label Ġ= Ġapp . getLabel () ĊĊĠĠĠ Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġload Ġ= ĠVirtual User Load ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvirtual Users Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold Ġ= ĠDuration . ZERO , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr amp Ġ= ĠDuration . ZERO , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflat Ġ= Ġduration ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġrun Regression ( load ) ĊĠĠĠĠĠĠĠ Ġassert No Regression ( results , Ġload ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Regression ( ĊĠĠĠĠĠĠĠ Ġload : ĠVirtual User Load ĊĠĠĠ Ġ): ĠRegression Results Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġworkspace Ġ= ĠRoot Workspace ( output Directory ). current Task . isolate Test (" App Ġimpact Ġtest ") ĊĠĠĠĠĠĠĠ Ġval Ġbaseline Ġ= Ġtest Co hort ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco hort Ġ= Ġ" without Ġ$ app Label ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Ġ= ĠNo App () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexperiment Ġ= Ġtest Co hort ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco hort Ġ= Ġ" with Ġ$ app Label ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Ġ= Ġapp ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġvirtual User Behavior Ġ= ĠVirtual User Behavior ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Ġ= Ġload , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrowser Ġ= Ġbrowser , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Ġ= Ġscenario , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiagnostics Limit Ġ= Ġ 2 5 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseed Ġ= Ġ 1 2 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexecutor Ġ= ĠExec utors . new Fixed ThreadPool ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Factory Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName Format (" standalone - st ability - test - thread -% d ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfuture Baseline Results Ġ= Ġbaseline . run Async ( workspace , Ġexecutor , Ġvirtual User Behavior ) ĊĠĠĠĠĠĠĠ Ġval Ġfuture Experiment Results Ġ= Ġexperiment . run Async ( workspace , Ġexecutor , Ġvirtual User Behavior ) ĊĠĠĠĠĠĠĠ Ġval Ġbaseline Results Ġ= Ġfuture Baseline Results . get () ĊĠĠĠĠĠĠĠ Ġval Ġexperiment Results Ġ= Ġfuture Experiment Results . get () ĊĠĠĠĠĠĠĠ Ġexecutor . shutdown Now () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRegression Results ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbaseline Ġ= Ġbaseline Results , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexperiment Ġ= Ġexperiment Results ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Co hort ( ĊĠĠĠĠĠĠĠ Ġco hort : ĠString , ĊĠĠĠĠĠĠĠ Ġapp : ĠApp Source ĊĠĠĠ Ġ): ĠProvisioning Performance Test Ġ= ĠProvisioning Performance Test ( ĊĠĠĠĠĠĠĠ Ġco hort Ġ= Ġco hort , ĊĠĠĠĠĠĠĠ Ġinfrastructure Formula Ġ= ĠInfrastructure Formula ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvestment Ġ= ĠInvest ment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Case Ġ= Ġ" Measure Ġapp Ġimpact Ġof Ġ$ app Label ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl if es pan Ġ= ĠDuration . of Hours ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj ira Formula Ġ= ĠStand alone Formula ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapps Ġ= ĠApps ( listOf ( app )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Ġ= ĠJira Software Storage ( jira Version ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ira Home Source Ġ= Ġdataset . jira Home Source , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Ġ= Ġdataset . database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvirtual Users Formula Ġ= ĠEc 2 Virtual Users Formula ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Jar Ġ= Ġtest Jar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaws Ġ= Ġaws ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġassert No Regression ( ĊĠĠĠĠĠĠĠ Ġresults : ĠRegression Results , ĊĠĠĠĠĠĠĠ Ġload : ĠVirtual User Load ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreport Workspace Ġ= Ġoutput Directory . resolve (" sure fire - reports ") ĊĠĠĠĠĠĠĠ Ġval Ġver dict Ġ= ĠMaximum Coverage J udge (). judge ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbaseline Ġ= Ġresults . baseline , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexperiment Ġ= Ġresults . experiment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcriteria Ġ= ĠPerformance Criteria ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Criteria Ġ= Ġcriteria , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvirtual User Load Ġ= Ġload ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Ġ= ĠTest Workspace ( report Workspace ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġver dict . assert Accepted ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Class . canonical Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Workspace ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ