/* Ċ Ġ* Ġ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 2 0 Ġ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 . index management . index state management Ċ Ċ import Ġorg . opense arch . index management . Index Management Plugin . Companion . INDEX _ MANAGE MENT _ INDEX Ċ import Ġorg . opense arch . index management . index state management . model . Policy Ċ import Ġorg . opense arch . index management . index state management . model . State Ċ import Ġorg . opense arch . index management . index state management . model . action . Replica Count Action Config Ċ import Ġorg . opense arch . index management . index state management . settings . Managed Index Settings Ċ import Ġorg . opense arch . index management . index state management . transport . action . update index metadata . Update Managed Index MetaData Action Ċ import Ġorg . opense arch . index management . index state management . transport . action . update index metadata . Update Managed Index MetaData Request Ċ import Ġorg . opense arch . index management . waitFor Ċ import Ġcom . car rot search . random ized testing . Random ized Test . sleep Ċ import Ġorg . opense arch . action . support . master . Ack nowled ged Response Ċ import Ġorg . opense arch . cluster . metadata . Index Metadata Ċ import Ġorg . opense arch . common . settings . Settings Ċ import Ġorg . opense arch . index . Index Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Ass ume Ċ import Ġorg . junit . Before Ċ import Ġjava . time . Instant Ċ import Ġjava . time . temporal . Ch rono Unit Ċ import Ġjava . util . Locale Ċ import Ġkotlin . collections . HashMap Ċ Ċ class ĠMetadata Regression IT Ġ: ĠIndex State Management Inte g TestCase () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtest Index Name Ġ= Ġjava Class . simple Name . toLowerCase ( Locale . ROOT ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġstart MetadataService () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmetadata Ġservice Ġcould Ġbe Ġstopped Ġbefore Ġfollowing Ġtests Ġstart Ġrun ĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġwill Ġenable Ġmetadata Ġservice Ġagain ĊĠĠĠĠĠĠĠ Ġupdate Cluster Setting ( Managed Index Settings . METADATA _ SERVICE _ ENABLED . key , Ġ" false ") ĊĠĠĠĠĠĠĠ Ġupdate Cluster Setting ( Managed Index Settings . METADATA _ SERVICE _ ENABLED . key , Ġ" true ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġclean Cluster Setting () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġneed Ġto Ġclean Ġup Ġotherwise Ġwill Ġthrow Ġerror ĊĠĠĠĠĠĠĠ Ġupdate Cluster Setting ( Managed Index Settings . METADATA _ SERVICE _ ENABLED . key , Ġnull , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġmove Ġmetadata Ġservice `() Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Cluster Setting ( Managed Index Settings . METADATA _ SERVICE _ ENABLED . key , Ġ" false ") ĊĠĠĠĠĠĠĠ Ġupdate Cluster Setting ( Managed Index Settings . METADATA _ SERVICE _ ENABLED . key , Ġ" true ") ĊĊĠĠĠĠĠĠĠ Ġval Ġindex Name Ġ= Ġ"${ test Index Name }_ index _ 1 " ĊĠĠĠĠĠĠĠ Ġval Ġpolicy ID Ġ= Ġ"${ test Index Name }_ test Policy Name _ 1 " ĊĠĠĠĠĠĠĠ Ġval Ġaction Config Ġ= ĠReplica Count Action Config ( 1 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġstates Ġ= ĠlistOf ( State ( name Ġ= Ġ" Replica Count State ", Ġactions Ġ= ĠlistOf ( action Config ), Ġtransitions Ġ= ĠlistOf ())) ĊĠĠĠĠĠĠĠ Ġval Ġpolicy Ġ= ĠPolicy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġpolicy ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ"$ test Index Name Ġdescription ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema Version Ġ= Ġ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Updated Time Ġ= ĠInstant . now (). tr uncated To ( Ch rono Unit . M ILL IS ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Notification Ġ= Ġrandom Error Notification (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault State Ġ= Ġstates [ 0 ]. name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstates Ġ= Ġstates ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcreate Policy ( policy , Ġpolicy ID ) ĊĠĠĠĠĠĠĠ Ġcreate Index ( index Name ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġput Ġsome Ġmetadata Ġinto Ġcluster Ġstate ĊĠĠĠĠĠĠĠ Ġvar Ġindex Metadata Ġ= Ġget Index Metadata ( index Name ) ĊĠĠĠĠĠĠĠ Ġmetadata To Cluster State Ġ= Ġmetadata To Cluster State . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Uuid Ġ= Ġindex Metadata . index UUID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy ID Ġ= Ġpolicy ID ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠUpdate Managed Index MetaData Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindices ToAdd Managed Index MetaData To Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( Index ( metadata To Cluster State . index , Ġmetadata To Cluster State . index Uuid ), Ġmetadata To Cluster State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠAck nowled ged Response Ġ= Ġclient (). execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Managed Index MetaData Action . INSTANCE , Ġrequest ĊĠĠĠĠĠĠĠ Ġ). get () ĊĠĠĠĠĠĠĠ Ġlogger . info ( response . is Ack nowled ged ) ĊĠĠĠĠĠĠĠ Ġindex Metadata Ġ= Ġget Index Metadata ( index Name ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" check Ġif Ġmetadata Ġis Ġsaved Ġin Ġcluster Ġstate : Ġ${ index Metadata . get Custom Data (" managed _ index _ metadata ") }") ĊĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġa Ġjob ĊĠĠĠĠĠĠĠ Ġadd Policy To Index ( index Name , Ġpolicy ID ) ĊĊĠĠĠĠĠĠĠ ĠwaitFor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Metadata Ġis Ġpending Ġmigration ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Explain Managed Index MetaData ( index Name ). info ?. get (" message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠwaitFor ( Instant . of Epoch Second ( 1 2 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Happy Ġmoving ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Explain Managed Index MetaData ( index Name ). info ?. get (" message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġget Index Metadata ( index Name ). get Custom Data (" managed _ index _ metadata ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogger . info (" metadata Ġhas Ġmoved ") ĊĊĠĠĠĠĠĠĠ Ġval Ġmanaged Index Config Ġ= Ġget Existing Managed Index Config ( index Name ) ĊĠĠĠĠĠĠĠ Ġ// ĠChange Ġthe Ġstart Ġtime Ġso Ġthe Ġjob Ġwill Ġtrigger Ġin Ġ 2 Ġseconds , Ġthis Ġwill Ġtrigger Ġthe Ġfirst Ġinitialization Ġof Ġthe Ġpolicy ĊĠĠĠĠĠĠĠ Ġupdate Managed Index Config StartTime ( managed Index Config ) ĊĊĠĠĠĠĠĠĠ ĠwaitFor Ġ{ ĠassertEquals ( policy ID , Ġget Explain Managed Index MetaData ( index Name ). policy ID ) Ġ} ĊĠĠĠĠĠĠĠ ĠwaitFor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Successfully Ġinitialized Ġpolicy : Ġ${ policy . id }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Explain Managed Index MetaData ( index Name ). info ?. get (" message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Managed Index Config StartTime ( managed Index Config ) ĊĠĠĠĠĠĠĠ ĠwaitFor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Index Ġdid Ġnot Ġset Ġnumber _ of _ replicas Ġto Ġ${ action Config . num Of Replicas }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Config . num Of Replicas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget NumberOf Replicas Setting ( index Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġjob Ġcan Ġcontinue Ġrun Ġfrom Ġcluster Ġstate Ġmetadata `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġnew Ġversion Ġof ĠIS M Ġplugin Ġcan Ġhandle Ġmetadata Ġin Ġcluster Ġstate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġwhen Ġjob Ġalready Ġstarted ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġcreate Ġindex , Ġadd Ġpolicy Ġto Ġit ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġmanually Ġadd Ġpolicy Ġfield Ġto Ġmanaged - index Ġso Ġrunner Ġwon 't Ġdo Ġinitial isation Ġitself ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġadd Ġmetadata Ġinto Ġcluster Ġstate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġthen Ġcheck Ġif Ġwe Ġcan Ġcontinue Ġrun Ġfrom Ġthis Ġadded Ġmetadata ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġval Ġindex Name Ġ= Ġ"${ test Index Name }_ index _ 2 " ĊĠĠĠĠĠĠĠ Ġval Ġpolicy ID Ġ= Ġ"${ test Index Name }_ test Policy Name _ 2 " ĊĠĠĠĠĠĠĠ Ġval Ġaction Config Ġ= ĠReplica Count Action Config ( 1 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġstates Ġ= ĠlistOf ( State ( name Ġ= Ġ" Replica Count State ", Ġactions Ġ= ĠlistOf ( action Config ), Ġtransitions Ġ= ĠlistOf ())) ĊĠĠĠĠĠĠĠ Ġval Ġpolicy Ġ= ĠPolicy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġpolicy ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ"$ test Index Name Ġdescription ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema Version Ġ= Ġ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Updated Time Ġ= ĠInstant . now (). tr uncated To ( Ch rono Unit . M ILL IS ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Notification Ġ= Ġrandom Error Notification (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault State Ġ= Ġstates [ 0 ]. name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstates Ġ= Ġstates ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcreate Policy ( policy , Ġpolicy ID ) ĊĠĠĠĠĠĠĠ Ġcreate Index ( index Name ) ĊĠĠĠĠĠĠĠ Ġadd Policy To Index ( index Name , Ġpolicy ID ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmanaged Index Config Ġ= Ġget Existing Managed Index Config ( index Name ) ĊĠĠĠĠĠĠĠ Ġ// Ġmanually Ġadd Ġpolicy Ġfield Ġinto Ġmanaged - index ĊĠĠĠĠĠĠĠ Ġupdate Managed Index Config Policy ( managed Index Config , Ġpolicy ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" managed - index : Ġ${ get Existing Managed Index Config ( index Name )} ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġmanually Ġsave Ġmetadata Ġinto Ġcluster Ġstate ĊĠĠĠĠĠĠĠ Ġvar Ġindex Metadata Ġ= Ġget Index Metadata ( index Name ) ĊĠĠĠĠĠĠĠ Ġmetadata To Cluster State Ġ= Ġmetadata To Cluster State . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Uuid Ġ= Ġindex Metadata . index UUID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy ID Ġ= Ġpolicy ID ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠUpdate Managed Index MetaData Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindices ToAdd Managed Index MetaData To Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( Index ( metadata To Cluster State . index , Ġmetadata To Cluster State . index Uuid ), Ġmetadata To Cluster State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠAck nowled ged Response Ġ= Ġclient (). execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Managed Index MetaData Action . INSTANCE , Ġrequest ĊĠĠĠĠĠĠĠ Ġ). get () ĊĊĠĠĠĠĠĠĠ Ġlogger . info ( response . is Ack nowled ged ) ĊĠĠĠĠĠĠĠ Ġindex Metadata Ġ= Ġget Index Metadata ( index Name ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" check Ġif Ġmetadata Ġis Ġsaved Ġin Ġcluster Ġstate : Ġ${ index Metadata . get Custom Data (" managed _ index _ metadata ") }") ĊĊĠĠĠĠĠĠĠ ĠwaitFor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Metadata Ġis Ġpending Ġmigration ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Explain Managed Index MetaData ( index Name ). info ?. get (" message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠwaitFor ( Instant . of Epoch Second ( 1 2 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Happy Ġmoving ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Explain Managed Index MetaData ( index Name ). info ?. get (" message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġget Index Metadata ( index Name ). get Custom Data (" managed _ index _ metadata ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogger . info (" metadata Ġhas Ġmoved ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġstart Ġthe Ġjob Ġrun ĊĠĠĠĠĠĠĠ Ġupdate Managed Index Config StartTime ( managed Index Config ) ĊĠĠĠĠĠĠĠ ĠwaitFor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Index Ġdid Ġnot Ġset Ġnumber _ of _ replicas Ġto Ġ${ action Config . num Of Replicas }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Config . num Of Replicas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget NumberOf Replicas Setting ( index Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġnew Ġnode Ġskip Ġexecution Ġwhen Ġold Ġnode Ġexist Ġin Ġcluster `() Ġ{ ĊĠĠĠĠĠĠĠ ĠAssume . assume True ( is Mixed Node RegressionTest ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġmixed Cluster - 0 Ġis Ġnew Ġnode , Ġmixed Cluster - 1 Ġis Ġold Ġnode ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġset Ġconfig Ġindex Ġto Ġonly Ġhave Ġone Ġshard Ġon Ġnew Ġnode ĊĠĠĠĠĠĠĠĠ Ġ* Ġso Ġold Ġnode Ġcannot Ġrun Ġjob Ġbecause Ġit Ġhas Ġno Ġshard ĊĠĠĠĠĠĠĠĠ Ġ* Ġnew Ġnode Ġalso Ġcannot Ġrun Ġjob Ġbecause Ġthere Ġis Ġan Ġold Ġnode ĊĠĠĠĠĠĠĠĠ Ġ* Ġhere Ġwe Ġcheck Ġno Ġjob Ġcan Ġbe Ġrun ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġthen Ġrer oute Ġshard Ġto Ġold Ġnode Ġand Ġthis Ġold Ġnode Ġcan Ġrun Ġjob ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġval Ġindex Name Ġ= Ġ"${ test Index Name }_ index _ 1 " ĊĠĠĠĠĠĠĠ Ġval Ġpolicy ID Ġ= Ġ"${ test Index Name }_ test Policy Name _ 1 " ĊĠĠĠĠĠĠĠ Ġval Ġaction Config Ġ= ĠReplica Count Action Config ( 1 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġstates Ġ= ĠlistOf ( State ( name Ġ= Ġ" Replica Count State ", Ġactions Ġ= ĠlistOf ( action Config ), Ġtransitions Ġ= ĠlistOf ())) ĊĠĠĠĠĠĠĠ Ġval Ġpolicy Ġ= ĠPolicy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġpolicy ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ"$ test Index Name Ġdescription ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema Version Ġ= Ġ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Updated Time Ġ= ĠInstant . now (). tr uncated To ( Ch rono Unit . M ILL IS ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Notification Ġ= Ġrandom Error Notification (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault State Ġ= Ġstates [ 0 ]. name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstates Ġ= Ġstates ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcreate Policy ( policy , Ġpolicy ID ) ĊĠĠĠĠĠĠĠ Ġcreate Index ( index Name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠSettings . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( Index Metadata . SETTING _ NUMBER _ OF _ REPL IC AS , Ġ" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġupdate Index Settings ( INDEX _ MANAGE MENT _ INDEX , Ġsettings ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġconfig Ġindex Ġshard Ġposition ĊĠĠĠĠĠĠĠ Ġval Ġsh ards Response Ġ= Ġcat Index Shard ( INDEX _ MANAGE MENT _ INDEX ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" check Ġconfig Ġindex Ġshard : Ġ$ shards Response ") ĊĠĠĠĠĠĠĠ Ġval Ġshard Node Ġ= Ġ( shards Response [ 0 ] Ġas ĠHashMap < *, Ġ* >) [" node "] ĊĊĠĠĠĠĠĠĠ Ġsleep ( 3 0 0 0 ) Ġ// Ġwait Ġsome Ġtime Ġfor Ġcluster Ġto Ġbe Ġstable ĊĊĠĠĠĠĠĠĠ Ġ// Ġmove Ġshard Ġon Ġnode 1 Ġto Ġnode 0 Ġif Ġexist ĊĠĠĠĠĠĠĠ Ġif Ġ( shard Node Ġ== Ġ" mixed Cluster - 1 ") Ġrer oute Shard ( INDEX _ MANAGE MENT _ INDEX , Ġ" mixed Cluster - 1 ", Ġ" mixed Cluster - 0 ") ĊĊĠĠĠĠĠĠĠ Ġadd Policy To Index ( index Name , Ġpolicy ID ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmanaged Index Config Ġ= Ġget Existing Managed Index Config ( index Name ) ĊĠĠĠĠĠĠĠ Ġupdate Managed Index Config StartTime ( managed Index Config ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġno Ġjob Ġhas Ġbeen Ġrun ĊĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( null , Ġget Existing Managed Index Config ( index Name ). policy ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġrer oute Ġshard Ġto Ġnode 1 ĊĠĠĠĠĠĠĠ Ġrer oute Shard ( INDEX _ MANAGE MENT _ INDEX , Ġ" mixed Cluster - 0 ", Ġ" mixed Cluster - 1 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsh ards Response 2 Ġ= Ġcat Index Shard ( INDEX _ MANAGE MENT _ INDEX ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" check Ġconfig Ġindex Ġshard : Ġ$ shards Response 2 ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġjob Ġcan Ġbe Ġran Ġnow ĊĠĠĠĠĠĠĠ Ġupdate Managed Index Config StartTime ( managed Index Config ) ĊĠĠĠĠĠĠĠ ĠwaitFor Ġ{ ĠassertEquals ( policy ID , Ġget Explain Managed Index MetaData ( index Name ). policy ID ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ