Increase junit coverage
[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(), config.getNextSyncTime(syncThresholdTime, timeNow.getTimeInMillis(), 1*86400));
174     
175   }
176   
177   @Test
178   public void validateFirstSyncTimeCalculation_timeNowEqualsSyncTimeBoundary() {
179     
180     Calendar syncThresholdTime = Calendar.getInstance(TimeZone.getTimeZone("EST"),Locale.CANADA);
181
182     // 06:00 on 1-Feb-2017
183     syncThresholdTime.set(2017,2,1,6,0,0);    
184     
185     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"),Locale.CANADA);
186
187     // set year, month, day, hour, minute, second
188     timeNow.set(2017,2,1,6,0,0);  // 00:00 on 1-Feb-2017
189     
190     // First sync time is the 06:00 am threshold time
191     assertEquals( (syncThresholdTime.getTimeInMillis()/1000), (config.getNextSyncTime(syncThresholdTime, timeNow.getTimeInMillis(), 1*86400)/1000));
192     
193   }
194   
195   @Test
196   public void validateFirstSyncTimeCalculation_timeNowGreaterThanSyncTimeBoundary() {
197     
198     Calendar syncThresholdTime = Calendar.getInstance(TimeZone.getTimeZone("EST"),Locale.CANADA);
199
200     // 06:00 on 1-Feb-2017
201     syncThresholdTime.set(2017,2,1,6,0,0);    
202     
203     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"),Locale.CANADA);
204
205     // set year, month, day, hour, minute, second
206     timeNow.set(2017,2,1,8,0,0);  // 00:00 on 1-Feb-2017
207     
208     // First sync time is 1 full sync period past the sync threshold time
209     assertEquals( 86400000 + syncThresholdTime.getTimeInMillis(), config.getNextSyncTime(syncThresholdTime, timeNow.getTimeInMillis(), 1*86400));
210     
211   }
212   
213 /*  @Test
214   public void validateDefaultPeriodicInitialSyncDelay_dailySync_timeNowAtMidnight() {
215   
216     config.setSyncTaskStartTimeTimeZone("EST");
217     config.setSyncTaskStartTimeHr(6);
218     config.setSyncTaskStartTimeMin(0);
219     config.setSyncTaskStartTimeSec(0);
220     config.setSyncTaskFrequencyInDay(1);
221     config.setSyncTaskInitialDelayInMs(60000);
222     
223     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
224
225     // set year, month, day, hour, minute, second
226     timeNow.set(Calendar.AM_PM, Calendar.AM);
227     timeNow.set(Calendar.HOUR, 0);
228     timeNow.set(Calendar.MINUTE, 0);
229     timeNow.set(Calendar.SECOND, 0);
230     
231     // First sync time is 6 hours from midnight
232     assertEquals( 6*3600*1000, config.getDefaultInitialSyncDelayInMs(timeNow));
233     
234   }*/
235   
236   @Test
237   public void validateDefaultPeriodicInitialSyncDelay_dailySync_timeNowAt4AM() {
238   
239     config.setSyncTaskStartTimeTimeZone("EST");
240     config.setSyncTaskStartTimeHr(6);
241     config.setSyncTaskStartTimeMin(0);
242     config.setSyncTaskStartTimeSec(0);
243     config.setSyncTaskFrequencyInDay(1);
244     config.setSyncTaskInitialDelayInMs(60000);
245     
246     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
247
248     // set year, month, day, hour, minute, second
249     timeNow.set(Calendar.AM_PM, Calendar.AM);
250     timeNow.set(Calendar.HOUR, 4);
251     timeNow.set(Calendar.MINUTE, 0);
252     timeNow.set(Calendar.SECOND, 0);
253     
254     // round time to minutes to avoid millisecond alignment variance
255     assertEquals(2 * 3600, (config.getDefaultInitialSyncDelayInMs(timeNow)) / 1000);
256
257   }
258   
259   @Test
260   public void validateDefaultPeriodicInitialSyncDelay_dailySync_timeNowAt6AM() {
261   
262     config.setSyncTaskStartTimeTimeZone("EST");
263     config.setSyncTaskStartTimeHr(6);
264     config.setSyncTaskStartTimeMin(0);
265     config.setSyncTaskStartTimeSec(0);
266     config.setSyncTaskFrequencyInDay(1);
267     config.setSyncTaskInitialDelayInMs(60000);
268     
269     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
270
271     // set year, month, day, hour, minute, second
272     timeNow.set(Calendar.AM_PM, Calendar.AM);
273     timeNow.set(Calendar.HOUR, 6);
274     timeNow.set(Calendar.MINUTE, 0);
275     timeNow.set(Calendar.SECOND, 0);
276     
277     // First sync time is now with 60 seconds from now 
278     assertEquals( 60000, config.getDefaultInitialSyncDelayInMs(timeNow));
279     
280   }
281   
282   @Test
283   public void validateDefaultPeriodicInitialSyncDelay_dailySync_timeNowAt10PM() {
284   
285     config.setSyncTaskStartTimeTimeZone("EST");
286     config.setSyncTaskStartTimeHr(6);
287     config.setSyncTaskStartTimeMin(0);
288     config.setSyncTaskStartTimeSec(0);
289     config.setSyncTaskFrequencyInDay(1);
290     config.setSyncTaskInitialDelayInMs(60000);
291     
292     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
293
294     // set year, month, day, hour, minute, second
295     timeNow.set(Calendar.AM_PM, Calendar.PM);
296     timeNow.set(Calendar.HOUR, 10);
297     timeNow.set(Calendar.MINUTE, 0);
298     timeNow.set(Calendar.SECOND, 0);
299     
300     // First sync time is now 1 sync period delayed.  The time delay before 
301     // the initial sync should now be 8 hours, assuming 10PM is the current time.
302     assertEquals( 8*3600, (config.getDefaultInitialSyncDelayInMs(timeNow)/1000));
303     
304   }
305   
306 /*  @Test
307   public void validateDefaultPeriodicInitialSyncDelay_weeklySync_timeNowAtMidnight() {
308   
309     config.setSyncTaskStartTimeTimeZone("EST");
310     config.setSyncTaskStartTimeHr(6);
311     config.setSyncTaskStartTimeMin(0);
312     config.setSyncTaskStartTimeSec(0);
313     config.setSyncTaskFrequencyInDay(7);
314     config.setSyncTaskInitialDelayInMs(60000);
315     
316     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
317
318     // set year, month, day, hour, minute, second
319     timeNow.set(Calendar.AM_PM, Calendar.AM);
320     timeNow.set(Calendar.HOUR, 0);
321     timeNow.set(Calendar.MINUTE, 0);
322     timeNow.set(Calendar.SECOND, 0);
323     
324     // First sync time is 6 hours from midnight
325     assertTrue(6*3600*1000 >= config.getDefaultInitialSyncDelayInMs(timeNow));
326     
327   }*/
328   
329   @Test
330   public void validateDefaultPeriodicInitialSyncDelay_weeklySync_timeNowAt4AM() {
331   
332     config.setSyncTaskStartTimeTimeZone("EST");
333     config.setSyncTaskStartTimeHr(6);
334     config.setSyncTaskStartTimeMin(0);
335     config.setSyncTaskStartTimeSec(0);
336     config.setSyncTaskFrequencyInDay(7);
337     config.setSyncTaskInitialDelayInMs(60000);
338     
339     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
340
341     // set year, month, day, hour, minute, second
342     timeNow.set(Calendar.AM_PM, Calendar.AM);
343     timeNow.set(Calendar.HOUR, 4);
344     timeNow.set(Calendar.MINUTE, 0);
345     timeNow.set(Calendar.SECOND, 0);
346     
347     // round time to minutes to avoid millisecond alignment variance
348     assertEquals(2 * 3600, (config.getDefaultInitialSyncDelayInMs(timeNow)) / 1000);
349
350   }
351   
352   @Test
353   public void validateDefaultPeriodicInitialSyncDelay_weeklySync_timeNowAt6AM() {
354   
355     config.setSyncTaskStartTimeTimeZone("EST");
356     config.setSyncTaskStartTimeHr(6);
357     config.setSyncTaskStartTimeMin(0);
358     config.setSyncTaskStartTimeSec(0);
359     config.setSyncTaskFrequencyInDay(7);
360     config.setSyncTaskInitialDelayInMs(60000);
361     
362     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
363
364     // set year, month, day, hour, minute, second
365     timeNow.set(Calendar.AM_PM, Calendar.AM);
366     timeNow.set(Calendar.HOUR, 6);
367     timeNow.set(Calendar.MINUTE, 0);
368     timeNow.set(Calendar.SECOND, 0);
369     
370     // First sync time is now with 60 seconds from now 
371     assertEquals( 60000, config.getDefaultInitialSyncDelayInMs(timeNow));
372     
373   }
374   
375   @Test
376   public void validateDefaultPeriodicInitialSyncDelay_weeklySync_timeNowAt10PM() {
377   
378     config.setSyncTaskStartTimeTimeZone("EST");
379     config.setSyncTaskStartTimeHr(6);
380     config.setSyncTaskStartTimeMin(0);
381     config.setSyncTaskStartTimeSec(0);
382     config.setSyncTaskFrequencyInDay(7);
383     config.setSyncTaskInitialDelayInMs(60000);
384     
385     Calendar timeNow = Calendar.getInstance(TimeZone.getTimeZone("EST"));
386
387     // set year, month, day, hour, minute, second
388     timeNow.set(Calendar.AM_PM, Calendar.PM);
389     timeNow.set(Calendar.HOUR, 10);
390     timeNow.set(Calendar.MINUTE, 0);
391     timeNow.set(Calendar.SECOND, 0);
392     
393     // First sync time is now 1 sync period delayed.  The time delay before 
394     // the initial sync should now be 8 hours + 24*6 days, assuming 10PM is the current time.
395     assertEquals( (8+(6*24))*3600, (config.getDefaultInitialSyncDelayInMs(timeNow)/1000));
396     
397   }
398   
399   
400 }