package Ġprojekt or . performance Ċ Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . server . testing .* Ċ import Ġio . ktor . util .* Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġprojekt or . Application TestCase Ċ import Ġprojekt or . database . generated . tables . da os . Performance Results Dao Ċ import Ġprojekt or . parser . Group ed Results Xml Loader Ċ import Ġprojekt or . parser . grouped . model . Git Metadata Ċ import Ġprojekt or . parser . grouped . model . Performance Result Ċ import Ġprojekt or . parser . grouped . model . Results Metadata Ċ import Ġprojekt or . server . example . performance . Performance Results Loader Ċ import Ġstri kt . api . expect That Ċ import Ġstri kt . assertions . has Size Ċ import Ġstri kt . assertions . isEqualTo Ċ import Ġstri kt . assertions . isNotNull Ċ import Ġjava . math . BigDecimal Ċ Ċ @ K tor Experimental API Ċ class ĠSave Performance Results Application Test Ġ: ĠApplication TestCase () Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġsave Ġresults Ġwith Ġno Ġtest Ġresults Ġand Ġtwo Ġperformance Ġresults `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgit Metadata Ġ= ĠGit Metadata () ĊĠĠĠĠĠĠĠ Ġgit Metadata . repo Name Ġ= Ġ" c raig atk / pro jekt or " ĊĠĠĠĠĠĠĠ Ġgit Metadata . branch Name Ġ= Ġ" main " ĊĠĠĠĠĠĠĠ Ġgit Metadata . is Main Branch Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= ĠResults Metadata () ĊĠĠĠĠĠĠĠ Ġmetadata . git Ġ= Ġgit Metadata ĊĊĠĠĠĠĠĠĠ Ġval Ġperf Result 1 Ġ= ĠPerformance Result () ĊĠĠĠĠĠĠĠ Ġperf Result 1 . name Ġ= Ġ" perf - 1 " ĊĠĠĠĠĠĠĠ Ġperf Result 1 . results Blob Ġ= ĠPerformance Results Loader (). k 6 Get Failed TestCase s Large () ĊĊĠĠĠĠĠĠĠ Ġval Ġperf Result 2 Ġ= ĠPerformance Result () ĊĠĠĠĠĠĠĠ Ġperf Result 2 . name Ġ= Ġ" perf - 2 " ĊĠĠĠĠĠĠĠ Ġperf Result 2 . results Blob Ġ= ĠPerformance Results Loader (). k 6 Get Run () ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= ĠGroup ed Results Xml Loader (). wrap Performance Results In Group ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( perf Result 1 , Ġperf Result 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġwith Test Application (:: create Test Application ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Request ( HttpMethod . Post , Ġ"/ grouped Results ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( HttpHeaders . ContentType , Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Body ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( public Id , Ġ_) Ġ= ĠwaitFor Test Run Save To Complete ( response ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperformance Results Dao Ġ= ĠPerformance Results Dao ( dsl Context . configuration ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfetched Performance Results Ġ= Ġperformance Results Dao . fetch By Test Run Public Id ( public Id . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect That ( f etched Performance Results ). has Size ( 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfetched Perf Result 1 Ġ= Ġfetched Performance Results . find Ġ{ Ġit . name Ġ== Ġ" perf - 1 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect That ( f etched Perf Result 1 ). isNotNull (). and Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġrequests PerSecond Ġ}. isEqualTo ( BigDecimal (" 4 9 6 . 0 0 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġrequest Count Ġ}. isEqualTo ( 7 6 7 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġaverage Ġ}. isEqualTo ( BigDecimal (" 3 2 . 6 8 4 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġmaximum Ġ}. isEqualTo ( BigDecimal (" 3 8 2 . 6 7 0 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġp 9 5 Ġ}. isEqualTo ( BigDecimal (" 6 0 . 0 2 7 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfetched Perf Result 2 Ġ= Ġfetched Performance Results . find Ġ{ Ġit . name Ġ== Ġ" perf - 2 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect That ( f etched Perf Result 2 ). isNotNull (). and Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġrequests PerSecond Ġ}. isEqualTo ( BigDecimal (" 1 0 1 9 . 9 2 4 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġrequest Count Ġ}. isEqualTo ( 6 6 7 0 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġaverage Ġ}. isEqualTo ( BigDecimal (" 1 1 . 0 7 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġmaximum Ġ}. isEqualTo ( BigDecimal (" 4 1 0 . 5 3 0 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ{ Ġp 9 5 Ġ}. isEqualTo ( BigDecimal (" 2 2 . 2 9 4 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ