/* Ċ Ġ* ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 . Ċ Ġ*/ Ċ Ċ package Ġsoftware . amazon . smithy . kotlin . codegen . rendering . wait ers Ċ Ċ import Ġio . kot est . matchers . string . should Contain Ċ import Ġio . kot est . matchers . string . should Contain Only Once Ċ import Ġsoftware . amazon . smithy . codegen . core . Symbol Provider Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . Kotlin Code gen Plugin Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . Kotlin Settings Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . core . Code gen Context Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . core . Kotlin Writer Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . integration . Kotlin Integration Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . load Model From Resource Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . rendering . protocol . Protocol Generator Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . test . Test Model Default Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . test . create Symbol Provider Ċ import Ġsoftware . amazon . smithy . kotlin . codegen . test . format For Test Ċ import Ġsoftware . amazon . smithy . model . Model Ċ import Ġsoftware . amazon . smithy . model . shapes . Shape Id Ċ import Ġkotlin . test . Test Ċ Ċ class ĠWait er Generator Test Ġ{ ĊĠĠĠ Ġval Ġgenerated Ġ= Ġgenerate Service (" wait er - tests . smithy ") ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Default Del ays () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstrategy Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelay Options Ġ= ĠExp onent ial Backoff With J itter Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Delay Ġ= Ġ 2 _ 0 0 0 . milliseconds , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor Ġ= Ġ 1 . 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj itter Ġ= Ġ 1 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Backoff Ġ= Ġ 1 2 0 _ 0 0 0 . milliseconds , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelay Ġ= ĠExp onent ial Backoff With J itter ( delay Options ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwait er Options Ġ= ĠStandard Retry Strategy Options ( max Time Ġ= Ġ 3 0 0 . seconds , Ġmax Attempts Ġ= Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard Retry Strategy ( wait er Options , ĠIn finite Token Bucket , Ġdelay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . format For Test () ĊĠĠĠĠĠĠĠ Ġgenerated . should Contain ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Custom Del ays () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstrategy Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelay Options Ġ= ĠExp onent ial Backoff With J itter Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Delay Ġ= Ġ 5 _ 0 0 0 . milliseconds , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor Ġ= Ġ 1 . 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj itter Ġ= Ġ 1 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Backoff Ġ= Ġ 3 0 _ 0 0 0 . milliseconds , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelay Ġ= ĠExp onent ial Backoff With J itter ( delay Options ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwait er Options Ġ= ĠStandard Retry Strategy Options ( max Time Ġ= Ġ 3 0 0 . seconds , Ġmax Attempts Ġ= Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard Retry Strategy ( wait er Options , ĠIn finite Token Bucket , Ġdelay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . format For Test () ĊĠĠĠĠĠĠĠ Ġgenerated . should Contain Only Once ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Service ( model ResourceName : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġload Model From Resource ( model ResourceName ) ĊĠĠĠĠĠĠĠ Ġval Ġprovider : ĠSymbol Provider Ġ= ĠKotlin Code gen Plugin . create Symbol Provider ( model ) ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġmodel . get Shape ( Shape Id . from ( Test Model Default . SERVICE _ SHAPE _ ID )). get (). as Service Shape (). get () ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠKotlin Settings ( service . id , ĠKotlin Settings . Package Settings ( Test Model Default . NAMESPACE , ĠTest Model Default . MODEL _ VERSION ), Ġsdk Id Ġ= Ġservice . id . name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= Ġobject Ġ: ĠCode gen Context Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġmodel : ĠModel Ġ= Ġmodel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġsymbol Provider : ĠSymbol Provider Ġ= Ġprovider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġsettings : ĠKotlin Settings Ġ= Ġsettings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprotocol Generator : ĠProtocol Generator ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġintegr ations : ĠList < Kotlin Integration > Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠKotlin Writer ( Test Model Default . NAMESPACE ) ĊĠĠĠĠĠĠĠ Ġctx . all Wait ers (). forEach ( writer :: render Wait er ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwriter . toString () ĊĠĠĠ Ġ} Ċ } Ċ