/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 / 2 0 2 1 Ġe - voy age urs Ġtechnologies Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġai . to ck . bot . mongo Ċ Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ Ċ /** Ċ Ġ* Ċ Ġ*/ Ċ class ĠMongo User Lock Test Ġ: ĠAbstract Test () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠuserId : ĠString Ġ= Ġ" aaa " ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġcleanup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMongo User Lock . delete Lock ( userId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` take Ġlock Ġon Ġa Ġnot Ġlocked Ġuser Ġis Ġok `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Mongo User Lock . lock ( userId )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` take Ġlock Ġon Ġa Ġrecent Ġlocked Ġuser Ġis Ġko `() Ġ{ ĊĠĠĠĠĠĠĠ ĠMongo User Lock . lock ( userId ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( Mongo User Lock . lock ( userId )) ĊĊĠĠĠĠĠĠĠ ĠMongo User Lock . release Lock ( userId ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Mongo User Lock . lock ( userId )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` take Ġlock Ġon Ġa Ġold Ġlocked Ġuser Ġis Ġok `() Ġ{ ĊĠĠĠĠĠĠĠ ĠMongo User Lock . lock ( userId ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( Mongo User Lock . lock ( userId )) ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 5 1 0 0 L ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Mongo User Lock . lock ( userId )) ĊĠĠĠ Ġ} Ċ } Ċ