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.assertTrue;
26 import java.util.Arrays;
27 import java.util.HashMap;
29 import org.junit.Test;
30 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.SelectQuery;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListInputBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryInputBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Filter;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterKey;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.PaginationBuilder;
38 import org.opendaylight.yangtools.yang.common.Uint32;
39 import org.opendaylight.yangtools.yang.common.Uint64;
41 public class TestQuerySyntax {
44 private static final String TABLENAME1 = "table1";
45 private static final String CONTROLLERID = "controllerid1";
48 public void testTimestampFilter() {
49 Map<FilterKey, Filter> filterMap = new HashMap<>();
50 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue("2021*").build();
51 filterMap.put(filter.key(), filter);
52 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
53 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
54 final String sql = query.toSql();
55 assertTrue(sql.contains("`timestamp`>='2021-01-01 00:00:00.000'"));
56 assertTrue(sql.contains("`timestamp`<'2022-01-01 00:00:00.0'"));
60 public void testTimestampFilter2() {
61 Map<FilterKey, Filter> filterMap = new HashMap<>();
62 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue(">2021").build();
63 filterMap.put(filter.key(), filter);
64 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
65 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
66 final String sql = query.toSql();
67 assertTrue(sql.contains("`timestamp`>='2022-01-01 00:00:00.0'"));
71 public void testTimestampFilter3() {
72 Map<FilterKey, Filter> filterMap = new HashMap<>();
73 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue(">=2021").build();
74 filterMap.put(filter.key(), filter);
75 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
76 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
77 final String sql = query.toSql();
78 assertTrue(sql.contains("`timestamp`>='2021-01-01 00:00:00.000'"));
83 public void testTimestampFilter4() {
84 Map<FilterKey, Filter> filterMap = new HashMap<>();
85 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue("<2021").build();
86 filterMap.put(filter.key(), filter);
87 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
88 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
89 final String sql = query.toSql();
90 assertTrue(sql.contains("`timestamp`<'2021-01-01 00:00:00.000'"));
94 public void testTimestampFilter5() {
95 Map<FilterKey, Filter> filterMap = new HashMap<>();
96 Filter filter = new FilterBuilder().setProperty("timestamp").setFiltervalue("<=2021").build();
97 filterMap.put(filter.key(), filter);
98 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
99 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
100 final String sql = query.toSql();
101 assertTrue(sql.contains("`timestamp`<'2022-01-01 00:00:00.0'"));
105 public void testTimestampFilter6() {
106 Map<FilterKey, Filter> filterMap = new HashMap<>();
108 new FilterBuilder().setProperty("timestamp").setFiltervalue(">=2022-01-01T00:00:00.000Z").build();
109 filterMap.put(filter.key(), filter);
110 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
111 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
112 final String sql = query.toSql();
113 assertTrue(sql.contains("`timestamp`>='2022-01-01 00:00:00.000'"));
117 public void testTimestampFilter8() {
118 Map<FilterKey, Filter> filterMap = new HashMap<>();
120 new FilterBuilder().setProperty("timestamp").setFiltervalue(">2022-01-01T00:00:00.000Z").build();
121 filterMap.put(filter.key(), filter);
122 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
123 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
124 final String sql = query.toSql();
125 assertTrue(sql.contains("`timestamp`>'2022-01-01 00:00:00.000'"));
129 public void testTimestampFilter9() {
130 Map<FilterKey, Filter> filterMap = new HashMap<>();
132 new FilterBuilder().setProperty("timestamp").setFiltervalue("<2022-01-01T00:00:00.000Z").build();
133 filterMap.put(filter.key(), filter);
134 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
135 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
136 final String sql = query.toSql();
137 assertTrue(sql.contains("`timestamp`<'2022-01-01 00:00:00.000'"));
141 public void testTimestampFilter10() {
142 Map<FilterKey, Filter> filterMap = new HashMap<>();
144 new FilterBuilder().setProperty("timestamp").setFiltervalue("<=2022-01-01T00:00:00.000Z").build();
145 filterMap.put(filter.key(), filter);
146 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
147 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
148 final String sql = query.toSql();
149 assertTrue(sql.contains("`timestamp`<='2022-01-01 00:00:00.000'"));
153 public void testTimestampFilter11() {
154 Map<FilterKey, Filter> filterMap = new HashMap<>();
156 new FilterBuilder().setProperty("timestamp").setFiltervalue("<=2022-01-01T00:00:00.000222Z").build();
157 filterMap.put(filter.key(), filter);
158 EntityInput input = new ReadEventlogListInputBuilder().setFilter(filterMap).build();
159 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
160 final String sql = query.toSql();
161 assertTrue(sql.contains("`timestamp`<='2022-01-01 00:00:00.000'"));
165 public void testSelectForFilterValues() {
166 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
167 .setFilter(Arrays.asList(
168 new FilterBuilder().setProperty("id").setFiltervalues(Arrays.asList("das", "das2")).build()))
169 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
171 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
172 System.out.println(query.toSql());
175 public void testSelectForFilterValues2() {
176 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
177 .setFilter(Arrays.asList(
178 new FilterBuilder().setProperty("id").setFiltervalue("*").build()))
179 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
181 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
182 System.out.println(query.toSql());
183 assertFalse(query.toSql().contains("RLIKE"));
186 public void testSelectForFilterValues3() {
187 EntityInput input = new ReadGuiCutThroughEntryInputBuilder()
188 .setFilter(Arrays.asList(
189 new FilterBuilder().setProperty("id").setFiltervalues(Arrays.asList("*","abc")).build()))
190 .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build())
192 SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
193 System.out.println(query.toSql());
194 assertFalse(query.toSql().contains("RLIKE"));