2 * ============LICENSE_START=======================================================
3 * ONAP : ccsdk features
4 * ================================================================================
5 * Copyright (C) 2020 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.dblib.test;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
27 import java.util.Arrays;
28 import java.util.HashMap;
30 import org.junit.Test;
31 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.CountQuery;
32 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.SelectQuery;
33 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapperHelper;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListInputBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryInputBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Filter;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterKey;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.PaginationBuilder;
42 import org.opendaylight.yangtools.yang.common.Uint32;
43 import org.opendaylight.yangtools.yang.common.Uint64;
45 public class TestQuerySyntax {
48 private static final String TABLENAME1 = "table1";
49 private static final String CONTROLLERID = "controllerid1";
52 public void testTimestampFilter() {
53 Map<FilterKey, Filter> filterMap = new HashMap<>();
54 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue("2021*").build();
55 filterMap.put(filter.key(), filter);
56 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
57 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
58 final String sql = query.toSql();
59 assertTrue(sql.contains("`timestamp`>='2021-01-01 00:00:00.000'"));
60 assertTrue(sql.contains("`timestamp`<'2022-01-01 00:00:00.0'"));
64 public void testTimestampFilter2() {
65 Map<FilterKey, Filter> filterMap = new HashMap<>();
66 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue(">2021").build();
67 filterMap.put(filter.key(), filter);
68 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
69 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
70 final String sql = query.toSql();
71 assertTrue(sql.contains("`timestamp`>='2022-01-01 00:00:00.0'"));
75 public void testTimestampFilter3() {
76 Map<FilterKey, Filter> filterMap = new HashMap<>();
77 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue(">=2021").build();
78 filterMap.put(filter.key(), filter);
79 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
80 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
81 final String sql = query.toSql();
82 assertTrue(sql.contains("`timestamp`>='2021-01-01 00:00:00.000'"));
87 public void testTimestampFilter4() {
88 Map<FilterKey, Filter> filterMap = new HashMap<>();
89 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue("<2021").build();
90 filterMap.put(filter.key(), filter);
91 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
92 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
93 final String sql = query.toSql();
94 assertTrue(sql.contains("`timestamp`<'2021-01-01 00:00:00.000'"));
98 public void testTimestampFilter5() {
99 Map<FilterKey, Filter> filterMap = new HashMap<>();
100 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue("<=2021").build();
101 filterMap.put(filter.key(), filter);
102 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
103 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
104 final String sql = query.toSql();
105 assertTrue(sql.contains("`timestamp`<'2022-01-01 00:00:00.0'"));
109 public void testTimestampFilter6() {
110 Map<FilterKey, Filter> filterMap = new HashMap<>();
112 new FilterBuilder().setProperty("timestamp").setFiltervalue(">=2022-01-01T00:00:00.000Z").build();
113 filterMap.put(filter.key(), filter);
114 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
115 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
116 final String sql = query.toSql();
117 assertTrue(sql.contains("`timestamp`>='2022-01-01 00:00:00.000'"));
121 public void testTimestampFilter8() {
122 Map<FilterKey, Filter> filterMap = new HashMap<>();
124 new FilterBuilder().setProperty("timestamp").setFiltervalue(">2022-01-01T00:00:00.000Z").build();
125 filterMap.put(filter.key(), filter);
126 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
127 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
128 final String sql = query.toSql();
129 assertTrue(sql.contains("`timestamp`>'2022-01-01 00:00:00.000'"));
133 public void testTimestampFilter9() {
134 Map<FilterKey, Filter> filterMap = new HashMap<>();
136 new FilterBuilder().setProperty("timestamp").setFiltervalue("<2022-01-01T00:00:00.000Z").build();
137 filterMap.put(filter.key(), filter);
138 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
139 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
140 final String sql = query.toSql();
141 assertTrue(sql.contains("`timestamp`<'2022-01-01 00:00:00.000'"));
145 public void testTimestampFilter10() {
146 Map<FilterKey, Filter> filterMap = new HashMap<>();
148 new FilterBuilder().setProperty("timestamp").setFiltervalue("<=2022-01-01T00:00:00.000Z").build();
149 filterMap.put(filter.key(), filter);
150 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
151 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
152 final String sql = query.toSql();
153 assertTrue(sql.contains("`timestamp`<='2022-01-01 00:00:00.000'"));
157 public void testTimestampFilter11() {
158 Map<FilterKey, Filter> filterMap = new HashMap<>();
160 new FilterBuilder().setProperty("timestamp").setFiltervalue("<=2022-01-01T00:00:00.000222Z").build();
161 filterMap.put(filter.key(), filter);
162 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
163 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
164 final String sql = query.toSql();
165 assertTrue(sql.contains("`timestamp`<='2022-01-01 00:00:00.000'"));
169 public void testSelectForFilterValues() {
170 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
171 .setFilter(YangToolsMapperHelper.toMap(Arrays.asList(
172 new FilterBuilder().setProperty("id").setFiltervalues(Arrays.asList("das", "das2")).build())))
173 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
175 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
176 System.out.println(query.toSql());
179 public void testSelectForFilterValues2() {
180 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
181 .setFilter(YangToolsMapperHelper.toMap(Arrays.asList(
182 new FilterBuilder().setProperty("id").setFiltervalue("*").build())))
183 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
185 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
186 System.out.println(query.toSql());
187 assertFalse(query.toSql().contains("RLIKE"));
190 public void testSelectForFilterValues3() {
191 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
192 .setFilter(YangToolsMapperHelper.toMap(Arrays.asList(
193 new FilterBuilder().setProperty("id").setFiltervalues(Arrays.asList("*","abc")).build())))
194 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
196 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
197 System.out.println(query.toSql());
198 assertFalse(query.toSql().contains("RLIKE"));
201 public void testSelectForFilterValues4() {
202 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
203 .setFilter(YangToolsMapperHelper.toMap(Arrays.asList(
204 new FilterBuilder().setProperty("id").setFiltervalues(Arrays.asList("abc")).build(),
205 new FilterBuilder().setProperty("node-id").setFiltervalues(Arrays.asList("*")).build())))
206 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
208 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
209 System.out.println(query.toSql());
210 assertFalse(query.toSql().contains("RLIKE"));
213 public void testCount() {
214 CountQuery query = new CountQuery(Entity.Eventlog, TestMariaDataProvider.createInput(1, 20));
215 String sQuery = query.toSql();
216 assertNotNull(sQuery);
217 assertTrue(sQuery.contains("*") && sQuery.contains("COUNT") && sQuery.contains(Entity.Eventlog.getName()));
219 query = new CountQuery(Entity.Eventlog, TestMariaDataProvider.createInput("node-id","abc",1, 20));
220 sQuery = query.toSql();
221 assertNotNull(sQuery);
222 assertTrue(sQuery.contains("node-id") && sQuery.contains("COUNT") && sQuery.contains(Entity.Eventlog.getName()));