1- package org .elasticsearch .client ;/*
1+ package org .elasticsearch .client ;
2+ /*
23 * Licensed to Elasticsearch under one or more contributor
34 * license agreements. See the NOTICE file distributed with
45 * this work for additional information regarding copyright
1718 * under the License.
1819 */
1920
20- import org .apache .http .util .EntityUtils ;
2121import org .elasticsearch .ElasticsearchStatusException ;
2222import org .elasticsearch .action .admin .cluster .storedscripts .DeleteStoredScriptRequest ;
2323import org .elasticsearch .action .admin .cluster .storedscripts .GetStoredScriptRequest ;
2424import org .elasticsearch .action .admin .cluster .storedscripts .GetStoredScriptResponse ;
25- import org .elasticsearch .action .support .master .AcknowledgedResponse ;
26- import org .elasticsearch .common .Strings ;
27- import org .elasticsearch .common .xcontent .ToXContent ;
25+ import org .elasticsearch .action .admin .cluster .storedscripts .PutStoredScriptRequest ;
26+ import org .elasticsearch .common .bytes .BytesArray ;
2827import org .elasticsearch .common .xcontent .XContentType ;
2928import org .elasticsearch .rest .RestStatus ;
3029import org .elasticsearch .script .Script ;
3130import org .elasticsearch .script .StoredScriptSource ;
3231
3332import java .util .Collections ;
33+ import java .util .Map ;
3434
35- import static org .elasticsearch .common .xcontent .XContentFactory .jsonBuilder ;
35+ import static org .elasticsearch .common .xcontent .support .XContentMapValues .extractValue ;
36+ import static org .elasticsearch .test .hamcrest .ElasticsearchAssertions .assertAcked ;
3637import static org .hamcrest .Matchers .equalTo ;
3738
3839public class StoredScriptsIT extends ESRestHighLevelClientTestCase {
3940
40- final String id = "calculate-score" ;
41+ private static final String id = "calculate-score" ;
4142
4243 public void testGetStoredScript () throws Exception {
4344 final StoredScriptSource scriptSource =
4445 new StoredScriptSource ("painless" ,
4546 "Math.log(_score * 2) + params.my_modifier" ,
4647 Collections .singletonMap (Script .CONTENT_TYPE_OPTION , XContentType .JSON .mediaType ()));
4748
48- final String script = Strings .toString (scriptSource .toXContent (jsonBuilder (), ToXContent .EMPTY_PARAMS ));
49- // TODO: change to HighLevel PutStoredScriptRequest when it will be ready
50- // so far - using low-level REST API
51- Request putRequest = new Request ("PUT" , "/_scripts/calculate-score" );
52- putRequest .setJsonEntity ("{\" script\" :" + script + "}" );
53- Response putResponse = adminClient ().performRequest (putRequest );
54- assertEquals ("{\" acknowledged\" :true}" , EntityUtils .toString (putResponse .getEntity ()));
49+ PutStoredScriptRequest request =
50+ new PutStoredScriptRequest (id , "search" , new BytesArray ("{}" ), XContentType .JSON , scriptSource );
51+ assertAcked (execute (request , highLevelClient ()::putScript , highLevelClient ()::putScriptAsync ));
5552
5653 GetStoredScriptRequest getRequest = new GetStoredScriptRequest ("calculate-score" );
5754 getRequest .masterNodeTimeout ("50s" );
@@ -68,22 +65,14 @@ public void testDeleteStoredScript() throws Exception {
6865 "Math.log(_score * 2) + params.my_modifier" ,
6966 Collections .singletonMap (Script .CONTENT_TYPE_OPTION , XContentType .JSON .mediaType ()));
7067
71- final String script = Strings .toString (scriptSource .toXContent (jsonBuilder (), ToXContent .EMPTY_PARAMS ));
72- // TODO: change to HighLevel PutStoredScriptRequest when it will be ready
73- // so far - using low-level REST API
74- Request putRequest = new Request ("PUT" , "/_scripts/" + id );
75- putRequest .setJsonEntity ("{\" script\" :" + script + "}" );
76- Response putResponse = adminClient ().performRequest (putRequest );
77- assertEquals ("{\" acknowledged\" :true}" , EntityUtils .toString (putResponse .getEntity ()));
68+ PutStoredScriptRequest request =
69+ new PutStoredScriptRequest (id , "search" , new BytesArray ("{}" ), XContentType .JSON , scriptSource );
70+ assertAcked (execute (request , highLevelClient ()::putScript , highLevelClient ()::putScriptAsync ));
7871
7972 DeleteStoredScriptRequest deleteRequest = new DeleteStoredScriptRequest (id );
8073 deleteRequest .masterNodeTimeout ("50s" );
8174 deleteRequest .timeout ("50s" );
82-
83- AcknowledgedResponse deleteResponse = execute (deleteRequest , highLevelClient ()::deleteScript ,
84- highLevelClient ()::deleteScriptAsync );
85-
86- assertThat (deleteResponse .isAcknowledged (), equalTo (true ));
75+ assertAcked (execute (deleteRequest , highLevelClient ()::deleteScript , highLevelClient ()::deleteScriptAsync ));
8776
8877 GetStoredScriptRequest getRequest = new GetStoredScriptRequest (id );
8978
@@ -92,4 +81,21 @@ public void testDeleteStoredScript() throws Exception {
9281 highLevelClient ()::getScriptAsync ));
9382 assertThat (statusException .status (), equalTo (RestStatus .NOT_FOUND ));
9483 }
84+
85+ public void testPutScript () throws Exception {
86+ final StoredScriptSource scriptSource =
87+ new StoredScriptSource ("painless" ,
88+ "Math.log(_score * 2) + params.my_modifier" ,
89+ Collections .singletonMap (Script .CONTENT_TYPE_OPTION , XContentType .JSON .mediaType ()));
90+
91+ PutStoredScriptRequest request =
92+ new PutStoredScriptRequest (id , "search" , new BytesArray ("{}" ), XContentType .JSON , scriptSource );
93+ assertAcked (execute (request , highLevelClient ()::putScript , highLevelClient ()::putScriptAsync ));
94+
95+ Map <String , Object > script = getAsMap ("/_scripts/" + id );
96+ assertThat (extractValue ("_id" , script ), equalTo (id ));
97+ assertThat (extractValue ("found" , script ), equalTo (true ));
98+ assertThat (extractValue ("script.lang" , script ), equalTo ("painless" ));
99+ assertThat (extractValue ("script.source" , script ), equalTo ("Math.log(_score * 2) + params.my_modifier" ));
100+ }
95101}
0 commit comments