package Ġno . sk at te et aten . aur ora . mo key . service Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġcom . fk or ot kov . kubernetes . apps . new Deployment Condition Ċ import Ġio . fabric 8 . kubernetes . api . model . apps . Deployment Condition Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Instant Ċ Ċ class ĠA ur ora Phase Calculator Test Ġ{ ĊĠĠĠ Ġ/* ĊĠĠĠĠĠ ĠDen ne Ġvis er Ġscaling Ġtimeout Ġn Ã¥ , Ġmen Ġb Ã¸ r Ġik ke Ġv Ã¦ re Ġdet ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ" last Transition Time ": Ġ" 2 0 1 9 - 1 0 - 1 8 T 1 0 : 2 5 : 1 2 Z ", ĊĠĠĠĠĠĠĠ Ġ" last UpdateTime ": Ġ" 2 0 1 9 - 1 0 - 1 8 T 1 0 : 2 5 : 1 2 Z ", ĊĠĠĠĠĠĠĠ Ġ" message ": Ġ" Deployment Ġconfig Ġdoes Ġnot Ġhave Ġminimum Ġavailability .", ĊĠĠĠĠĠĠĠ Ġ" status ": Ġ" False ", ĊĠĠĠĠĠĠĠ Ġ" type ": Ġ" Available " ĊĠĠĠ Ġ}, ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ" last Transition Time ": Ġ" 2 0 2 0 - 0 2 - 0 6 T 1 6 : 0 1 : 1 1 Z ", ĊĠĠĠĠĠĠĠ Ġ" last UpdateTime ": Ġ" 2 0 2 0 - 0 2 - 0 6 T 1 6 : 0 1 : 1 1 Z ", ĊĠĠĠĠĠĠĠ Ġ" message ": Ġ" replication Ġcontroller Ġ\" testdata generator - 7 3 \" Ġhas Ġfailed Ġprogress ing ", ĊĠĠĠĠĠĠĠ Ġ" reason ": Ġ" Progress Deadline Exceeded ", ĊĠĠĠĠĠĠĠ Ġ" status ": Ġ" False ", ĊĠĠĠĠĠĠĠ Ġ" type ": Ġ" Progress ing " ĊĠĠĠ Ġ} ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/* ĊĠĠ Ġv enter ĠpÃ¥ Ġf Ã¸ r ste Ġapply Ċ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" last Transition Time ": Ġ" 2 0 2 0 - 0 3 - 2 5 T 2 0 : 5 3 : 0 3 Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" last UpdateTime ": Ġ" 2 0 2 0 - 0 3 - 2 5 T 2 0 : 5 3 : 0 3 Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" Deployment Ġconfig Ġdoes Ġnot Ġhave Ġminimum Ġavailability .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" status ": Ġ" False ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" Available " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" last Transition Time ": Ġ" 2 0 2 0 - 0 3 - 2 5 T 2 0 : 5 3 : 2 8 Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" last UpdateTime ": Ġ" 2 0 2 0 - 0 3 - 2 5 T 2 0 : 5 3 : 2 8 Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message ": Ġ" replication Ġcontroller Ġ\" aos - 4 3 1 4 - mo key - 1 \" Ġis Ġwaiting Ġfor Ġpod Ġ\" aos - 4 3 1 4 - mo key - 1 - deploy \" Ġto Ġrun ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" status ": Ġ" Unknown ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" Progress ing " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġbe Ġcomplete Ġif Ġavailable Ġand Ġnot Ġdeploying `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠInstant . EPOCH ĊĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= ĠDuration . of Minutes ( 1 L ) ĊĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Available Condition ( now ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Progress ing Condition ( now ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . find Phase ( limit , Ġnow )). isEqualTo (" Complete ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġbe Ġnode ploy Ġif Ġno Ġdeploy Ġmade Ġyet `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠInstant . EPOCH ĊĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= ĠDuration . of Minutes ( 1 L ) ĊĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Available Condition ( now , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . find Phase ( limit , Ġnow )). isEqualTo ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġbe Ġdeploy Ġfailed Ġif Ġlast Ġdeployment Ġfailed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠInstant . EPOCH ĊĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= ĠDuration . of Minutes ( 1 L ) ĊĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Available Condition ( now ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Progress ing Condition ( now , Ġ" Failed ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . find Phase ( limit , Ġnow )). isEqualTo (" Failed ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġbe Ġongoing Ġof Ġdeploy Ġis Ġongoing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠInstant . EPOCH ĊĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= ĠDuration . of Minutes ( 1 L ) ĊĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Available Condition ( now , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Progress ing Condition ( now , Ġ" O ngo ing ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . find Phase ( limit , Ġnow )). isEqualTo (" Deployment Progress ing ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġbe Ġfailed Ġscaling Ġif Ġstill Ġscaling Ġafter Ġ 1 Ġminute `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠInstant . EPOCH ĊĠĠĠĠĠĠĠ Ġval Ġtwo Minutes After Ġ= Ġnow Ġ+ ĠDuration . of Minutes ( 2 L ) ĊĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= ĠDuration . of Minutes ( 1 L ) ĊĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Available Condition ( now , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Progress ing Condition ( now ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . find Phase ( limit , Ġtwo Minutes After )). isEqualTo (" Complete ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġbe Ġfailed Ġif Ġstill Ġscaling Ġafter Ġ 1 Ġminute Ġand Ġlast Ġdeploy Ġfailed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠInstant . EPOCH ĊĠĠĠĠĠĠĠ Ġval Ġtwo Minutes After Ġ= Ġnow Ġ+ ĠDuration . of Minutes ( 2 L ) ĊĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= ĠDuration . of Minutes ( 1 L ) ĊĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Available Condition ( now , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Progress ing Condition ( now , Ġ" Failed ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . find Phase ( limit , Ġtwo Minutes After )). isEqualTo (" Failed ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġbe Ġscaling Ġif Ġscaling Ġwithin Ġlimit `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠInstant . EPOCH ĊĠĠĠĠĠĠĠ Ġval Ġone Minute After Ġ= Ġnow Ġ+ ĠDuration . of Minutes ( 1 L ) ĊĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= ĠDuration . of Minutes ( 2 L ) ĊĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Available Condition ( now , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Progress ing Condition ( now ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . find Phase ( limit , Ġone Minute After )). isEqualTo (" Scaling ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Available Condition ( ĊĠĠĠĠĠĠĠ Ġtime : ĠInstant , ĊĠĠĠĠĠĠĠ Ġongoing : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠDeployment Condition Ġ= Ġnew Deployment Condition Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Transition Time Ġ= Ġtime . toString () ĊĠĠĠĠĠĠĠ Ġlast UpdateTime Ġ= Ġtime . toString () ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġongoing Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Deployment Ġconfig Ġdoes Ġnot Ġhave Ġminimum Ġavailability ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġ" False " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Deployment Ġconfig Ġhas Ġminimum Ġavailability " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġ" True " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" Available " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Progress ing Condition ( ĊĠĠĠĠĠĠĠ Ġtime : ĠInstant , ĊĠĠĠĠĠĠĠ Ġmode : ĠString Ġ= Ġ" Complete " ĊĠĠĠ Ġ): ĠDeployment Condition Ġ= Ġnew Deployment Condition Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Transition Time Ġ= Ġtime . toString () ĊĠĠĠĠĠĠĠ Ġlast UpdateTime Ġ= Ġtime . toString () ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" O ngo ing " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Replication Controller Ġ\" test - 1 \" Ġis Ġprogress ing ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreason Ġ= Ġ" Replication Controller Updated " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġ" True " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreason Ġ= Ġ" Progress Deadline Exceeded " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Replication Controller Ġ\" test - 1 \" Ġhas Ġtimed Ġout Ġprogress ing ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġ" False " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" replication Ġcontroller Ġ\" test - 1 \" Ġsuccessfully Ġrolled Ġout " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreason Ġ= Ġ" New Replication Controller Available " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġ" True " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" Progress ing " ĊĠĠĠ Ġ} Ċ } Ċ