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.dataprovider.test;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
28 import java.util.Arrays;
29 import java.util.List;
31 import org.json.JSONObject;
32 import org.junit.Test;
33 import org.mockito.Mockito;
34 import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
35 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.QueryByFilter;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.EntityInput;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.Filter;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.FilterBuilder;
40 public class TestTimestampFilter extends Mockito {
43 public void testTimestampRange() {
44 final String PROPERTY_TIMESTAMP = "timestamp";
45 List<Filter> filters =
46 Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2017*").build());
47 EntityInput input = mock(EntityInput.class);
48 when(input.getFilter()).thenReturn(filters);
49 QueryBuilder query = new QueryByFilter(input).getQueryBuilderByFilter();
50 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2017-01-01T00:00:00.0Z", "2018-01-01T00:00:00.0Z");
52 filters = Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2*").build());
53 when(input.getFilter()).thenReturn(filters);
54 query = new QueryByFilter(input).getQueryBuilderByFilter();
55 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2000-01-01T00:00:00.0Z", "3000-01-01T00:00:00.0Z");
57 filters = Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("20*").build());
58 when(input.getFilter()).thenReturn(filters);
59 query = new QueryByFilter(input).getQueryBuilderByFilter();
60 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2000-01-01T00:00:00.0Z", "2100-01-01T00:00:00.0Z");
62 filters = Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("205*").build());
63 when(input.getFilter()).thenReturn(filters);
64 query = new QueryByFilter(input).getQueryBuilderByFilter();
65 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-01-01T00:00:00.0Z", "2060-01-01T00:00:00.0Z");
67 filters = Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050*").build());
68 when(input.getFilter()).thenReturn(filters);
69 query = new QueryByFilter(input).getQueryBuilderByFilter();
70 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-01-01T00:00:00.0Z", "2051-01-01T00:00:00.0Z");
72 filters = Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-*").build());
73 when(input.getFilter()).thenReturn(filters);
74 query = new QueryByFilter(input).getQueryBuilderByFilter();
75 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-01-01T00:00:00.0Z", "2051-01-01T00:00:00.0Z");
77 filters = Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-1*").build());
78 when(input.getFilter()).thenReturn(filters);
79 query = new QueryByFilter(input).getQueryBuilderByFilter();
80 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-01T00:00:00.0Z", "2051-01-01T00:00:00.0Z");
82 filters = Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10*").build());
83 when(input.getFilter()).thenReturn(filters);
84 query = new QueryByFilter(input).getQueryBuilderByFilter();
85 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-01T00:00:00.0Z", "2050-11-01T00:00:00.0Z");
88 Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-*").build());
89 when(input.getFilter()).thenReturn(filters);
90 query = new QueryByFilter(input).getQueryBuilderByFilter();
91 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-01T00:00:00.0Z", "2050-11-01T00:00:00.0Z");
94 Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-0*").build());
95 when(input.getFilter()).thenReturn(filters);
96 query = new QueryByFilter(input).getQueryBuilderByFilter();
97 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-01T00:00:00.0Z", "2050-10-10T00:00:00.0Z");
100 .asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-02*").build());
101 when(input.getFilter()).thenReturn(filters);
102 query = new QueryByFilter(input).getQueryBuilderByFilter();
103 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-02T00:00:00.0Z", "2050-10-03T00:00:00.0Z");
106 .asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14*").build());
107 when(input.getFilter()).thenReturn(filters);
108 query = new QueryByFilter(input).getQueryBuilderByFilter();
109 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T00:00:00.0Z", "2050-10-15T00:00:00.0Z");
112 .asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14T*").build());
113 when(input.getFilter()).thenReturn(filters);
114 query = new QueryByFilter(input).getQueryBuilderByFilter();
115 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T00:00:00.0Z", "2050-10-15T00:00:00.0Z");
118 .asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14T1*").build());
119 when(input.getFilter()).thenReturn(filters);
120 query = new QueryByFilter(input).getQueryBuilderByFilter();
121 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T10:00:00.0Z", "2050-10-14T20:00:00.0Z");
124 .asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14T12*").build());
125 when(input.getFilter()).thenReturn(filters);
126 query = new QueryByFilter(input).getQueryBuilderByFilter();
127 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T12:00:00.0Z", "2050-10-14T13:00:00.0Z");
130 .asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14T12:*").build());
131 when(input.getFilter()).thenReturn(filters);
132 query = new QueryByFilter(input).getQueryBuilderByFilter();
133 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T12:00:00.0Z", "2050-10-14T13:00:00.0Z");
136 .asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14T12:4*").build());
137 when(input.getFilter()).thenReturn(filters);
138 query = new QueryByFilter(input).getQueryBuilderByFilter();
139 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T12:40:00.0Z", "2050-10-14T12:50:00.0Z");
141 filters = Arrays.asList(
142 new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14T12:42*").build());
143 when(input.getFilter()).thenReturn(filters);
144 query = new QueryByFilter(input).getQueryBuilderByFilter();
145 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T12:42:00.0Z", "2050-10-14T12:43:00.0Z");
147 filters = Arrays.asList(
148 new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14T12:42:*").build());
149 when(input.getFilter()).thenReturn(filters);
150 query = new QueryByFilter(input).getQueryBuilderByFilter();
151 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T12:42:00.0Z", "2050-10-14T12:43:00.0Z");
153 filters = Arrays.asList(
154 new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14T12:42:5*").build());
155 when(input.getFilter()).thenReturn(filters);
156 query = new QueryByFilter(input).getQueryBuilderByFilter();
157 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T12:42:50.0Z", "2050-10-14T12:43:00.0Z");
159 filters = Arrays.asList(
160 new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2050-10-14T12:42:56*").build());
161 when(input.getFilter()).thenReturn(filters);
162 query = new QueryByFilter(input).getQueryBuilderByFilter();
163 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2050-10-14T12:42:56.0Z", "2050-10-14T12:42:57.0Z");
167 public void testExtra() {
168 final String PROPERTY_TIMESTAMP = "end";
169 EntityInput input = mock(EntityInput.class);
170 List<Filter> filters;
173 .asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2020-02-19T*").build());
174 when(input.getFilter()).thenReturn(filters);
175 QueryBuilder query = new QueryByFilter(input).getQueryBuilderByFilter();
176 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2020-02-19T00:00:00.0Z", "2020-02-20T00:00:00.0Z");
179 .asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2020-02-19*").build());
180 when(input.getFilter()).thenReturn(filters);
181 query = new QueryByFilter(input).getQueryBuilderByFilter();
182 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2020-02-19T00:00:00.0Z", "2020-02-20T00:00:00.0Z");
184 filters = Arrays.asList(new FilterBuilder().setProperty(PROPERTY_TIMESTAMP).setFiltervalue("2020*").build());
185 when(input.getFilter()).thenReturn(filters);
186 query = new QueryByFilter(input).getQueryBuilderByFilter();
187 assertRange(query.getInner(), PROPERTY_TIMESTAMP, "2020-01-01T00:00:00.0Z", "2021-01-01T00:00:00.0Z");
192 private void assertRange(JSONObject rangeQuery, String property, String lower, String upper) {
193 System.out.println("==test for " + rangeQuery.toString());
194 assertTrue(rangeQuery.has("range"));
195 assertTrue(rangeQuery.getJSONObject("range").has(property));
196 JSONObject o = rangeQuery.getJSONObject("range").getJSONObject(property);
198 assertTrue(o.has("lt"));
199 assertEquals(upper, o.getString("lt"));
200 assertTrue(o.has("gte"));
201 assertEquals(lower, o.getString("gte"));
202 System.out.println("succeeded");