2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.controlloop.eventmanager;
23 import static org.junit.Assert.assertNotNull;
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.fail;
27 import java.time.Instant;
28 import java.util.HashMap;
29 import java.util.UUID;
31 import org.junit.AfterClass;
32 import org.junit.BeforeClass;
33 import org.junit.Test;
34 import org.onap.policy.aai.AAIGETVnfResponse;
35 import org.onap.policy.aai.AAIGETVserverResponse;
36 import org.onap.policy.aai.RelatedToProperty;
37 import org.onap.policy.aai.RelatedToPropertyItem;
38 import org.onap.policy.aai.Relationship;
39 import org.onap.policy.aai.RelationshipData;
40 import org.onap.policy.aai.RelationshipDataItem;
41 import org.onap.policy.aai.RelationshipList;
42 import org.onap.policy.controlloop.ControlLoopEventStatus;
43 import org.onap.policy.controlloop.ControlLoopException;
44 import org.onap.policy.controlloop.Util;
45 import org.onap.policy.controlloop.VirtualControlLoopEvent;
46 import org.onap.policy.controlloop.policy.ControlLoopPolicy;
47 import org.onap.policy.drools.http.server.HttpServletServer;
48 import org.onap.policy.drools.system.PolicyEngine;
49 import org.slf4j.Logger;
50 import org.slf4j.LoggerFactory;
52 public class ControlLoopEventManagerTest {
53 private static final Logger logger = LoggerFactory.getLogger(ControlLoopEventManagerTest.class);
55 private static VirtualControlLoopEvent onset;
57 onset = new VirtualControlLoopEvent();
58 onset.closedLoopControlName = "ControlLoop-vUSP";
59 onset.requestID = UUID.randomUUID();
60 onset.target = "VM_NAME";
61 onset.closedLoopAlarmStart = Instant.now();
62 onset.AAI = new HashMap<String, String>();
63 onset.AAI.put("cloud-region.identity-url", "foo");
64 onset.AAI.put("vserver.selflink", "bar");
65 onset.AAI.put("generic-vnf.vnf-id", "83f674e8-7555-44d7-9a39-bdc3770b0491");
66 onset.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
70 public static void setUpSimulator() {
72 org.onap.policy.simulators.Util.buildAaiSim();
73 } catch (Exception e) {
76 PolicyEngine.manager.setEnvironmentProperty("aai.username", "AAI");
77 PolicyEngine.manager.setEnvironmentProperty("aai.password", "AAI");
78 PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
82 public static void tearDownSimulator() {
83 HttpServletServer.factory.destroy();
87 public void testAAIVnfInfo() {
88 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
89 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
91 AAIGETVnfResponse response = getQueryByVnfID2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf/",
92 PolicyEngine.manager.getEnvironmentProperty("aai.username"),
93 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
94 UUID.randomUUID(), "5e49ca06-2972-4532-9ed4-6d071588d792");
95 assertNotNull(response);
96 logger.info("testAAIVnfInfo test result is " + (response == null ? "null" : "not null"));
97 } catch (Exception e) {
98 logger.error("testAAIVnfInfo Exception: ", e);
104 public void testAAIVnfInfo2() {
105 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
106 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
108 AAIGETVnfResponse response = getQueryByVnfName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=",
109 PolicyEngine.manager.getEnvironmentProperty("aai.username"),
110 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
111 UUID.randomUUID(), "lll_vnf_010317");
112 assertNotNull(response);
113 logger.info("testAAIVnfInfo2 test result is " + (response == null ? "null" : "not null"));
114 } catch (Exception e) {
115 logger.error("testAAIVnfInfo2 Exception: ", e);
116 fail(e.getMessage());
121 public void testAAIVserver() {
122 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
123 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
125 AAIGETVserverResponse response = getQueryByVserverName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/nodes/vservers?vserver-name=",
126 PolicyEngine.manager.getEnvironmentProperty("aai.username"),
127 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
128 UUID.randomUUID(), "USMSO1SX7NJ0103UJZZ01-vjunos0");
129 assertNotNull(response);
130 logger.info("testAAIVserver test result is " + (response == null ? "null" : "not null"));
131 } catch (Exception e) {
132 logger.error("testAAIVserver Exception: ", e);
133 fail(e.getMessage());
138 public void testIsClosedLoopDisabled() {
140 // Load up the policy
142 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
143 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
146 logger.info("testIsClosedLoopDisabled --");
147 AAIGETVnfResponse response = getQueryByVnfID2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf/",
148 PolicyEngine.manager.getEnvironmentProperty("aai.username"),
149 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
150 UUID.randomUUID(), "5e49ca06-2972-4532-9ed4-6d071588d792");
151 assertNotNull(response);
152 boolean disabled = ControlLoopEventManager.isClosedLoopDisabled(response);
153 logger.info("QueryByVnfID - isClosedLoopDisabled: " + disabled);
155 response = getQueryByVnfName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=",
156 PolicyEngine.manager.getEnvironmentProperty("aai.username"),
157 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
158 UUID.randomUUID(), "lll_vnf_010317");
159 assertNotNull(response);
160 disabled = ControlLoopEventManager.isClosedLoopDisabled(response);
161 logger.info("QueryByVnfName - isClosedLoopDisabled: " + disabled);
163 AAIGETVserverResponse response2 = getQueryByVserverName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/nodes/vservers?vserver-name=",
164 PolicyEngine.manager.getEnvironmentProperty("aai.user"),
165 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
166 UUID.randomUUID(), "USMSO1SX7NJ0103UJZZ01-vjunos0");
167 assertNotNull(response2);
168 disabled = ControlLoopEventManager.isClosedLoopDisabled(response2);
169 logger.info("QueryByVserverName - isClosedLoopDisabled: " + disabled);
170 } catch (Exception e) {
171 fail(e.getMessage());
176 public void abatemetCheckEventSyntaxTest() {
177 VirtualControlLoopEvent event = new VirtualControlLoopEvent();
178 event.closedLoopControlName = "abatementAAI";
179 event.requestID = UUID.randomUUID();
180 event.target = "generic-vnf.vnf-id";
181 event.closedLoopAlarmStart = Instant.now();
182 event.closedLoopEventStatus = ControlLoopEventStatus.ABATED;
183 ControlLoopEventManager manager = new ControlLoopEventManager(event.closedLoopControlName, event.requestID);
184 assertNull(manager.getVnfResponse());
185 assertNull(manager.getVserverResponse());
187 manager.checkEventSyntax(event);
188 } catch (ControlLoopException e) {
189 logger.debug("ControlLoopException in abatemetCheckEventSyntaxTest: "+e.getMessage());
191 fail("Exception in check event syntax");
193 assertNull(manager.getVnfResponse());
194 assertNull(manager.getVserverResponse());
197 event.AAI = new HashMap<>();
198 event.AAI.put("generic-vnf.vnf-name", "abatementTest");
200 manager.checkEventSyntax(event);
201 } catch (ControlLoopException e) {
202 logger.debug("ControlLoopException in abatemetCheckEventSyntaxTest: "+e.getMessage());
204 fail("Exception in check event syntax");
206 assertNull(manager.getVnfResponse());
207 assertNull(manager.getVserverResponse());
210 // Simulate a response
211 public static AAIGETVnfResponse getQueryByVnfID2(String urlGet, String username, String password, UUID requestID, String key) {
212 AAIGETVnfResponse response = new AAIGETVnfResponse();
214 response.vnfID = "83f674e8-7555-44d7-9a39-bdc3770b0491";
215 response.vnfName = "lll_vnf_010317";
216 response.vnfType = "Basa-122216-Service/VidVsamp12BaseVolume 1";
217 response.serviceId = "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb";
218 response.orchestrationStatus = "Created";
219 response.inMaint = "false";
220 response.isClosedLoopDisabled = "false";
221 response.resourceVersion = "1494001988835";
222 response.modelInvariantId = "f18be3cd-d446-456e-9109-121d9b62feaa";
224 RelationshipList relationshipList = new RelationshipList();
225 Relationship relationship = new Relationship();
226 RelationshipData relationshipData = new RelationshipData();
227 RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
229 relationshipDataItem.relationshipKey = "customer.global-customer-id";
230 relationshipDataItem.relationshipValue = "MSO_1610_ST";
231 relationshipData.relationshipData.add(relationshipDataItem);
233 relationshipDataItem.relationshipKey = "service-subscription.service-type";
234 relationshipDataItem.relationshipValue = "MSO-dev-service-type";
235 relationshipData.relationshipData.add(relationshipDataItem);
237 relationshipDataItem.relationshipKey = "service-instance.service-instance-id";
238 relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
239 relationshipData.relationshipData.add(relationshipDataItem);
241 RelatedToProperty relatedToProperty = new RelatedToProperty();
242 RelatedToPropertyItem item = new RelatedToPropertyItem();
243 item.propertyKey = "service-instance.service-instance-name";
244 item.propertyValue = "lll_svc_010317";
245 relatedToProperty.relatedTo.add(item);
247 relationship.relatedTo = "service-instance";
248 relationship.relatedLink = "/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
249 relationship.relationshipData = relationshipData;
250 relationship.relatedToProperty = relatedToProperty;
252 relationshipList.relationshipList.add(relationship);
253 response.relationshipList = relationshipList;
258 public static AAIGETVnfResponse getQueryByVnfName2(String urlGet, String username, String password, UUID requestID, String key) {
259 AAIGETVnfResponse response = new AAIGETVnfResponse();
261 response.vnfID = "83f674e8-7555-44d7-9a39-bdc3770b0491";
262 response.vnfName = "lll_vnf_010317";
263 response.vnfType = "Basa-122216-Service/VidVsamp12BaseVolume 1";
264 response.serviceId = "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb";
265 response.orchestrationStatus = "Created";
266 response.inMaint = "false";
267 response.isClosedLoopDisabled = "false";
268 response.resourceVersion = "1494001988835";
269 response.modelInvariantId = "f18be3cd-d446-456e-9109-121d9b62feaa";
271 RelationshipList relationshipList = new RelationshipList();
272 Relationship relationship = new Relationship();
273 RelationshipData relationshipData = new RelationshipData();
274 RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
276 relationshipDataItem.relationshipKey = "customer.global-customer-id";
277 relationshipDataItem.relationshipValue = "MSO_1610_ST";
278 relationshipData.relationshipData.add(relationshipDataItem);
280 relationshipDataItem.relationshipKey = "service-subscription.service-type";
281 relationshipDataItem.relationshipValue = "MSO-dev-service-type";
282 relationshipData.relationshipData.add(relationshipDataItem);
284 relationshipDataItem.relationshipKey = "service-instance.service-instance-id";
285 relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
286 relationshipData.relationshipData.add(relationshipDataItem);
288 RelatedToProperty relatedToProperty = new RelatedToProperty();
289 RelatedToPropertyItem item = new RelatedToPropertyItem();
290 item.propertyKey = "service-instance.service-instance-name";
291 item.propertyValue = "lll_svc_010317";
292 relatedToProperty.relatedTo.add(item);
294 relationship.relatedTo = "service-instance";
295 relationship.relatedLink = "/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
296 relationship.relationshipData = relationshipData;
297 relationship.relatedToProperty = relatedToProperty;
299 relationshipList.relationshipList.add(relationship);
300 response.relationshipList = relationshipList;
305 public static AAIGETVserverResponse getQueryByVserverName2(String urlGet, String username, String password, UUID requestID, String key) {
306 AAIGETVserverResponse response = new AAIGETVserverResponse();
308 response.vserverID = "d0668d4f-c25e-4a1b-87c4-83845c01efd8";
309 response.vserverName = "USMSO1SX7NJ0103UJZZ01-vjunos0";
310 response.vserverName2 = "vjunos0";
311 response.vserverSelflink = "https://aai-ext1.test.att.com:8443/aai/v7/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/tenants/tenant/USMSO1SX7NJ0103UJZZ01%3A%3AuCPE-VMS/vservers/vserver/d0668d4f-c25e-4a1b-87c4-83845c01efd8";
312 response.inMaint = "false";
313 response.isClosedLoopDisabled = "false";
314 response.resourceVersion = "1494001931513";
316 RelationshipList relationshipList = new RelationshipList();
317 Relationship relationship = new Relationship();
318 RelationshipData relationshipData = new RelationshipData();
319 RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
321 relationshipDataItem.relationshipKey = "customer.global-customer-id";
322 relationshipDataItem.relationshipValue = "MSO_1610_ST";
323 relationshipData.relationshipData.add(relationshipDataItem);
325 relationshipDataItem.relationshipKey = "service-subscription.service-type";
326 relationshipDataItem.relationshipValue = "MSO-dev-service-type";
327 relationshipData.relationshipData.add(relationshipDataItem);
329 relationshipDataItem.relationshipKey = "service-instance.service-instance-id";
330 relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
331 relationshipData.relationshipData.add(relationshipDataItem);
333 RelatedToProperty relatedToProperty = new RelatedToProperty();
334 RelatedToPropertyItem item = new RelatedToPropertyItem();
335 item.propertyKey = "service-instance.service-instance-name";
336 item.propertyValue = "lll_svc_010317";
337 relatedToProperty.relatedTo.add(item);
339 relationship.relatedTo = "service-instance";
340 relationship.relatedLink = "/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
341 relationship.relationshipData = relationshipData;
342 relationship.relatedToProperty = relatedToProperty;
344 relationshipList.relationshipList.add(relationship);
345 response.relationshipList = relationshipList;