1 /* ============LICENSE_START=======================================================
2 * ONAP : ccsdk features
3 * ================================================================================
4 * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.ccsdk.features.sdnr.wt.dataprovider.dblib.test;
23 import static org.junit.Assert.assertFalse;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertTrue;
26 import java.util.Arrays;
27 import java.util.HashMap;
31 import org.junit.Test;
32 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.CountQuery;
33 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.SelectQuery;
34 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapperHelper;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListInputBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryInputBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Filter;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterKey;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.PaginationBuilder;
43 import org.opendaylight.yangtools.yang.common.Uint32;
44 import org.opendaylight.yangtools.yang.common.Uint64;
46 public class TestQuerySyntax {
49 private static final String TABLENAME1 = "table1";
50 private static final String CONTROLLERID = "controllerid1";
53 public void testTimestampFilter() {
54 Map<FilterKey, Filter> filterMap = new HashMap<>();
55 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue("2021*").build();
56 filterMap.put(filter.key(), filter);
57 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
58 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
59 final String sql = query.toSql();
60 assertTrue(sql.contains("`timestamp`>='2021-01-01 00:00:00.000'"));
61 assertTrue(sql.contains("`timestamp`<'2022-01-01 00:00:00.0'"));
65 public void testTimestampFilter2() {
66 Map<FilterKey, Filter> filterMap = new HashMap<>();
67 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue(">2021").build();
68 filterMap.put(filter.key(), filter);
69 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
70 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
71 final String sql = query.toSql();
72 assertTrue(sql.contains("`timestamp`>='2022-01-01 00:00:00.0'"));
76 public void testTimestampFilter3() {
77 Map<FilterKey, Filter> filterMap = new HashMap<>();
78 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue(">=2021").build();
79 filterMap.put(filter.key(), filter);
80 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
81 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
82 final String sql = query.toSql();
83 assertTrue(sql.contains("`timestamp`>='2021-01-01 00:00:00.000'"));
88 public void testTimestampFilter4() {
89 Map<FilterKey, Filter> filterMap = new HashMap<>();
90 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue("<2021").build();
91 filterMap.put(filter.key(), filter);
92 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
93 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
94 final String sql = query.toSql();
95 assertTrue(sql.contains("`timestamp`<'2021-01-01 00:00:00.000'"));
99 public void testTimestampFilter5() {
100 Map<FilterKey, Filter> filterMap = new HashMap<>();
101 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue("<=2021").build();
102 filterMap.put(filter.key(), filter);
103 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
104 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
105 final String sql = query.toSql();
106 assertTrue(sql.contains("`timestamp`<'2022-01-01 00:00:00.0'"));
110 public void testTimestampFilter6() {
111 Map<FilterKey, Filter> filterMap = new HashMap<>();
113 new FilterBuilder().setProperty("timestamp").setFiltervalue(">=2022-01-01T00:00:00.000Z").build();
114 filterMap.put(filter.key(), filter);
115 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
116 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
117 final String sql = query.toSql();
118 assertTrue(sql.contains("`timestamp`>='2022-01-01 00:00:00.000'"));
122 public void testTimestampFilter8() {
123 Map<FilterKey, Filter> filterMap = new HashMap<>();
125 new FilterBuilder().setProperty("timestamp").setFiltervalue(">2022-01-01T00:00:00.000Z").build();
126 filterMap.put(filter.key(), filter);
127 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
128 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
129 final String sql = query.toSql();
130 assertTrue(sql.contains("`timestamp`>'2022-01-01 00:00:00.000'"));
134 public void testTimestampFilter9() {
135 Map<FilterKey, Filter> filterMap = new HashMap<>();
137 new FilterBuilder().setProperty("timestamp").setFiltervalue("<2022-01-01T00:00:00.000Z").build();
138 filterMap.put(filter.key(), filter);
139 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
140 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
141 final String sql = query.toSql();
142 assertTrue(sql.contains("`timestamp`<'2022-01-01 00:00:00.000'"));
146 public void testTimestampFilter10() {
147 Map<FilterKey, Filter> filterMap = new HashMap<>();
149 new FilterBuilder().setProperty("timestamp").setFiltervalue("<=2022-01-01T00:00:00.000Z").build();
150 filterMap.put(filter.key(), filter);
151 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
152 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
153 final String sql = query.toSql();
154 assertTrue(sql.contains("`timestamp`<='2022-01-01 00:00:00.000'"));
158 public void testTimestampFilter11() {
159 Map<FilterKey, Filter> filterMap = new HashMap<>();
161 new FilterBuilder().setProperty("timestamp").setFiltervalue("<=2022-01-01T00:00:00.000222Z").build();
162 filterMap.put(filter.key(), filter);
163 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
164 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
165 final String sql = query.toSql();
166 assertTrue(sql.contains("`timestamp`<='2022-01-01 00:00:00.000'"));
170 public void testSelectForFilterValues() {
171 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
172 .setFilter(YangToolsMapperHelper.toMap(Arrays.asList(
173 new FilterBuilder().setProperty("id").setFiltervalues(Set.of("das", "das2")).build())))
174 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
176 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
177 System.out.println(query.toSql());
180 public void testSelectForFilterValues2() {
181 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
182 .setFilter(YangToolsMapperHelper.toMap(Arrays.asList(
183 new FilterBuilder().setProperty("id").setFiltervalue("*").build())))
184 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
186 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
187 System.out.println(query.toSql());
188 assertFalse(query.toSql().contains("RLIKE"));
191 public void testSelectForFilterValues3() {
192 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
193 .setFilter(YangToolsMapperHelper.toMap(Arrays.asList(
194 new FilterBuilder().setProperty("id").setFiltervalues(Set.of("*","abc")).build())))
195 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
197 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
198 System.out.println(query.toSql());
199 assertFalse(query.toSql().contains("RLIKE"));
202 public void testSelectForFilterValues4() {
203 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
204 .setFilter(YangToolsMapperHelper.toMap(Arrays.asList(
205 new FilterBuilder().setProperty("id").setFiltervalues(Set.of("abc")).build(),
206 new FilterBuilder().setProperty("node-id").setFiltervalues(Set.of("*")).build())))
207 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
209 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
210 System.out.println(query.toSql());
211 assertFalse(query.toSql().contains("RLIKE"));
214 public void testSelectForFilterValues5() {
215 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
216 .setFilter(YangToolsMapperHelper.toMap(Arrays.asList(
217 new FilterBuilder().setProperty("id").setFiltervalues(Set.of("abc")).build(),
218 new FilterBuilder().setProperty("node-id").setFiltervalues(Set.of("*ran*")).build())))
219 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
221 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
222 System.out.println(query.toSql());
223 assertTrue(query.toSql().contains("RLIKE"));
224 assertTrue(query.toSql().contains(".*"));
228 public void testCount() {
229 CountQuery query = new CountQuery(Entity.Eventlog, TestMariaDataProvider.createInput(1, 20));
230 String sQuery = query.toSql();
231 assertNotNull(sQuery);
232 assertTrue(sQuery.contains("*") && sQuery.contains("COUNT") && sQuery.contains(Entity.Eventlog.getName()));
234 query = new CountQuery(Entity.Eventlog, TestMariaDataProvider.createInput("node-id","abc",1, 20));
235 sQuery = query.toSql();
236 assertNotNull(sQuery);
237 assertTrue(sQuery.contains("node-id") && sQuery.contains("COUNT") && sQuery.contains(Entity.Eventlog.getName()));