package Ġorg . pen ella . store Ċ Ċ import Ġorg . junit . Test Ċ import Ġorg . pen ella . structures . triples . Triple Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġkotlin . test . assertEquals Ċ Ċ /** Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* ĠCreated Ġby Ġal is le Ġon Ġ 1 0 / 1 8 / 1 6 . Ċ Ġ*/ Ċ abstract Ġclass ĠStore Test Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġcreate Store () Ġ: ĠI Store ĊĠĠĠ Ġabstract Ġfun Ġstore Type () Ġ: Ġ ĠString ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ: ĠLogger Ġ= ĠLoggerFactory . getLogger ( Store Test :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest String Insert () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ Ġ= Ġcreate Store () ĊĠĠĠĠĠĠĠ Ġval Ġhash Ġ= Ġstore . add (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" Hello ĠWorld ", Ġstore . get ( hash )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Triple Insert () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= Ġcreate Store () ĊĠĠĠĠĠĠĠ Ġval Ġtriple Ġ= ĠTrip le (" Subject ", Ġ" Property ", Ġ" Object ") ĊĠĠĠĠĠĠĠ Ġstore . add ( triple ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( triple . subject , Ġstore . get ( triple . hash Triple . hash Subject )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( triple . property , Ġstore . get ( triple . hash Triple . hash Property )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( triple . obj , Ġstore . get ( triple . hash Triple . hash Obj )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Triple () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= Ġcreate Store () ĊĠĠĠĠĠĠĠ Ġval Ġtriple Ġ= ĠTrip le (" Subject ", Ġ" Property ", Ġ" Object ") ĊĠĠĠĠĠĠĠ Ġstore . add ( triple ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Triple Ġ= Ġstore . get ( triple . hash Triple ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( triple , Ġnew Triple ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Triple Insert Performance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġvar Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġvar Ġstore Ġ= Ġcreate Store () ĊĊĠĠĠĠĠĠĠ Ġlog . debug (" Starting ĠString ĠInsert ĠTest ") ĊĠĠĠĠĠĠĠ Ġfor ( x Ġ Ġin Ġ 1 L .. max ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġ" Test Ġ" Ġ+ Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore . add ( Triple (" Subject " Ġ+ Ġstring , Ġ" Property ", Ġ" Object ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġfinish Ġ= Ġ( System . currentTimeMillis () Ġ- Ġstart ) ĊĠĠĠĠĠĠĠ Ġvar Ġaverage Ġ: ĠDouble Ġ= Ġmax Ġ/ Ġ( finish Ġ/ Ġ 1 0 0 0 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġlog . warn (" Finished Ġin Ġ" Ġ+ Ġfinish Ġ/ Ġ 1 0 0 0 Ġ+ Ġ" Ġsecs ") ĊĠĠĠĠĠĠĠ Ġlog . warn (" Average Ġinsert Ġtime : Ġ" Ġ+ Ġaverage Ġ+ Ġ" Ġre cs Ġ/ Ġsec ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest String Insert Performance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġ 1 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġvar Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġvar Ġstore Ġ= Ġcreate Store () ĊĊĠĠĠĠĠĠĠ Ġlog . debug (" Starting ĠString ĠInsert ĠTest ") ĊĠĠĠĠĠĠĠ Ġfor ( x Ġ Ġin Ġ 1 L .. max ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġ" Test Ġ" Ġ+ Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore . add ( string ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġfinish Ġ= Ġ( System . currentTimeMillis () Ġ- Ġstart ) ĊĠĠĠĠĠĠĠ Ġvar Ġaverage Ġ: ĠDouble Ġ= Ġmax Ġ/ Ġ( finish Ġ/ Ġ 1 0 0 0 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġlog . warn (" Finished Ġin Ġ" Ġ+ Ġfinish Ġ/ Ġ 1 0 0 0 Ġ+ Ġ" Ġsecs ") ĊĠĠĠĠĠĠĠ Ġlog . warn (" Average Ġinsert Ġtime : Ġ" Ġ+ Ġaverage Ġ+ Ġ" Ġre cs Ġ/ Ġsec ") ĊĊĠĠĠĠĠĠĠ Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġlog . warn (" Retrie ving Ġ" Ġ+ Ġmax Ġ+ Ġ" Ġinstances ") ĊĠĠĠĠĠĠĠ Ġfor ( Ġx Ġin Ġ 1 L .. max ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġ" Test Ġ" Ġ+ Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Ġ= Ġstore . generate Hash ( string ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold String Ġ= Ġstore . get ( hash ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( string , Ġold String ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfinish Ġ= Ġ( System . currentTimeMillis () Ġ- Ġstart ) ĊĠĠĠĠĠĠĠ Ġaverage Ġ= Ġmax Ġ/ Ġ( finish Ġ/ Ġ 1 0 0 0 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġlog . warn (" Finished Ġin Ġ" Ġ+ Ġfinish Ġ/ Ġ 1 0 0 0 Ġ+ Ġ" Ġsecs ") ĊĠĠĠĠĠĠĠ Ġlog . warn (" Average ĠFetch Ġtime : Ġ" Ġ+ Ġaverage Ġ+ Ġ" Ġre cs Ġ/ Ġsec ") ĊĊĊĠĠĠ Ġ} Ċ }