package Ġme . v icky ch ij w ani . spect re . testing Ċ Ċ import Ġio . reactivex . Single Ċ import Ġme . v icky ch ij w ani . spect re . network . Production HttpClient Factory Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . internal . tls . Ssl Client Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . mock . Mock Ret rofit Ċ import Ġretrofit 2 . mock . Network Behavior Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ object ĠHelpers Ġ{ ĊĊĠĠĠ Ġval ĠLOCAL HOST _ SOCKET _ FACTORY Ġ= ĠS sl Client . localhost (). socket Factory !! ĊĠĠĠ Ġprivate Ġval ĠLOCAL HOST _ TR UST _ MANAGER Ġ= ĠS sl Client . localhost (). trust Manager !! ĊĊĠĠĠ Ġ// Ġhelpers ĊĠĠĠ Ġval Ġprod HttpClient : ĠOk HttpClient ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= ĠProduction HttpClient Factory (). create ( null ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogging Interceptor Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogging Interceptor . level Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠhttpClient . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ssl Socket Factory ( LOCAL HOST _ SOCKET _ FACTORY , ĠLOCAL HOST _ TR UST _ MANAGER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( logging Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġideal Network Behavior : ĠNetwork Behavior ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Network Behavior ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĊĠĠĠ Ġval Ġfailing Network Behaviour : ĠNetwork Behavior ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Network Behavior ( 0 , Ġ 0 , Ġ 1 0 0 , Ġ 0 ) ĊĊĠĠĠ Ġfun Ġget Mock Ret rofit ( ret rofit : ĠRet rofit , Ġnetwork Behavior : ĠNetwork Behavior ): ĠMock Ret rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMock Ret rofit . Builder ( ret rofit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. network Behavior ( network Behavior ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġexecute ( single : ĠSingle < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsingle . blocking Get () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġprivate Ġmethods ĊĠĠĠ Ġprivate Ġfun Ġget Network Behavior ( delay M sec : ĠInt , Ġdelay Variance : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Percent : ĠInt , Ġerror Percent : ĠInt ): ĠNetwork Behavior Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNetwork Behavior . create (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Delay ( delay M sec . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Variance Percent ( delay Variance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ" failure " Ġmeans Ġnetwork Ġlayer Ġfailure ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Failure Percent ( failure Percent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ" error " Ġmeans ĠHTTP Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setError Percent ( error Percent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ