@@ -68,6 +68,7 @@ public static Collection<Object[]> data() {
6868 String [] operations = new String []{ConfigurationOptions .ES_OPERATION_INDEX ,
6969 ConfigurationOptions .ES_OPERATION_CREATE ,
7070 ConfigurationOptions .ES_OPERATION_UPDATE ,
71+ ConfigurationOptions .ES_OPERATION_UPSERT ,
7172 ConfigurationOptions .ES_OPERATION_DELETE };
7273 boolean [] asJsons = new boolean []{false , true };
7374 EsMajorVersion [] versions = new EsMajorVersion []{EsMajorVersion .V_1_X ,
@@ -110,6 +111,7 @@ public void prepare() {
110111 @ Test
111112 public void testNoHeader () throws Exception {
112113 assumeFalse (ConfigurationOptions .ES_OPERATION_UPDATE .equals (operation ));
114+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
113115 assumeFalse (ConfigurationOptions .ES_OPERATION_DELETE .equals (operation ));
114116 create (settings ()).write (data ).copyTo (ba );
115117 String result = prefix () + "}}" + map ();
@@ -120,6 +122,7 @@ public void testNoHeader() throws Exception {
120122 // check user friendliness and escape the string if needed
121123 public void testConstantId () throws Exception {
122124 assumeFalse (isDeleteOP () && jsonInput );
125+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
123126 Settings settings = settings ();
124127 noId = true ;
125128 settings .setProperty (ConfigurationOptions .ES_MAPPING_ID , "<foobar>" );
@@ -133,6 +136,7 @@ public void testConstantId() throws Exception {
133136 @ Test
134137 public void testParent () throws Exception {
135138 assumeTrue (version .onOrBefore (EsMajorVersion .V_6_X ));
139+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
136140 assumeFalse (isDeleteOP () && jsonInput );
137141 Settings settings = settings ();
138142 settings .setProperty (ConfigurationOptions .ES_MAPPING_PARENT , "<5>" );
@@ -145,6 +149,7 @@ public void testParent() throws Exception {
145149 @ Test
146150 public void testParent7X () throws Exception {
147151 assumeTrue (version .onOrAfter (EsMajorVersion .V_7_X ));
152+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
148153 assumeFalse (isDeleteOP () && jsonInput );
149154 Settings settings = settings ();
150155 settings .setProperty (ConfigurationOptions .ES_MAPPING_PARENT , "<5>" );
@@ -157,6 +162,7 @@ public void testParent7X() throws Exception {
157162 @ Test
158163 public void testVersion () throws Exception {
159164 assumeTrue (version .onOrBefore (EsMajorVersion .V_6_X ));
165+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
160166 assumeFalse (isDeleteOP () && jsonInput );
161167 Settings settings = settings ();
162168 settings .setProperty (ConfigurationOptions .ES_MAPPING_VERSION , "<3>" );
@@ -169,6 +175,7 @@ public void testVersion() throws Exception {
169175 @ Test
170176 public void testVersion7X () throws Exception {
171177 assumeTrue (version .onOrAfter (EsMajorVersion .V_7_X ));
178+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
172179 assumeFalse (isDeleteOP () && jsonInput );
173180 Settings settings = settings ();
174181 settings .setProperty (ConfigurationOptions .ES_MAPPING_VERSION , "<3>" );
@@ -181,6 +188,7 @@ public void testVersion7X() throws Exception {
181188 @ Test
182189 public void testTtl () throws Exception {
183190 assumeFalse (isDeleteOP () && jsonInput );
191+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
184192 Settings settings = settings ();
185193 settings .setProperty (ConfigurationOptions .ES_MAPPING_TTL , "<2>" );
186194
@@ -192,6 +200,7 @@ public void testTtl() throws Exception {
192200 @ Test
193201 public void testTimestamp () throws Exception {
194202 assumeFalse (isDeleteOP () && jsonInput );
203+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
195204 Settings settings = settings ();
196205 settings .setProperty (ConfigurationOptions .ES_MAPPING_TIMESTAMP , "<3>" );
197206 create (settings ).write (data ).copyTo (ba );
@@ -202,6 +211,7 @@ public void testTimestamp() throws Exception {
202211 @ Test
203212 public void testRouting () throws Exception {
204213 assumeTrue (version .onOrBefore (EsMajorVersion .V_6_X ));
214+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
205215 assumeFalse (isDeleteOP () && jsonInput );
206216 Settings settings = settings ();
207217 settings .setProperty (ConfigurationOptions .ES_MAPPING_ROUTING , "<4>" );
@@ -214,6 +224,7 @@ public void testRouting() throws Exception {
214224 @ Test
215225 public void testRouting7X () throws Exception {
216226 assumeTrue (version .onOrAfter (EsMajorVersion .V_7_X ));
227+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
217228 assumeFalse (isDeleteOP () && jsonInput );
218229 Settings settings = settings ();
219230 settings .setProperty (ConfigurationOptions .ES_MAPPING_ROUTING , "<4>" );
@@ -226,6 +237,7 @@ public void testRouting7X() throws Exception {
226237 @ Test
227238 public void testAll () throws Exception {
228239 assumeTrue (version .onOrBefore (EsMajorVersion .V_6_X ));
240+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
229241 assumeFalse (isDeleteOP () && jsonInput );
230242 Settings settings = settings ();
231243 settings .setProperty (ConfigurationOptions .ES_MAPPING_ID , "n" );
@@ -240,6 +252,7 @@ public void testAll() throws Exception {
240252 @ Test
241253 public void testAll7X () throws Exception {
242254 assumeTrue (version .onOrAfter (EsMajorVersion .V_7_X ));
255+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
243256 assumeFalse (isDeleteOP () && jsonInput );
244257 Settings settings = settings ();
245258 settings .setProperty (ConfigurationOptions .ES_MAPPING_ID , "n" );
@@ -254,6 +267,7 @@ public void testAll7X() throws Exception {
254267 @ Test
255268 public void testIdPattern () throws Exception {
256269 assumeFalse (isDeleteOP () && jsonInput );
270+ assumeFalse (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
257271 Settings settings = settings ();
258272 if (version .onOrAfter (EsMajorVersion .V_8_X )) {
259273 settings .setResourceWrite ("{n}" );
@@ -468,6 +482,127 @@ public void testUpdateOnlyParamInlineScript6X() throws Exception {
468482 assertEquals (result , ba .toString ());
469483 }
470484
485+ @ Test
486+ public void testUpsertParamInlineScript1X () throws Exception {
487+ assumeTrue (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
488+ assumeTrue (version .onOrBefore (EsMajorVersion .V_1_X ));
489+ Settings set = settings ();
490+
491+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_INLINE , "counter = param1; anothercounter = param2" );
492+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_LANG , "groovy" );
493+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_PARAMS , " param1:<1>, param2:n " );
494+
495+ create (set ).write (data ).copyTo (ba );
496+
497+ String result =
498+ "{\" update\" :{\" _id\" :3}}\n " +
499+ "{\" params\" :{\" param1\" :1,\" param2\" :1},\" lang\" :\" groovy\" ,\" script\" :\" counter = param1; anothercounter = param2\" ,\" upsert\" :{\" n\" :1,\" s\" :\" v\" }}\n " ;
500+
501+ assertEquals (result , ba .toString ());
502+ }
503+
504+ @ Test
505+ public void testUpsertParamInlineScript5X () throws Exception {
506+ assumeTrue (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
507+ assumeTrue (version .after (EsMajorVersion .V_1_X ));
508+ assumeTrue (version .before (EsMajorVersion .V_6_X ));
509+ Settings set = settings ();
510+
511+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_INLINE , "counter = param1; anothercounter = param2" );
512+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_LANG , "groovy" );
513+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_PARAMS , " param1:<1>, param2:n " );
514+
515+ create (set ).write (data ).copyTo (ba );
516+
517+ String result =
518+ "{\" update\" :{\" _id\" :3}}\n " +
519+ "{\" script\" :{\" inline\" :\" counter = param1; anothercounter = param2\" ,\" lang\" :\" groovy\" ,\" params\" :{\" param1\" :1,\" param2\" :1}},\" upsert\" :{\" n\" :1,\" s\" :\" v\" }}\n " ;
520+
521+ assertEquals (result , ba .toString ());
522+ }
523+
524+ @ Test
525+ public void testUpsertParamInlineScript6X () throws Exception {
526+ assumeTrue (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
527+ assumeTrue (version .onOrAfter (EsMajorVersion .V_6_X ));
528+ Settings set = settings ();
529+
530+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_INLINE , "counter = param1; anothercounter = param2" );
531+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_LANG , "groovy" );
532+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_PARAMS , " param1:<1>, param2:n " );
533+
534+ create (set ).write (data ).copyTo (ba );
535+
536+ String result =
537+ "{\" update\" :{\" _id\" :3}}\n " +
538+ "{\" script\" :{\" source\" :\" counter = param1; anothercounter = param2\" ,\" lang\" :\" groovy\" ,\" params\" :{\" param1\" :1,\" param2\" :1}},\" upsert\" :{\" n\" :1,\" s\" :\" v\" }}\n " ;
539+
540+ assertEquals (result , ba .toString ());
541+ }
542+
543+ @ Test
544+ public void testScriptedUpsertParamInlineScript1X () throws Exception {
545+ assumeTrue (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
546+ assumeTrue (version .onOrBefore (EsMajorVersion .V_1_X ));
547+ Settings set = settings ();
548+
549+ set .setProperty (ConfigurationOptions .ES_MAPPING_ID , "n" );
550+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_UPSERT , "true" );
551+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_INLINE , "counter = param1; anothercounter = param2" );
552+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_LANG , "groovy" );
553+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_PARAMS , " param1:<1>, param2:n " );
554+
555+ create (set ).write (data ).copyTo (ba );
556+
557+ String result =
558+ "{\" update\" :{\" _id\" :1}}\n " +
559+ "{\" params\" :{\" param1\" :1,\" param2\" :1},\" lang\" :\" groovy\" ,\" script\" :\" counter = param1; anothercounter = param2\" ,\" scripted_upsert\" : true,\" upsert\" :{}}\n " ;
560+
561+ assertEquals (result , ba .toString ());
562+ }
563+
564+ @ Test
565+ public void testScriptedUpsertParamInlineScript5X () throws Exception {
566+ assumeTrue (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
567+ assumeTrue (version .after (EsMajorVersion .V_1_X ));
568+ assumeTrue (version .before (EsMajorVersion .V_6_X ));
569+ Settings set = settings ();
570+
571+ set .setProperty (ConfigurationOptions .ES_MAPPING_ID , "n" );
572+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_UPSERT , "true" );
573+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_INLINE , "counter = param1; anothercounter = param2" );
574+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_LANG , "groovy" );
575+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_PARAMS , " param1:<1>, param2:n " );
576+
577+ create (set ).write (data ).copyTo (ba );
578+
579+ String result =
580+ "{\" update\" :{\" _id\" :1}}\n " +
581+ "{\" script\" :{\" inline\" :\" counter = param1; anothercounter = param2\" ,\" lang\" :\" groovy\" ,\" params\" :{\" param1\" :1,\" param2\" :1}},\" scripted_upsert\" : true,\" upsert\" :{}}\n " ;
582+
583+ assertEquals (result , ba .toString ());
584+ }
585+ @ Test
586+ public void testScriptedUpsertParamInlineScript6X () throws Exception {
587+ assumeTrue (ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation ));
588+ assumeTrue (version .onOrAfter (EsMajorVersion .V_6_X ));
589+ Settings set = settings ();
590+
591+ set .setProperty (ConfigurationOptions .ES_MAPPING_ID , "n" );
592+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_UPSERT , "true" );
593+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_INLINE , "counter = param1; anothercounter = param2" );
594+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_LANG , "groovy" );
595+ set .setProperty (ConfigurationOptions .ES_UPDATE_SCRIPT_PARAMS , " param1:<1>, param2:n " );
596+
597+ create (set ).write (data ).copyTo (ba );
598+
599+ String result =
600+ "{\" update\" :{\" _id\" :1}}\n " +
601+ "{\" script\" :{\" source\" :\" counter = param1; anothercounter = param2\" ,\" lang\" :\" groovy\" ,\" params\" :{\" param1\" :1,\" param2\" :1}},\" scripted_upsert\" : true,\" upsert\" :{}}\n " ;
602+
603+ assertEquals (result , ba .toString ());
604+ }
605+
471606 @ Test
472607 public void testUpdateOnlyParamFileScript1X () throws Exception {
473608 assumeTrue (ConfigurationOptions .ES_OPERATION_UPDATE .equals (operation ));
@@ -533,6 +668,9 @@ private Settings settings() {
533668 if (isUpdateOp ()) {
534669 set .setProperty (ConfigurationOptions .ES_MAPPING_ID , "<2>" );
535670 }
671+ if (isUpsertOp ()) {
672+ set .setProperty (ConfigurationOptions .ES_MAPPING_ID , "<3>" );
673+ }
536674 return set ;
537675 }
538676
@@ -565,6 +703,10 @@ private boolean isUpdateOp() {
565703 return ConfigurationOptions .ES_OPERATION_UPDATE .equals (operation );
566704 }
567705
706+ private boolean isUpsertOp () {
707+ return ConfigurationOptions .ES_OPERATION_UPSERT .equals (operation );
708+ }
709+
568710 private boolean isDeleteOP () {
569711 return ConfigurationOptions .ES_OPERATION_DELETE .equals (operation );
570712 }
0 commit comments