import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Timeout Ċ import Ġorg . apache . hadoop . conf . Configuration Ċ import Ġorg . apache . hadoop . hbase . H Base Configuration Ċ import Ġorg . apache . hadoop . hbase . H Constants Ċ import Ġorg . apache . hadoop . hbase . TableName Ċ import Ġorg . apache . hadoop . hbase . client . Connection Ċ import Ġorg . apache . hadoop . hbase . client . ConnectionFactory Ċ import Ġuk . gov . d wp . data works . logging . Data works Logger Ċ import Ġkotlin . time . Experimental Time Ċ import Ġkotlin . time . minutes Ċ import Ġkotlin . time . seconds Ċ Ċ @ Experimental Time Ċ class ĠH base Table Provision er IntegrationTest Ġ: ĠString Spec () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Collections Ġare Ġprovision ed Ġas Ġtables Ġwith Ġexpected Ġregion Ġsplits Ġinto ĠH Base " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify H base () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġregion Replication Ġ= Ġ 3 ĊĠĠĠ Ġprivate Ġval Ġexpected Tables To Regions Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" accepted _ data : address " Ġto Ġ 1 Ġ* Ġregion Replication , ĊĠĠĠĠĠĠĠ Ġ" accepted _ data : children Circ um stances " Ġto Ġ 1 Ġ* Ġregion Replication , ĊĠĠĠĠĠĠĠ Ġ" core : assessment Period " Ġto Ġ 2 Ġ* Ġregion Replication , ĊĠĠĠĠĠĠĠ Ġ" core : to Do " Ġto Ġ 2 Ġ* Ġregion Replication , ĊĠĠĠĠĠĠĠ Ġ" crypto : encrypted Data " Ġto Ġ 3 0 Ġ* Ġregion Replication , ĊĠĠĠĠĠĠĠ Ġ" hy phen ated _ database : collection 1 " Ġto Ġ 2 Ġ* Ġregion Replication , ĊĠĠĠĠĠĠĠ Ġ" database : collection 2 " Ġto Ġ 1 0 Ġ* Ġregion Replication , ĊĠĠĠĠĠĠĠ Ġ" crypto : encrypted Data _ un encrypted " Ġto Ġ 2 0 Ġ* Ġregion Replication ĊĠĠĠ Ġ). to Sorted Map () ĊĊĠĠĠ Ġprivate Ġfun Ġh base Connection (): ĠConnection Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhost Ġ= ĠSystem . getenv (" H BASE _ Z OO KE E PER _ QU OR UM ") Ġ?: Ġ" localhost " ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠConfiguration (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( H Constants . Z OO KE E PER _ Z NODE _ PARENT , Ġ"/ hbase ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( H Constants . Z OO KE E PER _ QU OR UM , Ġhost ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Int (" hbase . zookeeper . port ", Ġ 2 1 8 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠConnection Factory . create Connection ( H Base Configuration . create ( config )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Tables (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtables Ġ= Ġh base Connection (). admin . list Table Names () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( TableName :: getName AsString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted () ĊĠĠĠĠĠĠĠ Ġlogger . info (" ... hbase Ġtables ", Ġ" number " Ġto Ġ"${ tables . size }", Ġ" all _ tables " Ġto Ġ"$ tables ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtables ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġverify H base () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwait So Far Secs Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġlong Interval Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġexpected Tables Sorted Ġ= Ġexpected Tables To Regions . keys . sorted () ĊĠĠĠĠĠĠĠ Ġlogger . info (" Waiting Ġfor Ġ${ expected Tables Sorted . size } Ġh base Ġtables Ġto Ġappear Ġwith Ġgiven Ġregions ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" expected _ tables _ sorted " Ġto Ġ"$ expected Tables Sorted ") ĊĊĠĠĠĠĠĠĠ Ġval Ġfound Tables To Regions Ġ= Ġmutable Map Of < String , ĠInt >() ĊĊĠĠĠĠĠĠĠ Ġh base Connection (). use Ġ{ Ġh base Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Timeout ( 1 0 . minutes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound Tables Sorted Ġ= Ġtest Tables () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Waiting Ġfor Ġ${ expected Tables Sorted . size } Ġh base Ġtables Ġto Ġappear ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" found _ tables _ so _ far " Ġto Ġ"${ found Tables Sorted . size }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" total _ seconds _ elapsed " Ġto Ġ"$ wait So Far Secs ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( long Interval . seconds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwait So Far Secs Ġ+= Ġlong Interval ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( expected Tables Sorted . toSet () Ġ!= Ġfound Tables Sorted . toSet ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Tables (). forEach Ġ{ ĠtableName Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregions With Replication Ġ= Ġh base . admin . getTable Regions ( TableName . valueOf ( tableName )). size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Found Ġtable ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" table _ name " Ġto ĠtableName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" regions _ with _ replication " Ġto Ġ"$ regions With Replication ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Tables To Regions [ tableName ] Ġ= Ġregions With Replication ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfound Tables To Regions . to Sorted Map () ĠshouldBe Ġexpected Tables To Regions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= ĠData works Logger . getLogger ( H base Table Provision er IntegrationTest :: class . toString ()) ĊĠĠĠ Ġ} Ċ } Ċ