package Ġme tri k Ċ Ċ import Ġio . rest ass ured . Rest Ass ured Ċ import Ġio . rest ass ured . http . ContentType Ċ import Ġme tri k . base . Api TestBase Ċ import Ġme tri k . fixtures . mt tr Build s Ċ import Ġme tri k . fixtures . mt tr Pipeline 1 Ċ import Ġorg . hamcrest . Core Matchers . equalTo Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ internal Ġclass ĠMT TR Calculation Api Test Ġ: ĠApi TestBase () Ġ{ ĊĠĠĠ Ġ@ Before All ĊĠĠĠ Ġfun ĠsetUp Build Data Fixture () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġinit Ġpipeline Ġconfig ĊĠĠĠĠĠĠĠ Ġmongo Template . save ( mt tr Pipeline 1 ) ĊĠĠĠĠĠĠĠ Ġ// Ġinit Ġbuild Ġdata ĊĠĠĠĠĠĠĠ Ġval Ġbuild Collection Name Ġ= Ġ" build " ĊĠĠĠĠĠĠĠ Ġmt tr Build s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmongo Template . save ( it , Ġbuild Collection Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġcalculate ĠMT TR Ġcorrectly Ġfor Ġdate Ġrange Ġwithin Ġwhich Ġthe Ġ 1 st Ġbuild Ġis Ġsuccessful Ġbut Ġthe Ġlast Ġbuild Ġbefore Ġthe Ġdate Ġrange Ġis Ġfailed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" endTime ": Ġ 1 5 7 8 2 3 9 9 9 9 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Stages ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Id ": Ġ" 6 0 1 8 c 3 2 f 4 2 fbb 8 4 3 9 fc 0 8 b 2 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stage ": Ġ" Deploy Ġto ĠU AT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" startTime ": Ġ 1 5 7 8 1 0 2 0 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" unit ": Ġ" Monthly " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ api / pipeline / metrics ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . value ", ĠequalTo ( 0 . 7 4 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . level ", ĠequalTo (" EL ITE ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . details [ 0 ]. value ", ĠequalTo ( 0 . 7 4 F )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġcalculate ĠMT TR Ġcorrectly Ġfor Ġdate Ġrange Ġwithin Ġwhich Ġthe Ġ 1 st Ġbuild Ġis Ġsuccessful Ġbut Ġthe Ġlast Ġbuild Ġ& Ġthe Ġ 2 nd Ġlast Ġbuild Ġbefore Ġthe Ġdate Ġrange Ġare Ġboth Ġfailed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" endTime ": Ġ 1 5 7 8 4 9 9 1 9 9 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Stages ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Id ": Ġ" 6 0 1 8 c 3 2 f 4 2 fbb 8 4 3 9 fc 0 8 b 2 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stage ": Ġ" Deploy Ġto ĠU AT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" startTime ": Ġ 1 5 7 8 3 5 5 2 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" unit ": Ġ" Monthly " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ api / pipeline / metrics ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . value ", ĠequalTo ( 2 1 . 5 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . level ", ĠequalTo (" HIGH ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . details [ 0 ]. value ", ĠequalTo ( 2 1 . 5 F )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġcalculate ĠMT TR Ġcorrectly Ġfor Ġdate Ġrange Ġwithin Ġwhich Ġthe Ġ 1 st Ġbuild Ġis Ġsuccessful Ġbut Ġthe Ġlast Ġbuild Ġbefore Ġthe Ġdate Ġrange Ġis Ġaborted `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" endTime ": Ġ 1 5 7 8 8 4 2 6 0 3 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Stages ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Id ": Ġ" 6 0 1 8 c 3 2 f 4 2 fbb 8 4 3 9 fc 0 8 b 2 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stage ": Ġ" Deploy Ġto ĠU AT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" startTime ": Ġ 1 5 7 8 7 5 8 4 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" unit ": Ġ" Monthly " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ api / pipeline / metrics ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . value ", ĠequalTo ( 6 9 . 5 9 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . level ", ĠequalTo (" MEDIUM ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . details [ 0 ]. value ", ĠequalTo ( 6 9 . 5 9 F )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġcalculate ĠMT TR Ġcorrectly Ġfor Ġdate Ġrange Ġwithin Ġwhich Ġthe Ġ 1 st Ġbuild Ġis ĠFailed Ġbut Ġthe Ġlast Ġbuild Ġbefore Ġthe Ġdate Ġrange Ġis Ġalso ĠFailed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" endTime ": Ġ 1 5 7 9 3 6 3 1 9 9 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Stages ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Id ": Ġ" 6 0 1 8 c 3 2 f 4 2 fbb 8 4 3 9 fc 0 8 b 2 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stage ": Ġ" Deploy Ġto ĠU AT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" startTime ": Ġ 1 5 7 9 1 0 4 0 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" unit ": Ġ" Monthly " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ api / pipeline / metrics ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . value ", ĠequalTo ( 4 8 . 0 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . level ", ĠequalTo (" MEDIUM ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . details [ 0 ]. value ", ĠequalTo ( 4 8 . 0 F )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġcalculate ĠMT TR Ġcorrectly Ġfor Ġdate Ġrange Ġwithin Ġwhich Ġthere Ġare Ġseveral Ġfailure Ġrestored Ġ( Monthly Ġview )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" endTime ": Ġ 1 5 8 1 0 0 4 7 9 9 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Stages ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pipeline Id ": Ġ" 6 0 1 8 c 3 2 f 4 2 fbb 8 4 3 9 fc 0 8 b 2 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stage ": Ġ" Deploy Ġto ĠU AT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" startTime ": Ġ 1 5 7 7 8 0 8 0 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" unit ": Ġ" Monthly " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( request Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ api / pipeline / metrics ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . value ", ĠequalTo ( 7 1 . 5 5 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . summary . level ", ĠequalTo (" MEDIUM ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . details [ 0 ]. value ", ĠequalTo ( 3 1 . 4 7 F )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" mean TimeTo Restore . details [ 1 ]. value ", ĠequalTo ( 3 1 2 . 0 F )) ĊĠĠĠ Ġ} Ċ } Ċ