/* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* Ċ Ġ* ĠThe ĠOpen Search ĠContributors Ġrequire Ġcontributions Ġmade Ġto Ċ Ġ* Ġthis Ġfile Ġbe Ġlicensed Ġunder Ġthe ĠApache - 2 . 0 Ġlicense Ġor Ġa Ċ Ġ* Ġcompatible Ġopen Ġsource Ġlicense . Ċ Ġ* Ċ Ġ* ĠMod ifications ĠCopyright ĠOpen Search ĠContributors . ĠSee Ċ Ġ* ĠGitHub Ġhistory Ġfor Ġdetails . Ċ Ġ*/ Ċ Ċ /* Ċ Ġ* ĠĠ ĠCopyright Ġ 2 0 1 9 Ġ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 Ġorg . opense arch . alert ing . util Ċ Ċ import Ġorg . opense arch . alert ing . AN OM AL Y _ RESULT _ INDEX Ċ import Ġorg . opense arch . alert ing . core . model . Input Ċ import Ġorg . opense arch . alert ing . core . model . Search Input Ċ import Ġorg . opense arch . alert ing . random Query Level Monitor Ċ import Ġorg . opense arch . common . io . stream . Stream Output Ċ import Ġorg . opense arch . common . x content . To X Content Ċ import Ġorg . opense arch . common . x content . X Content Builder Ċ import Ġorg . opense arch . commons . auth user . User Ċ import Ġorg . opense arch . index . query . Query Builders Ċ import Ġorg . opense arch . search . builder . Search Source Builder Ċ import Ġorg . opense arch . test . Open Search TestCase Ċ Ċ class ĠAn omaly Detection Utils Tests Ġ: ĠOpen Search TestCase () Ġ{ ĊĊĠĠĠ Ġfun Ġ` test Ġis Ġad Ġmonitor `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmonitor Ġ= Ġrandom Query Level Monitor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinputs Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( AN OM AL Y _ RESULT _ INDEX ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Source Builder (). query ( Query Builders . match All Query ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( is AD Monitor ( monitor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġnot Ġad Ġmonitor Ġif Ġmonitor Ġhave Ġno Ġinputs `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġmonitor Ġ= Ġrandom Query Level Monitor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinputs Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( is AD Monitor ( monitor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġnot Ġad Ġmonitor Ġif Ġmonitor Ġinput Ġis Ġnot Ġsearch Ġinput `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmonitor Ġ= Ġrandom Query Level Monitor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinputs Ġ= ĠlistOf ( object Ġ: ĠInput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġname (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠwriteTo ( out : ĠStream Output ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto X Content ( builder : ĠX Content Builder ?, Ġparams : ĠTo X Content . Params ?): ĠX Content Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( is AD Monitor ( monitor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġnot Ġad Ġmonitor Ġif Ġmonitor Ġinput Ġhas Ġmore Ġthan Ġ 1 Ġindices `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmonitor Ġ= Ġrandom Query Level Monitor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinputs Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Input ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( random Alpha Of Length ( 5 ), Ġrandom Alpha Of Length ( 5 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Source Builder (). query ( Query Builders . match All Query ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( is AD Monitor ( monitor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġnot Ġad Ġmonitor Ġif Ġmonitor Ġinput 's Ġindex Ġname Ġis Ġnot ĠAD Ġresult Ġindex `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmonitor Ġ= Ġrandom Query Level Monitor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinputs Ġ= ĠlistOf ( Search Input ( listOf ( random Alpha Of Length ( 5 )), ĠSearch Source Builder (). query ( Query Builders . match All Query ()))) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( is AD Monitor ( monitor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġadd Ġuser Ġrole Ġfilter Ġwith Ġnull Ġuser `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Source Builder Ġ= ĠSearch Source Builder () ĊĠĠĠĠĠĠĠ Ġadd User Backend Roles Filter ( null , Ġsearch Source Builder ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" query \":{\" bool \":{\" must _ not \": [{ \" nested \":{\" query \":{\" exists \":{\" field \":\" user \",\" boost \": 1 . 0 }}, " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" path \":\" user \",\" ignore _ un mapped \": false ,\" score _ mode \":\" none \",\" boost \": 1 . 0 }}], \" adjust _ pure _ negative \": true ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" boost \": 1 . 0 }} }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Source Builder . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġadd Ġuser Ġrole Ġfilter Ġwith Ġuser Ġwith Ġempty Ġname `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Source Builder Ġ= ĠSearch Source Builder () ĊĠĠĠĠĠĠĠ Ġadd User Backend Roles Filter ( User ("", Ġmutable ListOf < String >(), Ġmutable ListOf < String >(), Ġmutable ListOf < String > ()), Ġsearch Source Builder ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" query \":{\" bool \":{\" must _ not \": [{ \" nested \":{\" query \":{\" exists \":{\" field \":\" user \",\" boost \": 1 . 0 }}, " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" path \":\" user \",\" ignore _ un mapped \": false ,\" score _ mode \":\" none \",\" boost \": 1 . 0 }}], \" adjust _ pure _ negative \": true ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" boost \": 1 . 0 }} }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Source Builder . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġadd Ġuser Ġrole Ġfilter Ġwith Ġnull Ġuser Ġbackend Ġrole `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Source Builder Ġ= ĠSearch Source Builder () ĊĠĠĠĠĠĠĠ Ġadd User Backend Roles Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Alpha Of Length ( 5 ), Ġnull , ĠlistOf ( random Alpha Of Length ( 5 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( random Alpha Of Length ( 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Source Builder ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" query \":{\" bool \":{\" must \": [{ \" nested \":{\" query \":{\" exists \":{\" field \":\" user \",\" boost \": 1 . 0 }}, " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" path \":\" user \",\" ignore _ un mapped \": false ,\" score _ mode \":\" none \",\" boost \": 1 . 0 }}], \" must _ not \": [{ \" nested \ ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" query \":{\" exists \":{\" field \":\" user . backend _ roles . keyword \",\" boost \": 1 . 0 }}, \" path \":\" user \",\" ignore _ un mapped \"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ": false ,\" score _ mode \":\" none \",\" boost \": 1 . 0 }}], \" adjust _ pure _ negative \": true ,\" boost \": 1 . 0 }} }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Source Builder . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġadd Ġuser Ġrole Ġfilter Ġwith Ġempty Ġuser Ġbackend Ġrole `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Source Builder Ġ= ĠSearch Source Builder () ĊĠĠĠĠĠĠĠ Ġadd User Backend Roles Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Alpha Of Length ( 5 ), ĠlistOf (), ĠlistOf ( random Alpha Of Length ( 5 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( random Alpha Of Length ( 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Source Builder ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" query \":{\" bool \":{\" must \": [{ \" nested \":{\" query \":{\" exists \":{\" field \":\" user \",\" boost \": 1 . 0 }}, " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" path \":\" user \",\" ignore _ un mapped \": false ,\" score _ mode \":\" none \",\" boost \": 1 . 0 }}], \" must _ not \": [{ \" nested \ ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" query \":{\" exists \":{\" field \":\" user . backend _ roles . keyword \",\" boost \": 1 . 0 }}, \" path \":\" user \",\" ignore _ un mapped \"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ": false ,\" score _ mode \":\" none \",\" boost \": 1 . 0 }}], \" adjust _ pure _ negative \": true ,\" boost \": 1 . 0 }} }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Source Builder . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġadd Ġuser Ġrole Ġfilter Ġwith Ġnormal Ġuser Ġbackend Ġrole `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Source Builder Ġ= ĠSearch Source Builder () ĊĠĠĠĠĠĠĠ Ġval Ġbackend Role 1 Ġ= Ġrandom Alpha Of Length ( 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġbackend Role 2 Ġ= Ġrandom Alpha Of Length ( 5 ) ĊĠĠĠĠĠĠĠ Ġadd User Backend Roles Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Alpha Of Length ( 5 ), ĠlistOf ( backend Role 1 , Ġbackend Role 2 ), ĠlistOf ( random Alpha Of Length ( 5 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( random Alpha Of Length ( 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Source Builder ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" query \":{\" bool \":{\" must \": [{ \" nested \":{\" query \":{\" terms \":{\" user . backend _ roles . keyword \ ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ \" $ backend Role 1 \",\" $ backend Role 2 \" ]," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" boost \": 1 . 0 }}, \" path \":\" user \",\" ignore _ un mapped \": false ,\" score _ mode \":\" none \",\" boost \": 1 . 0 }} ]," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" adjust _ pure _ negative \": true ,\" boost \": 1 . 0 }} }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Source Builder . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ