24347c7db545e28871668862df4043a188392a2a
[ccsdk/features.git] / sdnr / wt / data-provider / dblib / src / test / java / org / onap / ccsdk / features / sdnr / wt / dataprovider / dblib / test / TestQuerySyntax.java
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.assertTrue;
26 import java.util.Arrays;
27 import java.util.HashMap;
28 import java.util.Map;
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;
40
41 public class TestQuerySyntax {
42
43
44     private static final String TABLENAME1 = "table1";
45     private static final String CONTROLLERID = "controllerid1";
46
47     @Test
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'"));
57     }
58
59     @Test
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'"));
68     }
69
70     @Test
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'"));
79
80     }
81
82     @Test
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'"));
91     }
92
93     @Test
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'"));
102     }
103
104     @Test
105     public void testTimestampFilter6() {
106         Map<FilterKey, Filter> filterMap = new HashMap<>();
107         Filter filter =
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'"));
114     }
115
116     @Test
117     public void testTimestampFilter8() {
118         Map<FilterKey, Filter> filterMap = new HashMap<>();
119         Filter filter =
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'"));
126     }
127
128     @Test
129     public void testTimestampFilter9() {
130         Map<FilterKey, Filter> filterMap = new HashMap<>();
131         Filter filter =
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'"));
138     }
139
140     @Test
141     public void testTimestampFilter10() {
142         Map<FilterKey, Filter> filterMap = new HashMap<>();
143         Filter filter =
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'"));
150     }
151
152     @Test
153     public void testTimestampFilter11() {
154         Map<FilterKey, Filter> filterMap = new HashMap<>();
155         Filter filter =
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'"));
162     }
163
164     @Test
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())
170                 .build();
171         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
172         System.out.println(query.toSql());
173     }
174     @Test
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())
180                 .build();
181         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
182         System.out.println(query.toSql());
183         assertFalse(query.toSql().contains("RLIKE"));
184     }
185     @Test
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())
191                 .build();
192         SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID);
193         System.out.println(query.toSql());
194         assertFalse(query.toSql().contains("RLIKE"));
195     }
196 }