ce1f1a4fa9472b7e8145202ad7a56c564b6ce596
[optf/cmso.git] /
1 /*
2  * ============LICENSE_START==============================================
3  * Copyright (c) 2019 AT&T Intellectual Property.
4  * =======================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License"); you may
6  * not use this file except in compliance with the License. You may obtain a
7  * copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing
15  * permissions and limitations under the License.
16  * ============LICENSE_END=================================================
17  *
18  */
19
20 package org.onap.optf.cmso.optimizer.availability.timewindows;
21
22 import java.time.Instant;
23 import java.util.ArrayList;
24 import java.util.Date;
25 import java.util.List;
26 import org.junit.Assert;
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.junit.runner.RunWith;
30 import org.mockito.InjectMocks;
31 import org.mockito.Mock;
32 import org.mockito.Mockito;
33 import org.mockito.MockitoAnnotations;
34 import org.mockito.runners.MockitoJUnitRunner;
35 import org.onap.optf.cmso.optimizer.availability.policies.PolicyManager;
36 import org.onap.optf.cmso.optimizer.availability.policies.model.TimeLimitAndVerticalTopology;
37 import org.onap.optf.cmso.optimizer.service.rs.models.ChangeWindow;
38 import org.springframework.core.env.Environment;
39
40 @RunWith(MockitoJUnitRunner.class)
41 public class RecurringWindowsTest {
42
43
44     @InjectMocks
45     private PolicyManager policyManager;
46
47     @Mock
48     public Environment env;
49
50     @Before
51     public void setUp() {
52         MockitoAnnotations.initMocks(this);
53         Mockito.when(env.getProperty("cmso.local.policy.folder", "data/policies")).thenReturn("data/policies");
54     }
55
56     @Test
57     public void getAvailabilityWindowsForPolicies() {
58         getAvailabilityWindowsForPolicy("Weekday_00_06", "2019-03-08T00:00:00.00Z", "2019-03-12T00:00:00.00Z", 2);
59         getAvailabilityWindowsForPolicy("EveryDay_00_06", "2019-03-08T00:00:00.00Z", "2019-03-12T00:00:00.00Z", 4);
60         getAvailabilityWindowsForPolicy("Weekend_00_06", "2019-03-08T00:00:00.00Z", "2019-03-12T00:00:00.00Z", 3);
61
62     }
63
64     private void getAvailabilityWindowsForPolicy(String policyName, String startStr, String endStr, int size) {
65         TimeLimitAndVerticalTopology top = policyManager.getTimeLimitAndVerticalTopologyByName(policyName);
66         Assert.assertTrue(top != null);
67         List<TimeLimitAndVerticalTopology> topList = new ArrayList<>();
68         topList.add(top);
69         ChangeWindow changeWindow = new ChangeWindow();
70         Instant start = Instant.parse(startStr);
71         Instant end = Instant.parse(endStr);
72         changeWindow.setStartTime(Date.from(start));
73         changeWindow.setEndTime(Date.from(end));
74         List<ChangeWindow> windows = RecurringWindows.getAvailabilityWindowsForPolicies(topList, changeWindow);
75         Assert.assertTrue(windows != null);
76         Assert.assertTrue(windows.size() == size);
77
78     }
79 }