diff options
author | Jerry Flood <jflood@att.com> | 2019-03-28 16:44:34 -0400 |
---|---|---|
committer | Jerry Flood <jflood@att.com> | 2019-03-28 16:44:57 -0400 |
commit | b635eba9d34b51f37670b4dc7ca1274760020c43 (patch) | |
tree | cb7bb490df6d080c9edfa17bdbc9a60a20e27d18 | |
parent | fe8c1df09a3c74321831b40f6f953016d746aa61 (diff) |
Added policy model with local policies
Issue-ID: OPTFRA-458
Change-Id: If8fedf34a0f41ae7936500f08a05259a27af6270
Signed-off-by: Jerry Flood <jflood@att.com>
10 files changed, 815 insertions, 0 deletions
diff --git a/cmso-optimizer/data/policies/Weekday_00_06.json b/cmso-optimizer/data/policies/Weekday_00_06.json new file mode 100644 index 0000000..4a14581 --- /dev/null +++ b/cmso-optimizer/data/policies/Weekday_00_06.json @@ -0,0 +1,38 @@ +{ + "service": "TimeLimitAndVerticalTopology", + "policyName": "CMSO.Weekday_00_06", + "description": "dev instance", + "templateVersion": "Dublin", + "version": "0001", + "priority": "4", + "riskType": "test", + "riskLevel": "3", + "guard": "False", + "content": { + "serviceType": "networkOnDemand", + "identity": "vnf_upgrade_policy", + "policyScope": { + "serviceType": ["networkOnDemand"], + "aicZone": [ + " " + ], + "entityType": ["vnf"] + }, + "timeSchedule": { + "allowedPeriodicTime": [ + { + "day": "weekday", + "timeRange": [ + { + "start_time": "00:00:00+00:00", + "end_time": "06:00:00+00:00" + } + ] + } + ] + }, + "nodeType": ["vnf"], + "type": "timeLimitAndVerticalTopology", + "conflictScope": "vnf_pserver" + } +}
\ No newline at end of file diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/PolicyManager.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/PolicyManager.java new file mode 100644 index 0000000..d6ae196 --- /dev/null +++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/PolicyManager.java @@ -0,0 +1,116 @@ +/* + * ============LICENSE_START============================================== + * Copyright (c) 2019 AT&T Intellectual Property. + * ======================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + * ============LICENSE_END================================================= + * + */ + +package org.onap.optf.cmso.optimizer.availability.policies; + +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import org.onap.observations.Observation; +import org.onap.optf.cmso.optimizer.availability.policies.model.Policy; +import org.onap.optf.cmso.optimizer.availability.policies.model.TimeLimitAndVerticalTopology; +import org.onap.optf.cmso.optimizer.common.LogMessages; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +@Component +public class PolicyManager { + + @Autowired + Environment env; + + public TimeLimitAndVerticalTopology getTimeLimitAndVerticalTopologyByName(String name) { + Policy policy = getPolicyForName(name); + TimeLimitAndVerticalTopology returnPolicy = null; + if (policy != null) { + ObjectMapper om = new ObjectMapper(); + try + { + returnPolicy = om.convertValue(policy.getContent(), TimeLimitAndVerticalTopology.class); + } + catch (Exception e) + { + Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + } + } + return returnPolicy; + } + + + public Policy getPolicyForName(String name) { + Policy policy = null; + try { + return getLocalPolicyForName(name); + } catch (Exception e) { + Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + } + return policy; + } + + public Policy getLocalPolicyForName(String name) { + String policyFolder = env.getProperty("cmso.local.policy.folder", "data/policies"); + Policy policy = null; + try { + if (!name.endsWith(".json")) { + name += ".json"; + } + Path path = Paths.get(policyFolder, name); + ObjectMapper om = new ObjectMapper(); + policy = om.readValue(path.toFile(), Policy.class); + } catch (Exception e) { + Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + } + return policy; + } + + public List<Policy> getSupportedPolicies() { + List<Policy> policies = new ArrayList<>(); + try { + return getLocalSupportedPolicies(); + } catch (Exception e) { + Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + } + return policies; + } + + public List<Policy> getLocalSupportedPolicies() { + String policyFolder = env.getProperty("cmso.local.policy.folder", "data/policies"); + List<Policy> policies = new ArrayList<>(); + try { + Path path = Paths.get(policyFolder); + for (File file : path.toFile().listFiles()) { + if (file.isFile()) { + Policy policy = getLocalPolicyForName(file.getName()); + if (policy != null) { + policies.add(policy); + } + } + + } + } catch (Exception e) { + Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + } + return policies; + } + +} diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/AllowedPeriodicTime.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/AllowedPeriodicTime.java new file mode 100644 index 0000000..4bc0f71 --- /dev/null +++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/AllowedPeriodicTime.java @@ -0,0 +1,65 @@ +/* + * ============LICENSE_START============================================== + * Copyright (c) 2019 AT&T Intellectual Property. + * ======================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + * ============LICENSE_END================================================= + * + */ + +package org.onap.optf.cmso.optimizer.availability.policies.model; + +import java.util.List; + +/* + +{ + "day": "weekday", + "timeRange": [ + { + "start_time": "00:00:00+00:00", + "end_time": "06:00:00+00:00" + } + ] +} + + */ +public class AllowedPeriodicTime { + + public enum Day + { + weekday("RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"), + weekend("RRULE:FREQ=WEEKLY;BYDAY=SA,SU"), + ; + private String rrule; + private Day(String rrule) {this.rrule = rrule;} + public String getRrule() {return rrule;} + + } + + private Day day; + private List<TimeRange> timeRange; + public Day getDay() { + return day; + } + public void setDay(Day day) { + this.day = day; + } + public List<TimeRange> getTimeRange() { + return timeRange; + } + public void setTimeRange(List<TimeRange> timeRange) { + this.timeRange = timeRange; + } + +} diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/Policy.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/Policy.java new file mode 100644 index 0000000..50acd9b --- /dev/null +++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/Policy.java @@ -0,0 +1,135 @@ +/* + * ============LICENSE_START============================================== + * Copyright (c) 2019 AT&T Intellectual Property. + * ======================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + * ============LICENSE_END================================================= + * + */ + +package org.onap.optf.cmso.optimizer.availability.policies.model; + +/* +{ + "service": "TimeLimitAndVerticalTopology", + "policyName": "CMSO.Weekday_00_06", + "description": "dev instance", + "templateVersion": "Dublin", + "version": "0001", + "priority": "4", + "riskType": "test", + "riskLevel": "3", + "guard": "False", + "content": { + "serviceType": "networkOnDemand", + "identity": "vnf_upgrade_policy", + "policyScope": { + "serviceType": ["networkOnDemand"], + "aicZone": [ + " " + ], + "entityType": ["vnf"] + }, + "timeSchedule": { + "allowedPeriodicTime": [ + { + "day": "weekday", + "timeRange": [ + { + "start_time": "00:00:00+00:00", + "end_time": "06:00:00+00:00" + } + ] + } + ] + }, + "nodeType": ["vnf"], + "type": "timeLimitAndVerticalTopology", + "conflictScope": "vnf_pserver" + } +} + */ +public class Policy { + + private String service; + private String policyName; + private String description; + private String templateVersion; + private String version; + private String priority; + private String riskType; + private String riskLevel; + private String guard; + private Object content; + public String getService() { + return service; + } + public void setService(String service) { + this.service = service; + } + public String getPolicyName() { + return policyName; + } + public void setPolicyName(String policyName) { + this.policyName = policyName; + } + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + public String getTemplateVersion() { + return templateVersion; + } + public void setTemplateVersion(String templateVersion) { + this.templateVersion = templateVersion; + } + public String getVersion() { + return version; + } + public void setVersion(String version) { + this.version = version; + } + public String getPriority() { + return priority; + } + public void setPriority(String priority) { + this.priority = priority; + } + public String getRiskType() { + return riskType; + } + public void setRiskType(String riskType) { + this.riskType = riskType; + } + public String getRiskLevel() { + return riskLevel; + } + public void setRiskLevel(String riskLevel) { + this.riskLevel = riskLevel; + } + public String getGuard() { + return guard; + } + public void setGuard(String guard) { + this.guard = guard; + } + public Object getContent() { + return content; + } + public void setContent(Object content) { + this.content = content; + } + +} diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/PolicyScope.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/PolicyScope.java new file mode 100644 index 0000000..d569274 --- /dev/null +++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/PolicyScope.java @@ -0,0 +1,69 @@ +/* + * ============LICENSE_START============================================== + * Copyright (c) 2019 AT&T Intellectual Property. + * ======================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + * ============LICENSE_END================================================= + * + */ + +package org.onap.optf.cmso.optimizer.availability.policies.model; + +import java.util.List; + +/* +{ + "serviceType": ["networkOnDemand"], + "aicZone": [ + " " + ], + "entityType": ["vnf"] + */ +public class PolicyScope { + + public enum ServiceType { + networkOnDemand + } + public enum EntityType { + vnf + } + + private List<String> serviceType; + private List<String> aicZone; + private List<String> entityType; + + public List<String> getServiceType() { + return serviceType; + } + + public void setServiceType(List<String> serviceType) { + this.serviceType = serviceType; + } + + public List<String> getAicZone() { + return aicZone; + } + + public void setAicZone(List<String> aicZone) { + this.aicZone = aicZone; + } + + public List<String> getEntityType() { + return entityType; + } + + public void setEntityType(List<String> entityType) { + this.entityType = entityType; + } + +} diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/TimeLimitAndVerticalTopology.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/TimeLimitAndVerticalTopology.java new file mode 100644 index 0000000..58846f4 --- /dev/null +++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/TimeLimitAndVerticalTopology.java @@ -0,0 +1,115 @@ +/* + * ============LICENSE_START============================================== + * Copyright (c) 2019 AT&T Intellectual Property. + * ======================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + * ============LICENSE_END================================================= + * + */ + +package org.onap.optf.cmso.optimizer.availability.policies.model; + +import java.util.List; + +/* +{ + "serviceType": "networkOnDemand", + "identity": "vnf_upgrade_policy", + "policyScope": { + "serviceType": ["networkOnDemand"], + "aicZone": [ + " " + ], + "entityType": ["vnf"] + }, + "timeSchedule": { + "allowedPeriodicTime": [ + { + "day": "weekday", + "timeRange": [ + { + "start_time": "00:00:00+00:00", + "end_time": "06:00:00+00:00" + } + ] + } + ] + }, + "nodeType": ["vnf"], + "type": "timeLimitAndVerticalTopology", + "conflictScope": "vnf_pserver" +} + */ + +public class TimeLimitAndVerticalTopology +{ + + public enum ConflictScope { + timeLimitAndVerticalTopology, + } + public enum Type { + vnf_pserver, + } + + private String serviceType; + private String identity; + private PolicyScope policyScope; + private TimeSchedule timeSchedule; + private List<String> nodeType; + private String type; + private String conflictScope; + + public String getServiceType() { + return serviceType; + } + public void setServiceType(String serviceType) { + this.serviceType = serviceType; + } + public String getIdentity() { + return identity; + } + public void setIdentity(String identity) { + this.identity = identity; + } + public PolicyScope getPolicyScope() { + return policyScope; + } + public void setPolicyScope(PolicyScope policyScope) { + this.policyScope = policyScope; + } + public TimeSchedule getTimeSchedule() { + return timeSchedule; + } + public void setTimeSchedule(TimeSchedule timeSchedule) { + this.timeSchedule = timeSchedule; + } + public List<String> getNodeType() { + return nodeType; + } + public void setNodeType(List<String> nodeType) { + this.nodeType = nodeType; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getConflictScope() { + return conflictScope; + } + public void setConflictScope(String conflictScope) { + this.conflictScope = conflictScope; + } + +} diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/TimeRange.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/TimeRange.java new file mode 100644 index 0000000..6b6ba0b --- /dev/null +++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/TimeRange.java @@ -0,0 +1,48 @@ +/* + * ============LICENSE_START============================================== + * Copyright (c) 2019 AT&T Intellectual Property. + * ======================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + * ============LICENSE_END================================================= + * + */ + +package org.onap.optf.cmso.optimizer.availability.policies.model; + +/* + +{ + "start_time": "00:00:00+00:00", + "end_time": "06:00:00+00:00" +} + + */ +public class TimeRange +{ + private String start_time; + private String end_time; + + public String getStart_time() { + return start_time; + } + public void setStart_time(String start_time) { + this.start_time = start_time; + } + public String getEnd_time() { + return end_time; + } + public void setEnd_time(String end_time) { + this.end_time = end_time; + } + +} diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/TimeSchedule.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/TimeSchedule.java new file mode 100644 index 0000000..4d3db2d --- /dev/null +++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/policies/model/TimeSchedule.java @@ -0,0 +1,51 @@ +/* + * ============LICENSE_START============================================== + * Copyright (c) 2019 AT&T Intellectual Property. + * ======================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + * ============LICENSE_END================================================= + * + */ + +package org.onap.optf.cmso.optimizer.availability.policies.model; + +import java.util.List; + +/* +{ + "allowedPeriodicTime": [ + { + "day": "weekday", + "timeRange": [ + { + "start_time": "00:00:00+00:00", + "end_time": "06:00:00+00:00" + } + ] + } + ] +} + */ +public class TimeSchedule { + + private List<AllowedPeriodicTime> allowedPeriodicTime; + + public List<AllowedPeriodicTime> getAllowedPeriodicTime() { + return allowedPeriodicTime; + } + + public void setAllowedPeriodicTime(List<AllowedPeriodicTime> allowedPeriodicTime) { + this.allowedPeriodicTime = allowedPeriodicTime; + } + +} diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/timewindows/RecurringWindows.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/timewindows/RecurringWindows.java new file mode 100644 index 0000000..f9704ff --- /dev/null +++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/availability/timewindows/RecurringWindows.java @@ -0,0 +1,108 @@ +/* + * ============LICENSE_START============================================== + * Copyright (c) 2019 AT&T Intellectual Property. + * ======================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + * ============LICENSE_END================================================= + * + */ + +package org.onap.optf.cmso.optimizer.availability.timewindows; + +import java.time.Instant; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import org.onap.observations.Observation; +import org.onap.optf.cmso.optimizer.availability.policies.model.AllowedPeriodicTime; +import org.onap.optf.cmso.optimizer.availability.policies.model.TimeLimitAndVerticalTopology; +import org.onap.optf.cmso.optimizer.availability.policies.model.TimeRange; +import org.onap.optf.cmso.optimizer.common.LogMessages; +import org.onap.optf.cmso.optimizer.service.rs.models.ChangeWindow; + +public class RecurringWindows { + + public static List<ChangeWindow> getAvailabilityWindowsForPolicies(List<TimeLimitAndVerticalTopology> policies, + ChangeWindow changeWindow) { + List<ChangeWindow> availableList = new ArrayList<>(); + for (TimeLimitAndVerticalTopology policy : policies) { + if (policy.getTimeSchedule() != null && policy.getTimeSchedule().getAllowedPeriodicTime() != null) { + for (AllowedPeriodicTime available : policy.getTimeSchedule().getAllowedPeriodicTime()) { + getAvailableWindowsForApt(available, changeWindow, availableList); + } + } + } + return availableList; + + } + + + // "RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR", + private static void getAvailableWindowsForApt(AllowedPeriodicTime available, ChangeWindow changeWindow, + List<ChangeWindow> availableList) { + + if (available.getDay() != null) + { + switch (available.getDay()) + { + case weekday: + case weekend: + getAvailableWindowsForAptDay(available, changeWindow, availableList); + return; + default: + + } + } + Observation.report(LogMessages.UNSUPPORTED_PERIODIC_TIME, available.toString()); + + } + // "RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR", + private static void getAvailableWindowsForAptDay(AllowedPeriodicTime available, ChangeWindow changeWindow, + List<ChangeWindow> availableList) { + try + { + List<TimeRange> ranges = available.getTimeRange(); + if (ranges.size() == 0) + { + TimeRange range = new TimeRange(); + range.setStart_time("00:00:00+00:00"); + range.setStart_time("23:59:59+00:00"); + ranges.add(range); + } + String rrule = available.getDay().getRrule(); + for (TimeRange range : ranges) + { + + Date cwStartDate =changeWindow.getStartTime(); + Date cwEndDate =changeWindow.getEndTime(); + + Instant cwStartInstant = Instant.ofEpochMilli(cwStartDate.getTime()); + Instant cwEndInstant = Instant.ofEpochMilli(cwEndDate.getTime()); + Instant startInstant = Instant.parse(range.getStart_time()); + Instant endInstant = Instant.parse(range.getEnd_time()); + if (cwStartInstant.isAfter(startInstant)) + { + // We expect this since startInstant has no date (1/1/1970) + // + } + + + } + } + catch (Exception e) + { + Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + } + } + +} diff --git a/cmso-optimizer/src/test/java/org/onap/optf/cmso/optimizer/availability/policies/PolicyManagerTest.java b/cmso-optimizer/src/test/java/org/onap/optf/cmso/optimizer/availability/policies/PolicyManagerTest.java new file mode 100644 index 0000000..7874501 --- /dev/null +++ b/cmso-optimizer/src/test/java/org/onap/optf/cmso/optimizer/availability/policies/PolicyManagerTest.java @@ -0,0 +1,70 @@ +/* + * ============LICENSE_START============================================== + * Copyright (c) 2019 AT&T Intellectual Property. + * ======================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + * ============LICENSE_END================================================= + * + */ + +package org.onap.optf.cmso.optimizer.availability.policies; +import java.util.List; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.mockito.runners.MockitoJUnitRunner; +import org.onap.optf.cmso.optimizer.availability.policies.model.Policy; +import org.onap.optf.cmso.optimizer.availability.policies.model.TimeLimitAndVerticalTopology; +import org.springframework.core.env.Environment; + +@RunWith(MockitoJUnitRunner.class) +public class PolicyManagerTest +{ + + @InjectMocks + private PolicyManager policyManager; + + @Mock + public Environment env; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + Mockito.when(env.getProperty("cmso.local.policy.folder", "data/policies")).thenReturn("data/policies"); + } + + @Test + public void getPolicyByName() { + String policyName = "Weekday_00_06"; + + String result = "CMSO.Weekday_00_06,"; + List<Policy> policies = policyManager.getSupportedPolicies(); + StringBuilder sb = new StringBuilder(); + for (Policy pol : policies) + { + sb.append(pol.getPolicyName()).append("," ); + } + System.out.println(" String result = \"" + sb.toString() + "\";"); + Assert.assertTrue(result.equals(sb.toString())); + Policy policy = policyManager.getPolicyForName(policyName); + Assert.assertTrue(policy != null); + TimeLimitAndVerticalTopology top = policyManager.getTimeLimitAndVerticalTopologyByName(policyName); + Assert.assertTrue(top != null); + + } +}
\ No newline at end of file |