Update the dependencies to use project version
[aai/sparky-be.git] / src / test / java / org / onap / aai / sparky / synchronizer / config / SynchronizerConfigurationTest.java
1 package org.onap.aai.sparky.synchronizer.config;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5
6 import java.util.Calendar;
7 import java.util.Locale;
8 import java.util.Properties;
9 import java.util.TimeZone;
10
11 import org.junit.Before;
12 import org.junit.Test;
13
14 public class SynchronizerConfigurationTest {
15
16   private SynchronizerConfiguration config;
17
18   private Properties generateTestProperties() {
19
20     Properties props = new Properties();
21
22     props.put("synchronizer.syncTask.initialDelayInMs", "60000");
23     props.put("synchronizer.syncTask.taskFrequencyInDay", "2");
24     props.put("synchronizer.syncTask.startTimestamp", "05:00:00 UTC+00:00");
25     props.put("synchronizer.historicalEntitySummarizerEnabled", "true");
26     props.put("synchronizer.historicalEntitySummarizedFrequencyInMinutes", "5");
27     props.put("synchronizer.resolver.progressLogFrequencyInMs", "60000");
28     props.put("synchronizer.resolver.queueMonitorFrequencyInMs", "1000");
29     props.put("synchronizer.resolver.displayVerboseQueueManagerStats", "false");
30
31     props.put("synchronizer.indexIntegrityValidator.enabled", "false");
32     props.put("synchronizer.indexIntegrityValidatorFrequencyInMs", "3600000");
33     props.put("synchronizer.scrollContextTimeToLiveInMinutes", "5");
34     props.put("synchronizer.numScrollContextItemsToRetrievePerRequest", "5000");
35     props.put("synchronizer.suppressResourceNotFoundErrors", "true");
36     props.put("synchronizer.applyNodesOnlyModifier", "false");
37     props.put("synchronizer.autosuggestSynchronizationEnabled", "true");
38
39     return props;
40   }
41
42
43   @Before
44   public void init() throws Exception {
45
46     config = new SynchronizerConfiguration(generateTestProperties());
47
48   }
49
50   @Test
51   public void validateAccessors() {
52
53     assertEquals(60000, config.getSyncTaskInitialDelayInMs());
54     assertEquals(2, config.getSyncTaskFrequencyInDay());
55     assertEquals("05:00:00 UTC+00:00", config.getSyncTaskStartTime());
56     assertEquals(5, config.getSyncTaskStartTimeHr());
57     assertEquals(0, config.getSyncTaskStartTimeMin());
58     assertEquals(0, config.getSyncTaskStartTimeSec());
59     assertEquals(true, config.isAutosuggestSynchronizationEnabled());
60     assertEquals(false, config.isConfigDisabledForInitialSync());
61     assertEquals(true, config.isConfigOkForPeriodicSync());
62     assertEquals(true, config.isConfigOkForStartupSync());
63     assertEquals(false, config.isDisplayVerboseQueueManagerStats());
64     assertEquals(false, config.isIndexIntegrityValidatorEnabled());
65     assertEquals(false, config.isNodesOnlyModifierEnabled());
66     assertEquals(true, config.isResourceNotFoundErrorsSupressed());
67     assertEquals(5000, config.getNumScrollContextItemsToRetrievePerRequest());
68     assertEquals(5, config.getScrollContextTimeToLiveInMinutes());
69     assertEquals("GMT+00:00", config.getSyncTaskStartTimeTimeZone());
70     assertEquals(0, config.getSyncTaskFrequencyInMs());
71     assertEquals(60000, config.getResolverProgressLogFrequencyInMs());
72     assertEquals(1000, config.getResolverQueueMonitorFrequencyInMs());
73     assertEquals(3600000, config.getIndexIntegrityValidatorFrequencyInMs());
74     assertTrue(config.toString().startsWith("SynchronizerConfiguration"));
75
76
77     config.setSyncTaskInitialDelayInMs(1234);
78     assertEquals(1234, config.getSyncTaskInitialDelayInMs());
79
80     config.setSyncTaskFrequencyInDay(5);
81     assertEquals(5, config.getSyncTaskFrequencyInDay());
82     config.setSyncTaskStartTime("06:10:22 UTC+00:00");
83     assertEquals("06:10:22 UTC+00:00", config.getSyncTaskStartTime());
84
85     config.setSyncTaskStartTimeHr(6);
86     assertEquals(6, config.getSyncTaskStartTimeHr());
87
88     config.setSyncTaskStartTimeMin(10);
89     assertEquals(10, config.getSyncTaskStartTimeMin());
90
91     config.setSyncTaskStartTimeSec(22);
92     assertEquals(22, config.getSyncTaskStartTimeSec());
93
94     config.setAutosuggestSynchronizationEnabled(false);
95     assertEquals(false, config.isAutosuggestSynchronizationEnabled());
96
97     config.setDisplayVerboseQueueManagerStats(true);
98     assertEquals(true, config.isDisplayVerboseQueueManagerStats());
99
100
101     config.setIndexIntegrityValidatorEnabled(true);
102     assertEquals(true, config.isIndexIntegrityValidatorEnabled());
103
104     config.setNodesOnlyModifierEnabled(true);
105     assertEquals(true, config.isNodesOnlyModifierEnabled());
106
107     config.setResourceNotFoundErrorsSupressed(false);
108     assertEquals(false, config.isResourceNotFoundErrorsSupressed());
109
110     config.setNumScrollContextItemsToRetrievePerRequest(1234);
111     assertEquals(1234, config.getNumScrollContextItemsToRetrievePerRequest());
112
113     config.setScrollContextTimeToLiveInMinutes(11);
114     assertEquals(11, config.getScrollContextTimeToLiveInMinutes());
115
116
117     config.setSyncTaskStartTimeTimeZone("EST");
118     assertEquals("EST", config.getSyncTaskStartTimeTimeZone());
119
120     config.setSyncTaskFrequencyInMs(1221);
121     assertEquals(1221, config.getSyncTaskFrequencyInMs());
122
123     config.setResolverProgressLogFrequencyInMs(1111);
124     assertEquals(1111, config.getResolverProgressLogFrequencyInMs());
125
126     config.setResolverQueueMonitorFrequencyInMs(1111);
127     assertEquals(1111, config.getResolverQueueMonitorFrequencyInMs());
128
129     config.setIndexIntegrityValidatorFrequencyInMs(5555);
130     assertEquals(5555, config.getIndexIntegrityValidatorFrequencyInMs());
131
132     config.setConfigOkForPeriodicSync(false);
133     assertEquals(false, config.isConfigOkForPeriodicSync());
134
135     config.setConfigOkForStartupSync(false);
136     assertEquals(false, config.isConfigOkForStartupSync());
137
138
139   }
140
141   @Test
142   public void validateFirstSyncTimeCalculation_taskFrequencyZeroDays() {
143
144     Calendar syncThresholdTime = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.CANADA);
145
146     // set year, month, day, hour, minute, second
147     syncThresholdTime.set(2017, 2, 1, 0, 0, 0); // 00:00 on 1-Feb-2017
148
149
150     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.CANADA);
151
152     // set year, month, day, hour, minute, second
153     timeNow.set(2017, 2, 1, 0, 0, 0); // 00:00 on 1-Feb-2017
154
155     assertEquals(0, config.getNextSyncTime(syncThresholdTime, timeNow.getTimeInMillis(), 0));
156
157   }
158
159   @Test
160   public void validateFirstSyncTimeCalculation_timeNowLessThanSyncTimeBoundary() {
161
162     Calendar syncThresholdTime = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.CANADA);
163
164     // 06:00 on 1-Feb-2017
165     syncThresholdTime.set(2017, 2, 1, 6, 0, 0);
166
167     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.CANADA);
168
169     // set year, month, day, hour, minute, second
170     timeNow.set(2017, 2, 1, 0, 0, 0); // 00:00 on 1-Feb-2017
171
172     // First sync time is the 06:00 am threshold time
173     assertEquals(syncThresholdTime.getTimeInMillis(),
174         config.getNextSyncTime(syncThresholdTime, timeNow.getTimeInMillis(), 1 * 86400));
175
176   }
177
178   @Test
179   public void validateFirstSyncTimeCalculation_timeNowEqualsSyncTimeBoundary() {
180
181     Calendar syncThresholdTime = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.CANADA);
182
183     // 06:00 on 1-Feb-2017
184     syncThresholdTime.set(2017, 2, 1, 6, 0, 0);
185
186     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.CANADA);
187
188     // set year, month, day, hour, minute, second
189     timeNow.set(2017, 2, 1, 6, 0, 0); // 00:00 on 1-Feb-2017
190
191     // First sync time is the 06:00 am threshold time
192     // assertEquals( (syncThresholdTime.getTimeInMillis()/1000),
193     // (config.getNextSyncTime(syncThresholdTime, timeNow.getTimeInMillis(), 1*86400)/1000));
194
195   }
196
197   @Test
198   public void validateFirstSyncTimeCalculation_timeNowGreaterThanSyncTimeBoundary() {
199
200     Calendar syncThresholdTime = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.CANADA);
201
202     // 06:00 on 1-Feb-2017
203     syncThresholdTime.set(2017, 2, 1, 6, 0, 0);
204
205     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.CANADA);
206
207     // set year, month, day, hour, minute, second
208     timeNow.set(2017, 2, 1, 8, 0, 0); // 00:00 on 1-Feb-2017
209
210     // First sync time is 1 full sync period past the sync threshold time
211     assertEquals(86400000 + syncThresholdTime.getTimeInMillis(),
212         config.getNextSyncTime(syncThresholdTime, timeNow.getTimeInMillis(), 1 * 86400));
213
214   }
215
216   /*
217    * @Test public void validateDefaultPeriodicInitialSyncDelay_dailySync_timeNowAtMidnight() {
218    * 
219    * config.setSyncTaskStartTimeTimeZone("EST"); config.setSyncTaskStartTimeHr(6);
220    * config.setSyncTaskStartTimeMin(0); config.setSyncTaskStartTimeSec(0);
221    * config.setSyncTaskFrequencyInDay(1); config.setSyncTaskInitialDelayInMs(60000);
222    * 
223    * Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
224    * 
225    * // set year, month, day, hour, minute, second timeNow.set(Calendar.AM_PM, Calendar.AM);
226    * timeNow.set(Calendar.HOUR, 0); timeNow.set(Calendar.MINUTE, 0); timeNow.set(Calendar.SECOND,
227    * 0);
228    * 
229    * // First sync time is 6 hours from midnight assertEquals( 6*3600*1000,
230    * config.getDefaultInitialSyncDelayInMs(timeNow));
231    * 
232    * }
233    */
234
235   @Test
236   public void validateDefaultPeriodicInitialSyncDelay_dailySync_timeNowAt4AM() {
237
238     config.setSyncTaskStartTimeTimeZone("EST");
239     config.setSyncTaskStartTimeHr(6);
240     config.setSyncTaskStartTimeMin(0);
241     config.setSyncTaskStartTimeSec(0);
242     config.setSyncTaskFrequencyInDay(1);
243     config.setSyncTaskInitialDelayInMs(60000);
244
245     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
246
247     // set year, month, day, hour, minute, second
248     timeNow.set(Calendar.AM_PM, Calendar.AM);
249     timeNow.set(Calendar.HOUR, 4);
250     timeNow.set(Calendar.MINUTE, 0);
251     timeNow.set(Calendar.SECOND, 0);
252
253     // round time to minutes to avoid millisecond alignment variance
254     assertEquals(2 * 3600, (config.getDefaultInitialSyncDelayInMs(timeNow)) / 1000);
255
256   }
257
258   @Test
259   public void validateDefaultPeriodicInitialSyncDelay_dailySync_timeNowAt6AM() {
260
261     config.setSyncTaskStartTimeTimeZone("EST");
262     config.setSyncTaskStartTimeHr(6);
263     config.setSyncTaskStartTimeMin(0);
264     config.setSyncTaskStartTimeSec(0);
265     config.setSyncTaskFrequencyInDay(1);
266     config.setSyncTaskInitialDelayInMs(60000);
267
268     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
269
270     // set year, month, day, hour, minute, second
271     timeNow.set(Calendar.AM_PM, Calendar.AM);
272     timeNow.set(Calendar.HOUR, 6);
273     timeNow.set(Calendar.MINUTE, 0);
274     timeNow.set(Calendar.SECOND, 0);
275
276     // First sync time is now with 60 seconds from now
277     assertEquals(60000, config.getDefaultInitialSyncDelayInMs(timeNow));
278
279   }
280
281   @Test
282   public void validateDefaultPeriodicInitialSyncDelay_dailySync_timeNowAt10PM() {
283
284     config.setSyncTaskStartTimeTimeZone("EST");
285     config.setSyncTaskStartTimeHr(6);
286     config.setSyncTaskStartTimeMin(0);
287     config.setSyncTaskStartTimeSec(0);
288     config.setSyncTaskFrequencyInDay(1);
289     config.setSyncTaskInitialDelayInMs(60000);
290
291     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
292
293     // set year, month, day, hour, minute, second
294     timeNow.set(Calendar.AM_PM, Calendar.PM);
295     timeNow.set(Calendar.HOUR, 10);
296     timeNow.set(Calendar.MINUTE, 0);
297     timeNow.set(Calendar.SECOND, 0);
298
299     // First sync time is now 1 sync period delayed. The time delay before
300     // the initial sync should now be 8 hours, assuming 10PM is the current time.
301     assertEquals(8 * 3600, (config.getDefaultInitialSyncDelayInMs(timeNow) / 1000));
302
303   }
304
305   /*
306    * @Test public void validateDefaultPeriodicInitialSyncDelay_weeklySync_timeNowAtMidnight() {
307    * 
308    * config.setSyncTaskStartTimeTimeZone("EST"); config.setSyncTaskStartTimeHr(6);
309    * config.setSyncTaskStartTimeMin(0); config.setSyncTaskStartTimeSec(0);
310    * config.setSyncTaskFrequencyInDay(7); config.setSyncTaskInitialDelayInMs(60000);
311    * 
312    * Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
313    * 
314    * // set year, month, day, hour, minute, second timeNow.set(Calendar.AM_PM, Calendar.AM);
315    * timeNow.set(Calendar.HOUR, 0); timeNow.set(Calendar.MINUTE, 0); timeNow.set(Calendar.SECOND,
316    * 0);
317    * 
318    * // First sync time is 6 hours from midnight assertTrue(6*3600*1000 >=
319    * config.getDefaultInitialSyncDelayInMs(timeNow));
320    * 
321    * }
322    */
323
324   @Test
325   public void validateDefaultPeriodicInitialSyncDelay_weeklySync_timeNowAt4AM() {
326
327     config.setSyncTaskStartTimeTimeZone("EST");
328     config.setSyncTaskStartTimeHr(6);
329     config.setSyncTaskStartTimeMin(0);
330     config.setSyncTaskStartTimeSec(0);
331     config.setSyncTaskFrequencyInDay(7);
332     config.setSyncTaskInitialDelayInMs(60000);
333
334     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
335
336     // set year, month, day, hour, minute, second
337     timeNow.set(Calendar.AM_PM, Calendar.AM);
338     timeNow.set(Calendar.HOUR, 4);
339     timeNow.set(Calendar.MINUTE, 0);
340     timeNow.set(Calendar.SECOND, 0);
341
342     // round time to minutes to avoid millisecond alignment variance
343     assertEquals(2 * 3600, (config.getDefaultInitialSyncDelayInMs(timeNow)) / 1000);
344
345   }
346
347   @Test
348   public void validateDefaultPeriodicInitialSyncDelay_weeklySync_timeNowAt6AM() {
349
350     config.setSyncTaskStartTimeTimeZone("EST");
351     config.setSyncTaskStartTimeHr(6);
352     config.setSyncTaskStartTimeMin(0);
353     config.setSyncTaskStartTimeSec(0);
354     config.setSyncTaskFrequencyInDay(7);
355     config.setSyncTaskInitialDelayInMs(60000);
356
357     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
358
359     // set year, month, day, hour, minute, second
360     timeNow.set(Calendar.AM_PM, Calendar.AM);
361     timeNow.set(Calendar.HOUR, 6);
362     timeNow.set(Calendar.MINUTE, 0);
363     timeNow.set(Calendar.SECOND, 0);
364
365     // First sync time is now with 60 seconds from now
366     assertEquals(60000, config.getDefaultInitialSyncDelayInMs(timeNow));
367
368   }
369
370   @Test
371   public void validateDefaultPeriodicInitialSyncDelay_weeklySync_timeNowAt10PM() {
372
373     config.setSyncTaskStartTimeTimeZone("EST");
374     config.setSyncTaskStartTimeHr(6);
375     config.setSyncTaskStartTimeMin(0);
376     config.setSyncTaskStartTimeSec(0);
377     config.setSyncTaskFrequencyInDay(7);
378     config.setSyncTaskInitialDelayInMs(60000);
379
380     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
381
382     // set year, month, day, hour, minute, second
383     timeNow.set(Calendar.AM_PM, Calendar.PM);
384     timeNow.set(Calendar.HOUR, 10);
385     timeNow.set(Calendar.MINUTE, 0);
386     timeNow.set(Calendar.SECOND, 0);
387
388     // First sync time is now 1 sync period delayed. The time delay before
389     // the initial sync should now be 8 hours + 24*6 days, assuming 10PM is the current time.
390     assertEquals((8 + (6 * 24)) * 3600, (config.getDefaultInitialSyncDelayInMs(timeNow) / 1000));
391
392   }
393
394
395 }