2 * ============LICENSE_START=======================================================
3 * ONAP : ccsdk features
4 * ================================================================================
5 * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.ccsdk.features.sdnr.wt.common.test;
24 import static org.junit.Assert.fail;
26 import org.json.JSONException;
27 import org.junit.Test;
28 import org.onap.ccsdk.features.sdnr.wt.common.database.data.DbFilter;
29 import org.onap.ccsdk.features.sdnr.wt.common.database.queries.BoolQueryBuilder;
30 import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
31 import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilders;
32 import org.onap.ccsdk.features.sdnr.wt.common.database.queries.SortOrder;
33 import org.onap.ccsdk.features.sdnr.wt.common.test.JSONAssert;
36 public class TestDbQueries {
38 private static final String MATCH_ALL_QUERY = "{\n" +
40 " \"match_all\" : {\n" +
44 private static final String MATCH_QUERY_KEY = "is-required";
45 private static final Object MATCH_QUERY_VALUE = true;
46 private static final String MATCH_QUERY = "{\n" +
49 " \""+MATCH_QUERY_KEY+"\" : "+MATCH_QUERY_VALUE+"\n" +
53 private static final String MATCH_QUERY_KEY2 = "node-id";
54 private static final Object MATCH_QUERY_VALUE2 = "sim2";
55 private static final String BOOL_QUERY_MUST = "{\n" +
61 " \""+MATCH_QUERY_KEY+"\": "+MATCH_QUERY_VALUE+"\n" +
66 " \""+MATCH_QUERY_KEY2+"\":"+MATCH_QUERY_VALUE2+" \n" +
73 private static final String BOOL_QUERY_MUST_SINGLE = "{\n" +
78 " \""+MATCH_QUERY_KEY+"\": "+MATCH_QUERY_VALUE+"\n" +
84 private static final String BOOL_QUERY_SHOULD = "{\n" +
90 " \""+MATCH_QUERY_KEY+"\": "+MATCH_QUERY_VALUE+"\n" +
95 " \""+MATCH_QUERY_KEY2+"\":"+MATCH_QUERY_VALUE2+" \n" +
102 private static final String BOOL_QUERY_SHOULD_SINGLE = "{\n" +
107 " \""+MATCH_QUERY_KEY+"\": "+MATCH_QUERY_VALUE+"\n" +
113 private static final String RANGE_QUERY_KEY = "timestamp";
114 private static final String RANGE_QUERY_LTEND = "2017-08-10T20:00:00.0Z";
115 private static final String RANGE_QUERY = "{\n" +
118 " \""+RANGE_QUERY_KEY+"\" : {\n" +
119 " \"lte\" : \""+RANGE_QUERY_LTEND+"\",\n" +
120 " \"boost\": 2.0\n" +
125 private static final String RANGEBOOL_QUERY="{\n" +
131 " \"is-required\": true\n" +
136 " \"node-id\": {\n" +
137 " \"max_determinized_states\": 10000,\n" +
138 " \"flags\": \"ALL\",\n" +
139 " \"value\": \"sim.*\"\n" +
147 private static final String AGG_FIELD = "severity";
148 private static final String AGG_QUERY = "{\n" +
150 " \"match_all\": {}\n" +
153 " \"severity\": {\n" +
155 " \"field\": \""+AGG_FIELD+"\"\n" +
160 private static final long FROMANDSIZE_QUERY_SIZE = 20;
161 private static final long FROMANDSIZE_QUERY_FROM = 120;
162 private static final String FROMANDSIZE_QUERY = "{\n" +
163 " \"size\": "+FROMANDSIZE_QUERY_SIZE+",\n" +
165 " \"match_all\": {}\n" +
167 " \"from\":"+FROMANDSIZE_QUERY_FROM+"\n" +
169 private static final String TERMQUERY_KEY = "node-id";
170 private static final String TERMQUERY_VALUE = "abc";
171 private static final String TERM_QUERY = "{\n" +
174 " \""+TERMQUERY_KEY+"\": \""+TERMQUERY_VALUE+"\"\n" +
178 private static final String SORTING_PROPERTY = "node-id";
179 private static final String SORTING_QUERY_ASC = "{\n" +
181 " \"match_all\": {}\n" +
185 " \""+SORTING_PROPERTY+"\": {\n" +
186 " \"order\": \"asc\"\n" +
191 private static final String SORTING_QUERY_DESC = "{\n" +
193 " \"match_all\": {}\n" +
197 " \""+SORTING_PROPERTY+"\": {\n" +
198 " \"order\": \"desc\"\n" +
204 private void testEquals(String message,String json, QueryBuilder query) {
205 this.testEquals(message, json, query,true);
207 private void testEquals(String message,String json, QueryBuilder query,boolean strict) {
210 System.out.println("===test if "+message+"===================");
211 System.out.println("orig : "+trim(json));
212 System.out.println("totest: "+query.toJSON().trim());
213 JSONAssert.assertEquals(json,query.toJSON(),strict);
214 } catch (JSONException e) {
219 private String trim(String json) {
220 return json.trim().replaceAll("\n","").replaceAll(" ", "");
224 public void testMatchAll() {
225 testEquals("match all query is wrong", MATCH_ALL_QUERY, QueryBuilders.matchAllQuery());
228 public void testMatch() {
229 testEquals("match query is wrong", MATCH_QUERY, QueryBuilders.matchQuery(MATCH_QUERY_KEY, MATCH_QUERY_VALUE));
232 public void testBoolMust() {
233 testEquals("bool query is wrong", BOOL_QUERY_MUST,
234 QueryBuilders.boolQuery().
235 must(QueryBuilders.matchQuery(MATCH_QUERY_KEY, MATCH_QUERY_VALUE)).
236 must(QueryBuilders.matchQuery(MATCH_QUERY_KEY2, MATCH_QUERY_VALUE2)));
239 public void testBoolMustSingle() {
240 testEquals("bool single query is wrong", BOOL_QUERY_MUST_SINGLE,
241 QueryBuilders.boolQuery().
242 must(QueryBuilders.matchQuery(MATCH_QUERY_KEY, MATCH_QUERY_VALUE)));
245 public void testBoolShould() {
246 testEquals("bool query is wrong", BOOL_QUERY_SHOULD,
247 QueryBuilders.boolQuery().
248 should(QueryBuilders.matchQuery(MATCH_QUERY_KEY, MATCH_QUERY_VALUE)).
249 should(QueryBuilders.matchQuery(MATCH_QUERY_KEY2, MATCH_QUERY_VALUE2)));
252 public void testBoolShouldSingle() {
253 testEquals("bool single query is wrong", BOOL_QUERY_SHOULD_SINGLE,
254 QueryBuilders.boolQuery().
255 should(QueryBuilders.matchQuery(MATCH_QUERY_KEY, MATCH_QUERY_VALUE)));
258 public void testRange() {
259 testEquals("range query is wrong", RANGE_QUERY, QueryBuilders.rangeQuery(RANGE_QUERY_KEY).lte(RANGE_QUERY_LTEND));
263 public void testAggregation() {
264 testEquals("aggregation query is wrong",AGG_QUERY, QueryBuilders.matchAllQuery().aggregations(AGG_FIELD));
267 public void testSizeAndFrom() {
268 testEquals("aggregation query is wrong",FROMANDSIZE_QUERY, QueryBuilders.matchAllQuery().size(FROMANDSIZE_QUERY_SIZE).from(FROMANDSIZE_QUERY_FROM));
271 public void testRegex() {
272 testEquals("range and bool query is wrong1",RANGEBOOL_QUERY,QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("is-required", true)).must(QueryBuilders.regex("node-id", DbFilter.createDatabaseRegex("sim*"))),false);
273 BoolQueryBuilder q = QueryBuilders.boolQuery().must(QueryBuilders.regex("node-id", DbFilter.createDatabaseRegex("sim*")));
274 q.must(QueryBuilders.matchQuery("is-required", true));
275 testEquals("range and bool query is wrong2",RANGEBOOL_QUERY,q,false);
278 public void testTerm() {
279 testEquals("term query is wrong", TERM_QUERY, QueryBuilders.termQuery(TERMQUERY_KEY, TERMQUERY_VALUE));
282 public void testSorting() {
283 testEquals("sortorder is wrong",SORTING_QUERY_ASC, QueryBuilders.matchAllQuery().sort(SORTING_PROPERTY, SortOrder.ASCENDING));
284 testEquals("sortorder is wrong",SORTING_QUERY_DESC, QueryBuilders.matchAllQuery().sort(SORTING_PROPERTY, SortOrder.DESCENDING));