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.fail;
26 import java.time.Instant;
27 import java.util.HashMap;
28 import java.util.UUID;
30 import org.junit.AfterClass;
31 import org.junit.BeforeClass;
32 import org.junit.Test;
33 import org.onap.policy.aai.AAIGETVnfResponse;
34 import org.onap.policy.aai.AAIGETVserverResponse;
35 import org.onap.policy.aai.RelatedToProperty;
36 import org.onap.policy.aai.RelatedToPropertyItem;
37 import org.onap.policy.aai.Relationship;
38 import org.onap.policy.aai.RelationshipData;
39 import org.onap.policy.aai.RelationshipDataItem;
40 import org.onap.policy.aai.RelationshipList;
41 import org.onap.policy.controlloop.ControlLoopEventStatus;
42 import org.onap.policy.controlloop.Util;
43 import org.onap.policy.controlloop.VirtualControlLoopEvent;
44 import org.onap.policy.controlloop.policy.ControlLoopPolicy;
45 import org.onap.policy.drools.http.server.HttpServletServer;
46 import org.onap.policy.drools.system.PolicyEngine;
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
50 public class ControlLoopEventManagerTest {
51 private static final Logger logger = LoggerFactory.getLogger(ControlLoopEventManagerTest.class);
53 private static VirtualControlLoopEvent onset;
55 onset = new VirtualControlLoopEvent();
56 onset.closedLoopControlName = "ControlLoop-vUSP";
57 onset.requestID = UUID.randomUUID();
58 onset.target = "VM_NAME";
59 onset.closedLoopAlarmStart = Instant.now();
60 onset.AAI = new HashMap<String, String>();
61 onset.AAI.put("cloud-region.identity-url", "foo");
62 onset.AAI.put("vserver.selflink", "bar");
63 onset.AAI.put("generic-vnf.vnf-id", "83f674e8-7555-44d7-9a39-bdc3770b0491");
64 onset.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
68 public static void setUpSimulator() {
70 org.onap.policy.simulators.Util.buildAaiSim();
71 } catch (Exception e) {
77 public static void tearDownSimulator() {
78 HttpServletServer.factory.destroy();
82 public void testAAIVnfInfo() {
83 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
84 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
87 AAIGETVnfResponse response = getQueryByVnfID2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf/",
88 PolicyEngine.manager.getEnvironmentProperty("aai.user"),
89 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
90 UUID.randomUUID(), "5e49ca06-2972-4532-9ed4-6d071588d792");
91 assertNotNull(response);
92 logger.info("testAAIVnfInfo test result is " + (response == null ? "null" : "not null"));
93 } catch (Exception e) {
94 logger.error("testAAIVnfInfo Exception: ", e);
100 public void testAAIVnfInfo2() {
101 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
102 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
105 AAIGETVnfResponse response = getQueryByVnfName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=",
106 PolicyEngine.manager.getEnvironmentProperty("aai.user"),
107 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
108 UUID.randomUUID(), "lll_vnf_010317");
109 assertNotNull(response);
110 logger.info("testAAIVnfInfo2 test result is " + (response == null ? "null" : "not null"));
111 } catch (Exception e) {
112 logger.error("testAAIVnfInfo2 Exception: ", e);
113 fail(e.getMessage());
118 public void testAAIVserver() {
119 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
120 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
123 AAIGETVserverResponse response = getQueryByVserverName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/nodes/vservers?vserver-name=",
124 PolicyEngine.manager.getEnvironmentProperty("aai.user"),
125 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
126 UUID.randomUUID(), "USMSO1SX7NJ0103UJZZ01-vjunos0");
127 assertNotNull(response);
128 logger.info("testAAIVserver test result is " + (response == null ? "null" : "not null"));
129 } catch (Exception e) {
130 logger.error("testAAIVserver Exception: ", e);
131 fail(e.getMessage());
135 private void setAAIProperties() {
136 PolicyEngine.manager.setEnvironmentProperty("aai.user", "AAI");
137 PolicyEngine.manager.setEnvironmentProperty("aai.password", "AAI");
138 PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
142 public void testIsClosedLoopDisabled() {
144 // Load up the policy
146 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
147 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
150 logger.info("testIsClosedLoopDisabled --");
152 AAIGETVnfResponse response = getQueryByVnfID2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf/",
153 PolicyEngine.manager.getEnvironmentProperty("aai.user"),
154 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
155 UUID.randomUUID(), "5e49ca06-2972-4532-9ed4-6d071588d792");
156 assertNotNull(response);
157 boolean disabled = ControlLoopEventManager.isClosedLoopDisabled(response);
158 logger.info("QueryByVnfID - isClosedLoopDisabled: " + disabled);
160 response = getQueryByVnfName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=",
161 PolicyEngine.manager.getEnvironmentProperty("aai.user"),
162 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
163 UUID.randomUUID(), "lll_vnf_010317");
164 assertNotNull(response);
165 disabled = ControlLoopEventManager.isClosedLoopDisabled(response);
166 logger.info("QueryByVnfName - isClosedLoopDisabled: " + disabled);
168 AAIGETVserverResponse response2 = getQueryByVserverName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/nodes/vservers?vserver-name=",
169 PolicyEngine.manager.getEnvironmentProperty("aai.user"),
170 PolicyEngine.manager.getEnvironmentProperty("aai.password"),
171 UUID.randomUUID(), "USMSO1SX7NJ0103UJZZ01-vjunos0");
172 assertNotNull(response2);
173 disabled = ControlLoopEventManager.isClosedLoopDisabled(response2);
174 logger.info("QueryByVserverName - isClosedLoopDisabled: " + disabled);
175 } catch (Exception e) {
176 fail(e.getMessage());
180 // Simulate a response
181 public static AAIGETVnfResponse getQueryByVnfID2(String urlGet, String username, String password, UUID requestID, String key) {
182 AAIGETVnfResponse response = new AAIGETVnfResponse();
184 response.vnfID = "83f674e8-7555-44d7-9a39-bdc3770b0491";
185 response.vnfName = "lll_vnf_010317";
186 response.vnfType = "Basa-122216-Service/VidVsamp12BaseVolume 1";
187 response.serviceId = "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb";
188 response.orchestrationStatus = "Created";
189 response.inMaint = "false";
190 response.isClosedLoopDisabled = "false";
191 response.resourceVersion = "1494001988835";
192 response.modelInvariantId = "f18be3cd-d446-456e-9109-121d9b62feaa";
194 RelationshipList relationshipList = new RelationshipList();
195 Relationship relationship = new Relationship();
196 RelationshipData relationshipData = new RelationshipData();
197 RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
199 relationshipDataItem.relationshipKey = "customer.global-customer-id";
200 relationshipDataItem.relationshipValue = "MSO_1610_ST";
201 relationshipData.relationshipData.add(relationshipDataItem);
203 relationshipDataItem.relationshipKey = "service-subscription.service-type";
204 relationshipDataItem.relationshipValue = "MSO-dev-service-type";
205 relationshipData.relationshipData.add(relationshipDataItem);
207 relationshipDataItem.relationshipKey = "service-instance.service-instance-id";
208 relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
209 relationshipData.relationshipData.add(relationshipDataItem);
211 RelatedToProperty relatedToProperty = new RelatedToProperty();
212 RelatedToPropertyItem item = new RelatedToPropertyItem();
213 item.propertyKey = "service-instance.service-instance-name";
214 item.propertyValue = "lll_svc_010317";
215 relatedToProperty.relatedTo.add(item);
217 relationship.relatedTo = "service-instance";
218 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";
219 relationship.relationshipData = relationshipData;
220 relationship.relatedToProperty = relatedToProperty;
222 relationshipList.relationshipList.add(relationship);
223 response.relationshipList = relationshipList;
228 public static AAIGETVnfResponse getQueryByVnfName2(String urlGet, String username, String password, UUID requestID, String key) {
229 AAIGETVnfResponse response = new AAIGETVnfResponse();
231 response.vnfID = "83f674e8-7555-44d7-9a39-bdc3770b0491";
232 response.vnfName = "lll_vnf_010317";
233 response.vnfType = "Basa-122216-Service/VidVsamp12BaseVolume 1";
234 response.serviceId = "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb";
235 response.orchestrationStatus = "Created";
236 response.inMaint = "false";
237 response.isClosedLoopDisabled = "false";
238 response.resourceVersion = "1494001988835";
239 response.modelInvariantId = "f18be3cd-d446-456e-9109-121d9b62feaa";
241 RelationshipList relationshipList = new RelationshipList();
242 Relationship relationship = new Relationship();
243 RelationshipData relationshipData = new RelationshipData();
244 RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
246 relationshipDataItem.relationshipKey = "customer.global-customer-id";
247 relationshipDataItem.relationshipValue = "MSO_1610_ST";
248 relationshipData.relationshipData.add(relationshipDataItem);
250 relationshipDataItem.relationshipKey = "service-subscription.service-type";
251 relationshipDataItem.relationshipValue = "MSO-dev-service-type";
252 relationshipData.relationshipData.add(relationshipDataItem);
254 relationshipDataItem.relationshipKey = "service-instance.service-instance-id";
255 relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
256 relationshipData.relationshipData.add(relationshipDataItem);
258 RelatedToProperty relatedToProperty = new RelatedToProperty();
259 RelatedToPropertyItem item = new RelatedToPropertyItem();
260 item.propertyKey = "service-instance.service-instance-name";
261 item.propertyValue = "lll_svc_010317";
262 relatedToProperty.relatedTo.add(item);
264 relationship.relatedTo = "service-instance";
265 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";
266 relationship.relationshipData = relationshipData;
267 relationship.relatedToProperty = relatedToProperty;
269 relationshipList.relationshipList.add(relationship);
270 response.relationshipList = relationshipList;
275 public static AAIGETVserverResponse getQueryByVserverName2(String urlGet, String username, String password, UUID requestID, String key) {
276 AAIGETVserverResponse response = new AAIGETVserverResponse();
278 response.vserverID = "d0668d4f-c25e-4a1b-87c4-83845c01efd8";
279 response.vserverName = "USMSO1SX7NJ0103UJZZ01-vjunos0";
280 response.vserverName2 = "vjunos0";
281 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";
282 response.inMaint = "false";
283 response.isClosedLoopDisabled = "false";
284 response.resourceVersion = "1494001931513";
286 RelationshipList relationshipList = new RelationshipList();
287 Relationship relationship = new Relationship();
288 RelationshipData relationshipData = new RelationshipData();
289 RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
291 relationshipDataItem.relationshipKey = "customer.global-customer-id";
292 relationshipDataItem.relationshipValue = "MSO_1610_ST";
293 relationshipData.relationshipData.add(relationshipDataItem);
295 relationshipDataItem.relationshipKey = "service-subscription.service-type";
296 relationshipDataItem.relationshipValue = "MSO-dev-service-type";
297 relationshipData.relationshipData.add(relationshipDataItem);
299 relationshipDataItem.relationshipKey = "service-instance.service-instance-id";
300 relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
301 relationshipData.relationshipData.add(relationshipDataItem);
303 RelatedToProperty relatedToProperty = new RelatedToProperty();
304 RelatedToPropertyItem item = new RelatedToPropertyItem();
305 item.propertyKey = "service-instance.service-instance-name";
306 item.propertyValue = "lll_svc_010317";
307 relatedToProperty.relatedTo.add(item);
309 relationship.relatedTo = "service-instance";
310 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";
311 relationship.relationshipData = relationshipData;
312 relationship.relatedToProperty = relatedToProperty;
314 relationshipList.relationshipList.add(relationship);
315 response.relationshipList = relationshipList;