/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "). Ċ Ġ* ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠLicense Ġis Ġlocated Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġor Ġin Ġthe Ġ" license " Ġfile Ġaccompanying Ġthis Ġfile . ĠThis Ġfile Ġ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 Ġcom . amazon . ion h ives erde . integration test . tests Ċ Ċ import Ġcom . amazon . ion . Ion Data gram Ċ import Ġcom . amazon . ion . Ion Struct Ċ import Ġcom . amazon . ion . Ion Timestamp Ċ import Ġcom . amazon . ion h ives erde . integration test .* Ċ import Ġcom . amazon . ion h ives erde . integration test . docker . SHARED _ DIR Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠTimestamp Serialization Offset Test Ġ: Ġcom . amazon . ion h ives erde . integration test . Base () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: Ġcom . amazon . ion h ives erde . integration test . Test Lifecycle Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTABLE _ NAME Ġ= Ġ" Timestamp Serialization Offset Test " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTEST _ DIR Ġ= Ġ"$ SHARED _ DIR / input /$ TABLE _ NAME /" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINPUT _ TIMESTAMP S Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfield : Ġ 2 0 1 8 - 0 1 - 0 1 T 1 0 : 1 0 Z Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfield : Ġ 2 0 1 8 - 0 1 - 0 1 T 1 0 : 1 0 - 0 0 : 0 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfield : Ġ 2 0 1 8 - 0 1 - 0 1 T 1 0 : 1 0 + 0 0 : 0 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfield : Ġ 2 0 1 8 - 0 1 - 0 1 T 1 0 : 1 0 - 0 1 : 0 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfield : Ġ 2 0 1 8 - 0 1 - 0 1 T 1 0 : 1 0 + 0 1 : 0 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfield : Ġ 2 0 1 8 - 0 1 - 0 1 T 1 0 : 1 0 + 1 2 : 3 4 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfield : Ġ 2 0 1 8 - 0 1 - 0 1 T 1 0 : 1 0 - 1 2 : 3 4 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfield : Ġ 2 0 1 8 - 0 1 - 0 1 T 1 0 : 1 0 - 2 3 : 5 9 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfield : Ġ 2 0 1 8 - 0 1 - 0 1 T 1 0 : 1 0 + 2 3 : 5 9 Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġserde Properties Ġ= Ġmap Of (" ion . timestamp . serialization _ offset " Ġto Ġ"- 0 8 : 0 0 ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmkdir ( TEST _ DIR ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Binary Writer From Path ("$ TEST _ DIR / timestamps . 1 0 n "). use Ġ{ Ġit . write Values ( INPUT _ TIMESTAMP S ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrm ( TEST _ DIR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Table () Ġ{ ĊĠĠĠĠĠĠĠ Ġh ive (). create External Table ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" field " Ġto Ġ" TIMESTAMP "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ data / input /$ TABLE _ NAME /", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserde Properties ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠIon Data gram . to Timestamp List () Ġ= Ġthis . map Ġ{ Ġit Ġas ĠIon Struct Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . first () Ġas ĠIon Timestamp Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . timestamp Value () Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtimestamp Serialized To Configured Offset () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Table () ĊĊĠĠĠĠĠĠĠ Ġval Ġraw Bytes Ġ= Ġcom . amazon . ion h ives erde . integration test . Base . hive (). query ToFile And Read (" SELECT Ġ* ĠFROM Ġ$ TABLE _ NAME ", Ġserde Properties ) ĊĠĠĠĠĠĠĠ Ġval Ġdata gram Ġ= ĠDOM _ FACTORY . loader . load ( raw Bytes ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Offset Ġ= Ġ- 8 Ġ* Ġ 6 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Timestamp s Ġ= ĠDOM _ FACTORY . loader . load ( INPUT _ TIMESTAMP S ). to Timestamp List () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( actual Timestamp s . size , Ġdata gram . size ) ĊĠĠĠĠĠĠĠ Ġdata gram . to Timestamp List (). forEach Indexed Ġ{ Ġindex , Ġtimestamp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Offset , Ġtimestamp . local Offset ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Timestamp Ġ= Ġactual Timestamp s [ index ]. with Local Offset ( expected Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġassert ErrorMessage Ġ= Ġ""" | Expected : Ġ$ expected Timestamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Actual : ĠĠ Ġ$ timestamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| """. trim Margin () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Timestamp . millis , Ġtimestamp . millis , Ġmessage Ġ= Ġassert ErrorMessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ