576a3825c2933e5eaf9cda68c18d4b552ec21caf
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
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
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.dblib.test;
23
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;
29 import java.util.Map;
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;
44
45 public class TestQuerySyntax {
46
47
48     private static final String TABLENAME1 = "table1";
49     private static final String CONTROLLERID = "controllerid1";
50
51     @Test
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'"));
61     }
62
63     @Test
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'"));
72     }
73
74     @Test
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'"));
83
84     }
85
86     @Test
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'"));
95     }
96
97     @Test
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'"));
106     }
107
108     @Test
109     public void testTimestampFilter6() {
110         Map<FilterKey, Filter> filterMap = new HashMap<>();
111         Filter filter =
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'"));
118     }
119
120     @Test
121     public void testTimestampFilter8() {
122         Map<FilterKey, Filter> filterMap = new HashMap<>();
123         Filter filter =
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'"));
130     }
131
132     @Test
133     public void testTimestampFilter9() {
134         Map<FilterKey, Filter> filterMap = new HashMap<>();
135         Filter filter =
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'"));
142     }
143
144     @Test
145     public void testTimestampFilter10() {
146         Map<FilterKey, Filter> filterMap = new HashMap<>();
147         Filter filter =
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'"));
154     }
155
156     @Test
157     public void testTimestampFilter11() {
158         Map<FilterKey, Filter> filterMap = new HashMap<>();
159         Filter filter =
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'"));
166     }
167
168     @Test
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())
174                 .build();
175         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
176         System.out.println(query.toSql());
177     }
178     @Test
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())
184                 .build();
185         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
186         System.out.println(query.toSql());
187         assertFalse(query.toSql().contains("RLIKE"));
188     }
189     @Test
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())
195                 .build();
196         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
197         System.out.println(query.toSql());
198         assertFalse(query.toSql().contains("RLIKE"));
199     }
200     @Test
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())
207                 .build();
208         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
209         System.out.println(query.toSql());
210         assertFalse(query.toSql().contains("RLIKE"));
211     }
212     @Test
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()));
218
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()));
223
224
225     }
226 }