/* Ċ Ġ* Ġ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 h ives erde . integration test . docker . SHARED _ DIR Ċ import Ġcom . amazon . ion h ives erde . integration test . mkdir Ċ import Ġcom . amazon . ion h ives erde . integration test . new Binary Writer From Path Ċ import Ġcom . amazon . ion h ives erde . integration test . rm Ċ import Ġcom . amazon . ion h ives erde . integration test . write Values Ċ import Ġjunit params . JUnit Params Runner Ċ import Ġorg . apache . hadoop . map red . TextInput Format Ċ import Ġorg . apache . hive . service . cli . Hive SQLException Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjava . io . FileWriter Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertNull Ċ import Ġkotlin . test . assertTrue Ċ Ċ @ RunWith ( JUnit Params Runner :: class ) Ċ class ĠIgnore Malformed 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 Ġ= Ġ" Ignore Malformed Test " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTEST _ DIR Ġ= Ġ"$ SHARED _ DIR / input /$ TABLE _ NAME /" ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠVALID Ġ= Ġ"{ Ġfield : Ġ 1 Ġ}" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINVALID Ġ= Ġ"{ Ġ 1 : Ġnot Ġvalid Ġion " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠM IX ED Ġ= Ġ"{ Ġfield : Ġ 2 Ġ} { Ġ 1 : Ġnot Ġvalid Ġion " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠI ON _ LINES Ġ= Ġ"{ Ġfield : Ġ 1 Ġ}\ n { Ġ 1 : Ġnot Ġvalid Ġion \ n { Ġfield : Ġ 2 Ġ}" Ġ// Json Lines Ġstyle ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmkdir ( TEST _ DIR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmkdir ("$ TEST _ DIR / separated ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmkdir ("$ TEST _ DIR / mixed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmkdir ("$ TEST _ DIR / ion lines ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Binary Writer From Path ("$ TEST _ DIR / separated / valid . 1 0 n "). use Ġ{ Ġit . write Values ( VALID ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Writer ("$ TEST _ DIR / separated / invalid . txt "). use Ġ{ Ġit . write ( INVALID ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Writer ("$ TEST _ DIR / mixed / mixed . txt "). use Ġ{ Ġit . write ( MIX ED ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Writer ("$ TEST _ DIR / ion lines / ion lines . txt "). use Ġ{ Ġit . write ( ION _ LINES ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrm ( TEST _ DIR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġignore Malformed : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Format Class : ĠK Class < *> Ġ= Ġcom . amazon . ion h ives erde . formats . Ion Input Format :: class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġh ive (). create External Table ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtableName Ġ= ĠTABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= Ġmap Of (" field " Ġto Ġ" INT "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġ"/ data / input /$ TABLE _ NAME /$ location ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserde Properties Ġ= Ġmap Of (" ion . ignore _ mal formed " Ġto Ġignore Malformed . toString ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Format Class Ġ= Ġinput Format Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignore Malformed () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Table ( ignore Malformed Ġ= Ġtrue , Ġlocation Ġ= Ġ" separated ") ĊĊĠĠĠĠĠĠĠ Ġh ive (). query (" SELECT Ġfield ĠFROM Ġ$ TABLE _ NAME ") Ġ{ Ġrs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( rs . next ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġrs . getInt ( 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( rs . next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignore Malformed Mixed () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Table ( ignore Malformed Ġ= Ġtrue , Ġlocation Ġ= Ġ" mixed ") ĊĊĠĠĠĠĠĠĠ Ġh ive (). query (" SELECT Ġfield ĠFROM Ġ$ TABLE _ NAME ") Ġ{ Ġrs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( rs . next ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġrs . getInt ( 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( rs . next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignore Malformed Ion Lines () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Table ( ignore Malformed Ġ= Ġtrue , Ġlocation Ġ= Ġ" ion lines ", Ġinput Format Class Ġ= ĠText Input Format :: class ) ĊĊĠĠĠĠĠĠĠ Ġh ive (). query (" SELECT Ġfield ĠFROM Ġ$ TABLE _ NAME ") Ġ{ Ġrs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( rs . next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġrs . getInt ( 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġskipped Ġline ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( rs . next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( rs . getObject ( 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( rs . next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġrs . getInt ( 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( rs . next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠHive SQLException :: class ) ĊĠĠĠ Ġfun Ġdo Not Ignore Malformed Mixed () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Table ( ignore Malformed Ġ= Ġfalse , Ġlocation Ġ= Ġ" mixed ") ĊĊĠĠĠĠĠĠĠ Ġh ive (). query (" SELECT Ġfield ĠFROM Ġ$ TABLE _ NAME ") Ġ{ Ġwhile ( it . next ()) Ġ{} Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠHive SQLException :: class ) ĊĠĠĠ Ġfun Ġdo Not Ignore Malformed () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Table ( ignore Malformed Ġ= Ġfalse , Ġlocation Ġ= Ġ" separated ") ĊĊĠĠĠĠĠĠĠ Ġh ive (). query (" SELECT Ġfield ĠFROM Ġ$ TABLE _ NAME ") Ġ{ Ġwhile ( it . next ()) Ġ{} Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠHive SQLException :: class ) ĊĠĠĠ Ġfun Ġdo Not Ignore Malformed Ion Lines () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Table ( ignore Malformed Ġ= Ġfalse , Ġlocation Ġ= Ġ" ion lines ", Ġinput Format Class Ġ= ĠText Input Format :: class ) ĊĊĠĠĠĠĠĠĠ Ġh ive (). query (" SELECT Ġfield ĠFROM Ġ$ TABLE _ NAME ") Ġ{ Ġwhile ( it . next ()) Ġ{} Ġ} ĊĠĠĠ Ġ} Ċ } Ċ