7dd2464f9979073ae54ccb9d00bc9f5fb0303253
[ccsdk/features.git] / sdnr / wt / data-provider / dblib / src / test / java / org / onap / ccsdk / features / sdnr / wt / dataprovider / dblib / test / TestQuerySyntax.java
1 /* ============LICENSE_START=======================================================
2  * ONAP : ccsdk features
3  * ================================================================================
4  * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
5  * All rights reserved.
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
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  *
20  */
21 package org.onap.ccsdk.features.sdnr.wt.dataprovider.dblib.test;
22
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;
28 import java.util.Map;
29 import java.util.Set;
30
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;
45
46 public class TestQuerySyntax {
47
48
49     private static final String TABLENAME1 = "table1";
50     private static final String CONTROLLERID = "controllerid1";
51
52     @Test
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'"));
62     }
63
64     @Test
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'"));
73     }
74
75     @Test
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'"));
84
85     }
86
87     @Test
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'"));
96     }
97
98     @Test
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'"));
107     }
108
109     @Test
110     public void testTimestampFilter6() {
111         Map<FilterKey, Filter> filterMap = new HashMap<>();
112         Filter filter =
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'"));
119     }
120
121     @Test
122     public void testTimestampFilter8() {
123         Map<FilterKey, Filter> filterMap = new HashMap<>();
124         Filter filter =
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'"));
131     }
132
133     @Test
134     public void testTimestampFilter9() {
135         Map<FilterKey, Filter> filterMap = new HashMap<>();
136         Filter filter =
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'"));
143     }
144
145     @Test
146     public void testTimestampFilter10() {
147         Map<FilterKey, Filter> filterMap = new HashMap<>();
148         Filter filter =
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'"));
155     }
156
157     @Test
158     public void testTimestampFilter11() {
159         Map<FilterKey, Filter> filterMap = new HashMap<>();
160         Filter filter =
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'"));
167     }
168
169     @Test
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())
175                 .build();
176         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
177         System.out.println(query.toSql());
178     }
179     @Test
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())
185                 .build();
186         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
187         System.out.println(query.toSql());
188         assertFalse(query.toSql().contains("RLIKE"));
189     }
190     @Test
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())
196                 .build();
197         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
198         System.out.println(query.toSql());
199         assertFalse(query.toSql().contains("RLIKE"));
200     }
201     @Test
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())
208                 .build();
209         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
210         System.out.println(query.toSql());
211         assertFalse(query.toSql().contains("RLIKE"));
212     }
213     @Test
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())
220                 .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(".*"));
225
226     }
227     @Test
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()));
233
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()));
238
239
240     }
241 }