/** Ċ Ġ* ĠThe ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġcom . influxdb . client . kotlin Ċ Ċ import Ġassert k . assert Ċ import Ġassert k . assertions . contains Exactly Ċ import Ġassert k . assertions . endsWith Ċ import Ġassert k . assertions . has Size Ċ import Ġassert k . assertions . isEmpty Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġassert k . assertions . isInstanceOf Ċ import Ġassert k . assertions . isTrue Ċ import Ġcom . influxdb . annotations . Column Ċ import Ġcom . influxdb . client . In flux DB Client Factory Ċ import Ġcom . influxdb . client . domain . Bucket Ċ import Ġcom . influxdb . client . domain . Bucket Retention Rules Ċ import Ġcom . influxdb . client . domain . Dialect Ċ import Ġcom . influxdb . client . domain . Organization Ċ import Ġcom . influxdb . client . domain . Permission Ċ import Ġcom . influxdb . client . domain . Permission Resource Ċ import Ġcom . influxdb . client . domain . Query Ċ import Ġcom . influxdb . client . domain . Write Precision Ċ import Ġcom . influxdb . client . internal . Abstract In flux DB Client Ċ import Ġkotlinx . coroutines . channels . map Ċ import Ġkotlinx . coroutines . channels . toList Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . platform . runner . JUnit Platform Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjava . net . Connect Exception Ċ import Ġjava . time . Instant Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ author ĠJ ak ub ĠBed nar Ġ( bed nar @ github ) Ġ( 3 1 / 1 0 / 2 0 1 8 Ġ 0 7 : 1 6 ) Ċ Ġ*/ Ċ @ RunWith ( JUnit Platform :: class ) Ċ internal Ġclass ĠIT Query Kotlin Api Ġ: ĠAbstract IT In flux DB Client Kotlin () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbucket : ĠBucket ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoken : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġorganization : ĠOrganization ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġquery Kotlin Api : ĠQuery Kotlin Api ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġ` Write Ġtesting Ġdata ` (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠIn flux DB Client Factory . create ( influx Db 2 Url , Ġ" my - user ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" my - password ". toCharArray ()) ĊĊĠĠĠĠĠĠĠ Ġorganization Ġ= Ġclient . organizations Api ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Organizations (). stream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġorganization Ġ-> Ġorganization . name Ġ== Ġ" my - org " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. findFirst () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. orElse Throw Ġ{ ĠIllegalStateException () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġretention Rule Ġ= ĠBucket Retention Rules () ĊĠĠĠĠĠĠĠ Ġretention Rule . every Seconds Ġ= Ġ 3 6 0 0 ĊĊĠĠĠĠĠĠĠ Ġbucket Ġ= Ġclient . buckets Api ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Bucket ( generate Name (" h 2 o "), Ġretention Rule , Ġorganization ) ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠAdd ĠPermissions Ġto Ġread Ġand Ġwrite Ġto Ġthe ĠBucket ĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= ĠPermission Resource () ĊĠĠĠĠĠĠĠ Ġresource . org ID Ġ= Ġorganization . id ĊĠĠĠĠĠĠĠ Ġresource . type Ġ= ĠPermission Resource . TypeEnum . BUCKET S ĊĠĠĠĠĠĠĠ Ġresource . id Ġ= Ġbucket . id ĊĊĠĠĠĠĠĠĠ Ġval Ġread Bucket Ġ= ĠPermission () ĊĠĠĠĠĠĠĠ Ġread Bucket . resource Ġ= Ġresource ĊĠĠĠĠĠĠĠ Ġread Bucket . action Ġ= ĠPermission . Action Enum . READ ĊĊĠĠĠĠĠĠĠ Ġval Ġwrite Bucket Ġ= ĠPermission () ĊĠĠĠĠĠĠĠ Ġwrite Bucket . resource Ġ= Ġresource ĊĠĠĠĠĠĠĠ Ġwrite Bucket . action Ġ= ĠPermission . Action Enum . WRITE ĊĊĠĠĠĠĠĠĠ Ġval Ġauthorization Ġ= Ġclient . author izations Api ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Authorization ( organization , ĠArrays . asList ( read Bucket , Ġwrite Bucket )) ĊĊĠĠĠĠĠĠĠ Ġtoken Ġ= Ġauthorization . token ĊĊĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= ĠarrayOf (" mem , host = A , region = west Ġfree = 1 0 i Ġ 1 0 0 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mem , host = A , region = west Ġfree = 1 1 i Ġ 2 0 0 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mem , host = B , region = west Ġfree = 2 0 i Ġ 1 0 0 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mem , host = B , region = west Ġfree = 2 2 i Ġ 2 0 0 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cpu , host = A , region = west Ġusage _ system = 3 5 i , user _ usage = 4 5 i Ġ 1 0 0 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cpu , host = A , region = west Ġusage _ system = 3 8 i , user _ usage = 4 9 i Ġ 2 0 0 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cpu , host = A , hyper - threading = true , region = west Ġusage _ system = 5 5 i , user _ usage = 6 5 i Ġ 2 0 0 0 0 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ") ĊĊĠĠĠĠĠĠĠ Ġval Ġwrite Api Ġ= Ġclient . write Api ĊĠĠĠĠĠĠĠ Ġwrite Api . write Record ( bucket . name , Ġorganization . id , ĠWrite Precision . NS , Ġrecords ) ĊĊĠĠĠĠĠĠĠ Ġclient . close () ĊĊĠĠĠĠĠĠĠ Ġin flux DB Client . close () ĊĠĠĠĠĠĠĠ Ġin flux DB Client Ġ= ĠIn flux DB Client Kotlin Factory . create ( influx Db 2 Url , Ġtoken . toCharArray ()) ĊĠĠĠĠĠĠĠ Ġquery Kotlin Api Ġ= Ġin flux DB Client . getQuery Kotlin Api () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Simple Ġquery Ġmapped Ġto ĠFlux Records ` (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġflux Ġ= Ġ" from ( bucket :\" ${ bucket . name }\ ") \ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġrange ( start : Ġ 1 9 7 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 0 0 0 0 0 1 Z )\ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġfilter ( fn : Ġ( r ) Ġ=> Ġ( r [\" _ measurement \"] Ġ== Ġ\" mem \" Ġand Ġr [\" _ field \"] Ġ== Ġ\" free \" )) \ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġsum ()" ĊĊĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= Ġquery Kotlin Api . query ( flux , Ġorganization . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtables Ġ= Ġrecords . toList () ĊĠĠĠĠĠĠĠ Ġassert ( tables ). has Size ( 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Default ĠOrg ĠBucket ` (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠ Ġin flux DB Client . close () ĊĠĠĠĠĠĠĠ Ġin flux DB Client Ġ= ĠIn flux DB Client Kotlin Factory . create ( influx Db 2 Url , Ġtoken . toCharArray (), Ġ" my - org ", Ġ" my - bucket ") ĊĠĠĠĠĠĠĠ Ġquery Kotlin Api Ġ= Ġin flux DB Client . getQuery Kotlin Api () ĊĊĠĠĠĠĠĠĠ Ġval Ġflux Ġ= Ġ" from ( bucket :\" ${ bucket . name }\ ") \ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġrange ( start : Ġ 1 9 7 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 0 0 0 0 0 1 Z )\ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġfilter ( fn : Ġ( r ) Ġ=> Ġ( r [\" _ measurement \"] Ġ== Ġ\" mem \" Ġand Ġr [\" _ field \"] Ġ== Ġ\" free \" )) \ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġsum ()" ĊĊĠĠĠĠĠĠĠ Ġ// ĠString ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= Ġquery Kotlin Api . query ( flux ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtables Ġ= Ġrecords . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( tables ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠQuery ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= Ġquery Kotlin Api . query ( Query (). dialect ( Abstract In flux DB Client . DEFAULT _ DI AL ECT ). query ( flux )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtables Ġ= Ġrecords . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( tables ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠString ĠMeasurement ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= Ġquery Kotlin Api . query ( flux , ĠMem :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmemory Ġ= Ġrecords . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( memory ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠQuery ĠMeasurement ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= Ġquery Kotlin Api . query ( Query (). dialect ( Abstract In flux DB Client . DEFAULT _ DI AL ECT ). query ( flux ), ĠMem :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmemory Ġ= Ġrecords . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( memory ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠString ĠRaw ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġquery Kotlin Api . query Raw ( flux ). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines ). has Size ( 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 0 ]). isEqualTo ("# datatype , string , long , dateTime : RFC 3 3 3 9 , dateTime : RFC 3 3 3 9 , string , string , string , string , long ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 1 ]). isEqualTo ("# group , false , false , true , true , true , true , true , true , false ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 2 ]). isEqualTo ("# default ,_ result ,,,,,,,, ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 3 ]). isEqualTo (", result , table ,_ start ,_ stop ,_ field ,_ measurement , host , region ,_ value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 4 ]). endsWith (", free , mem , A , west , 2 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 5 ]). endsWith (", free , mem , B , west , 4 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 6 ]). isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠString ĠRaw ĠD ialect ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġquery Kotlin Api . query Raw ( flux , ĠAbstract In flux DB Client . DEFAULT _ DI AL ECT ). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines ). has Size ( 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 0 ]). isEqualTo ("# datatype , string , long , dateTime : RFC 3 3 3 9 , dateTime : RFC 3 3 3 9 , string , string , string , string , long ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 1 ]). isEqualTo ("# group , false , false , true , true , true , true , true , true , false ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 2 ]). isEqualTo ("# default ,_ result ,,,,,,,, ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 3 ]). isEqualTo (", result , table ,_ start ,_ stop ,_ field ,_ measurement , host , region ,_ value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 4 ]). endsWith (", free , mem , A , west , 2 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 5 ]). endsWith (", free , mem , B , west , 4 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 6 ]). isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠQuery ĠRaw ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġquery Kotlin Api . query Raw ( Query (). dialect ( Abstract In flux DB Client . DEFAULT _ DI AL ECT ). query ( flux )). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines ). has Size ( 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 0 ]). isEqualTo ("# datatype , string , long , dateTime : RFC 3 3 3 9 , dateTime : RFC 3 3 3 9 , string , string , string , string , long ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 1 ]). isEqualTo ("# group , false , false , true , true , true , true , true , true , false ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 2 ]). isEqualTo ("# default ,_ result ,,,,,,,, ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 3 ]). isEqualTo (", result , table ,_ start ,_ stop ,_ field ,_ measurement , host , region ,_ value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 4 ]). endsWith (", free , mem , A , west , 2 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 5 ]). endsWith (", free , mem , B , west , 4 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( lines [ 6 ]). isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Simple Ġquery ĠFlux Records Ġorder ` (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġflux Ġ= Ġ" from ( bucket :\" ${ bucket . name }\ ") \ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġrange ( start : Ġ 1 9 7 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 0 0 0 0 0 1 Z )\ n \ t Ġ"+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġfilter ( fn : Ġ( r ) Ġ=> Ġ( r [\" _ measurement \"] Ġ== Ġ\" mem \" Ġand Ġr [\" _ field \"] Ġ== Ġ\" free \" Ġand Ġr [\" host \"] Ġ== Ġ\" A \" )) " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġsort ( columns :[ \" value \" ]) " ĊĊĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= Ġquery Kotlin Api . query ( flux , Ġorganization . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġrecords . map Ġ{ Ġit . value Ġ}. toList () ĊĊĠĠĠĠĠĠĠ Ġassert ( values ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ Ġassert ( values ). contains Exactly ( 1 0 L , Ġ 1 1 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Mapping Ġto ĠPO JO ` (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġflux Ġ= Ġ" from ( bucket :\" ${ bucket . name }\ ") \ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġrange ( start : Ġ 1 9 7 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 0 0 0 0 0 1 Z )\ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġfilter ( fn : Ġ( r ) Ġ=> Ġ( r [\" _ measurement \"] Ġ== Ġ\" mem \" Ġand Ġr [\" _ field \"] Ġ== Ġ\" free \" Ġand Ġr [\" host \"] Ġ== Ġ\" A \" )) " ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġquery Kotlin Api . query ( flux , Ġorganization . id , ĠMem :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġmemory Ġ= Ġquery . toList () ĊĊĠĠĠĠĠĠĠ Ġassert ( memory ). has Size ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġassert ( memory [ 0 ]. host ). isEqualTo (" A ") ĊĠĠĠĠĠĠĠ Ġassert ( memory [ 0 ]. region ). isEqualTo (" west ") ĊĠĠĠĠĠĠĠ Ġassert ( memory [ 0 ]. free ). isEqualTo ( 1 0 L ) ĊĠĠĠĠĠĠĠ Ġassert ( memory [ 0 ]. time ). isEqualTo ( Instant . of Epoch Second ( 1 0 )) ĊĊĠĠĠĠĠĠĠ Ġassert ( memory [ 1 ]. host ). isEqualTo (" A ") ĊĠĠĠĠĠĠĠ Ġassert ( memory [ 1 ]. region ). isEqualTo (" west ") ĊĠĠĠĠĠĠĠ Ġassert ( memory [ 1 ]. free ). isEqualTo ( 1 1 L ) ĊĠĠĠĠĠĠĠ Ġassert ( memory [ 1 ]. time ). isEqualTo ( Instant . of Epoch Second ( 2 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Not Ġrunning Ġserver `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġclient Not Running Ġ= ĠIn flux DB Client Kotlin Factory . create (" http :// localhost : 8 0 9 9 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġflux Ġ= Ġ" from ( bucket :\" ${ bucket . name }\ ") \ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġrange ( start : Ġ 1 9 7 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 0 0 0 0 0 0 Z )" ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġclient Not Running . getQuery Kotlin Api (). query ( flux , Ġorganization . id ) ĊĊĠĠĠĠĠĠĠ Ġassert Ġ{ Ġrun Blocking Ġ{ Ġchannel . toList () Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. throw n Error Ġ{ Ġis InstanceOf ( Connect Exception :: class . java ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( channel . is Closed For Receive ). isTrue () ĊĠĠĠĠĠĠĠ Ġassert ( channel . is Closed For Send ). isTrue () ĊĊĠĠĠĠĠĠĠ Ġclient Not Running . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Map Ġto ĠString ` (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġflux Ġ= Ġ" from ( bucket :\" ${ bucket . name }\ ") \ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġrange ( start : Ġ 1 9 7 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 0 0 0 0 0 1 Z )\ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġfilter ( fn : Ġ( r ) Ġ=> Ġ( r [\" _ measurement \"] Ġ== Ġ\" mem \" Ġand Ġr [\" _ field \"] Ġ== Ġ\" free \" Ġand Ġr [\" host \"] Ġ== Ġ\" A \" )) " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġsum ()" ĊĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġquery Kotlin Api . query Raw ( flux , Ġorganization . id ). toList () ĊĠĠĠĠĠĠĠ Ġassert ( lines ). has Size ( 6 ) ĊĠĠĠĠĠĠĠ Ġassert ( lines [ 0 ]). isEqualTo ("# datatype , string , long , dateTime : RFC 3 3 3 9 , dateTime : RFC 3 3 3 9 , string , string , string , string , long ") ĊĠĠĠĠĠĠĠ Ġassert ( lines [ 1 ]). isEqualTo ("# group , false , false , true , true , true , true , true , true , false ") ĊĠĠĠĠĠĠĠ Ġassert ( lines [ 2 ]). isEqualTo ("# default ,_ result ,,,,,,,, ") ĊĠĠĠĠĠĠĠ Ġassert ( lines [ 3 ]). isEqualTo (", result , table ,_ start ,_ stop ,_ field ,_ measurement , host , region ,_ value ") ĊĠĠĠĠĠĠĠ Ġassert ( lines [ 4 ]). endsWith (", free , mem , A , west , 2 1 ") ĊĠĠĠĠĠĠĠ Ġassert ( lines [ 5 ]). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Custom Ġdialect ` (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġflux Ġ= Ġ" from ( bucket :\" ${ bucket . name }\ ") \ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġrange ( start : Ġ 1 9 7 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 0 0 0 0 0 1 Z )\ n \ t " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġfilter ( fn : Ġ( r ) Ġ=> Ġ( r [\" _ measurement \"] Ġ== Ġ\" mem \" Ġand Ġr [\" _ field \"] Ġ== Ġ\" free \" Ġand Ġr [\" host \"] Ġ== Ġ\" A \" )) " Ġ Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |> Ġsum ()" ĊĊĠĠĠĠĠĠĠ Ġval Ġdialect Ġ= ĠD ialect (). header ( false ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġquery Kotlin Api . query Raw ( flux , Ġdialect , Ġorganization . id ). toList () ĊĊĠĠĠĠĠĠĠ Ġassert ( lines ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ Ġassert ( lines [ 0 ]). endsWith (", free , mem , A , west , 2 1 ") ĊĠĠĠĠĠĠĠ Ġassert ( lines [ 1 ]). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMem Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġhost : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġregion : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Column ( name Ġ= Ġ"_ value ") ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġfree : ĠLong ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ@ Column ( name Ġ= Ġ"_ time ") ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġtime : ĠInstant ? Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }