package Ġcom . hex agon kt Ċ Ċ import Ġcom . hex agon kt . helpers . system Setting Ċ import Ġcom . hex agon kt . serialization . convertTo Map Ċ import Ġcom . hex agon kt . serialization . serialize Ċ import Ġcom . hex agon kt . server .* Ċ import Ġcom . hex agon kt . server . jetty . Jet ty Servlet Engine Ċ import Ġcom . hex agon kt . server . servlet . Servlet Server Ċ import Ġcom . hex agon kt . server . under tow . Under tow Engine Ċ import Ġcom . hex agon kt . settings . Settings Manager . settings Ċ import Ġcom . hex agon kt . templates . pe bble . P eb ble Engine Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory . getLogger Ċ Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Thread Local Random Ċ import Ġjavax . servlet . annotation . Web Listener Ċ import Ġjava . net . Inet Address . get ByName Ġas Ġaddress Ċ Ċ // ĠDATA ĠCL AS SES Ċ internal Ġdata Ġclass ĠMessage ( val Ġmessage : ĠString ) Ċ internal Ġdata Ġclass ĠFort une ( val Ġ_ id : ĠInt , Ġval Ġmessage : ĠString ) Ċ internal Ġdata Ġclass ĠWorld ( val Ġ_ id : ĠInt , Ġval Ġid : ĠInt , Ġval Ġrandom Number : ĠInt ) Ċ Ċ // ĠCONSTANT S Ċ private Ġconst Ġval ĠTEXT _ MESSAGE : ĠString Ġ= Ġ" Hello , ĠWorld !" Ċ private Ġconst Ġval ĠCONTENT _ TYPE _ JSON Ġ= Ġ" application / json " Ċ private Ġconst Ġval ĠQU ER IES _ PARAM Ġ= Ġ" queries " Ċ Ċ private Ġval ĠLOGGER : ĠLogger Ġ= Ġget Logger (" BENCH MARK _ LOGGER ") Ċ private Ġval Ġdefault Locale : ĠLocale Ġ= ĠLocale . getDefault () Ċ Ċ // ĠUT IL ITIES Ċ internal Ġfun Ġrandom World () Ġ= ĠThread Local Random . current (). nextInt ( WORLD _ ROWS ) Ġ+ Ġ 1 Ċ Ċ private Ġfun ĠCall . return World s ( world s List : ĠList < World >) Ġ{ ĊĠĠĠ Ġval Ġworld s Ġ= Ġworld s List . map Ġ{ Ġit . convertTo Map () Ġ- Ġ"_ id " Ġ} ĊĠĠĠ Ġok ( world s . serialize (), ĠCONTENT _ TYPE _ JSON ) Ċ } Ċ Ċ private Ġfun ĠCall . get World s Count () Ġ= Ġ( request [ QU ER IES _ PARAM ]?. toInt OrNull () Ġ?: Ġ 1 ). let Ġ{ ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġit Ġ< Ġ 1 Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠ Ġit Ġ> Ġ 5 0 0 Ġ-> Ġ 5 0 0 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠHAND L ERS Ċ private Ġfun ĠCall . list Fort unes ( store : ĠStore ) Ġ{ ĊĠĠĠ Ġval Ġfort unes Ġ= Ġstore . findAll Fort unes () Ġ+ ĠFort une ( 0 , Ġ" Additional Ġfort une Ġadded Ġat Ġrequest Ġtime .") ĊĠĠĠ Ġval Ġsorted Fort unes Ġ= Ġfort unes . sorted By Ġ{ Ġit . message Ġ} ĊĠĠĠ Ġresponse . contentType Ġ= Ġ" text / html ; charset = utf - 8 " ĊĠĠĠ Ġtemplate ( P eb ble Engine , Ġ" fortun es . html ", Ġdefault Locale , Ġ" fortun es " Ġto Ġsorted Fort unes ) Ċ } Ċ Ċ private Ġfun ĠCall . db Query ( store : ĠStore ) Ġ{ ĊĠĠĠ Ġval Ġworld Ġ= Ġstore . find World s ( 1 ). first (). convertTo Map () Ġ- Ġ"_ id " ĊĠĠĠ Ġok ( world . serialize (), ĠCONTENT _ TYPE _ JSON ) Ċ } Ċ Ċ private Ġfun ĠCall . get World s ( store : ĠStore ) Ġ{ ĊĠĠĠ Ġreturn World s ( store . find World s ( get World s Count ())) Ċ } Ċ Ċ private Ġfun ĠCall . update World s ( store : ĠStore ) Ġ{ ĊĠĠĠ Ġreturn World s ( store . replace World s ( get World s Count ())) Ċ } Ċ Ċ // ĠCONT ROLL ER Ċ private Ġfun Ġrouter (): ĠRouter Ġ= Ġrouter Ġ{ ĊĠĠĠ Ġval Ġstore Ġ= Ġbenchmark Store Ġ?: Ġerror (" Invalid ĠStore ") ĊĊĠĠĠ Ġbefore Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse . add Header (" Server ", Ġ" Servlet / 3 . 1 ") ĊĠĠĠĠĠĠĠ Ġresponse . add Header (" Transfer - Encoding ", Ġ" chunk ed ") ĊĠĠĠĠĠĠĠ Ġresponse . add Header (" Date ", Ġhttp Date ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġget ("/ plaintext ") Ġ{ Ġok ( TEXT _ MESSAGE , Ġ" text / plain ") Ġ} ĊĠĠĠ Ġget ("/ json ") Ġ{ Ġok ( Message ( TEXT _ MESSAGE ). serialize (), ĠCONTENT _ TYPE _ JSON ) Ġ} ĊĠĠĠ Ġget ("/ fortun es ") Ġ{ Ġlist Fort unes ( store ) Ġ} ĊĠĠĠ Ġget ("/ db ") Ġ{ Ġdb Query ( store ) Ġ} ĊĠĠĠ Ġget ("/ query ") Ġ{ Ġget World s ( store ) Ġ} ĊĠĠĠ Ġget ("/ update ") Ġ{ Ġupdate World s ( store ) Ġ} Ċ } Ċ Ċ @ Web Listener Ġclass ĠWeb Ġ: ĠServlet Server Ġ() Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( benchmark Store Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbenchmark Store Ġ= Ġcreate Store ( system Setting (" DB STORE ", Ġ" mongodb ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Router () Ġ= Ġrouter () Ċ } Ċ Ċ internal Ġvar Ġbenchmark Store : ĠStore ? Ġ= Ġnull Ċ internal Ġvar Ġbenchmark Server : ĠServer ? Ġ= Ġnull Ċ Ċ internal Ġfun Ġcreate Engine ( engine : ĠString ): ĠServer Engine Ġ= Ġwhen Ġ( engine ) Ġ{ ĊĠĠĠ Ġ" jetty " Ġ-> ĠJet ty Servlet Engine () ĊĠĠĠ Ġ" under tow " Ġ-> ĠUnder tow Engine () ĊĠĠĠ Ġelse Ġ-> Ġerror (" Unsupported Ġserver Ġengine ") Ċ } Ċ Ċ fun Ġmain ( var arg Ġargs : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġengine Ġ= Ġcreate Engine ( system Setting (" WEB ENGINE ", Ġ" jetty ")) ĊĠĠĠ Ġbenchmark Store Ġ= Ġcreate Store ( system Setting (" DB STORE ", Ġ" mongodb ")) ĊĊĠĠĠ ĠLOGGER . info (""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBenchmark Ġset Ġup : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠEngine : Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠStore : Ġ{} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠ Ġengine . java Class . name , ĊĠĠĠĠĠĠĠ Ġbenchmark Store ?. java Class ?. name ) ĊĊĠĠĠ Ġbenchmark Server Ġ= ĠServer ( engine , Ġsettings , Ġrouter ()). apply Ġ{ Ġrun () Ġ} Ċ } Ċ