e723552e869b01f2ab171ad8b7d5f399699f0312
[policy/drools-applications.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * unit test
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.policy.controlloop.eventmanager;
22
23 import static org.junit.Assert.assertNotNull;
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.fail;
26
27 import java.time.Instant;
28 import java.util.HashMap;
29 import java.util.UUID;
30
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;
51
52 public class ControlLoopEventManagerTest {
53         private static final Logger logger = LoggerFactory.getLogger(ControlLoopEventManagerTest.class);
54         
55         private static VirtualControlLoopEvent onset;
56         static {
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;
67         }
68         
69         @BeforeClass
70         public static void setUpSimulator() {
71                 try {
72                         org.onap.policy.simulators.Util.buildAaiSim();
73                 } catch (Exception e) {
74                         fail(e.getMessage());
75                 }
76                 PolicyEngine.manager.setEnvironmentProperty("aai.username", "AAI");
77                 PolicyEngine.manager.setEnvironmentProperty("aai.password", "AAI");
78                 PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
79         }
80
81         @AfterClass
82         public static void tearDownSimulator() {
83                 HttpServletServer.factory.destroy();
84         }
85         
86         @Test
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();
90                 try {                   
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);
99                         fail(e.getMessage());
100                 }
101         }
102         
103         @Test
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();
107                 try {
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());
117                 }
118         }
119         
120         @Test
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();
124                 try {
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());
134                 }
135         }
136
137         @Test
138         public void testIsClosedLoopDisabled() {
139                 //
140                 // Load up the policy
141                 //
142                 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
143                 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
144                 
145                 try {
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); 
154
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); 
162
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());
172                 }
173         }
174         
175         @Test
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());
186         try {
187                         manager.checkEventSyntax(event);
188                 } catch (ControlLoopException e) {
189                         logger.debug("ControlLoopException in abatemetCheckEventSyntaxTest: "+e.getMessage());
190                         e.printStackTrace();
191                         fail("Exception in check event syntax");
192                 }
193         assertNull(manager.getVnfResponse());
194         assertNull(manager.getVserverResponse());
195         
196
197         event.AAI = new HashMap<>();
198         event.AAI.put("generic-vnf.vnf-name", "abatementTest");
199         try {
200                         manager.checkEventSyntax(event);
201                 } catch (ControlLoopException e) {
202                         logger.debug("ControlLoopException in abatemetCheckEventSyntaxTest: "+e.getMessage());
203                         e.printStackTrace();
204                         fail("Exception in check event syntax");
205                 }
206         assertNull(manager.getVnfResponse());
207         assertNull(manager.getVserverResponse());
208         }
209         
210         // Simulate a response 
211         public static AAIGETVnfResponse getQueryByVnfID2(String urlGet, String username, String password, UUID requestID, String key) {
212                 AAIGETVnfResponse response = new AAIGETVnfResponse();
213                 
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";
223                   
224         RelationshipList relationshipList = new RelationshipList();
225         Relationship     relationship = new Relationship();
226         RelationshipData relationshipData = new RelationshipData();
227         RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
228         
229         relationshipDataItem.relationshipKey   = "customer.global-customer-id"; 
230         relationshipDataItem.relationshipValue = "MSO_1610_ST"; 
231         relationshipData.relationshipData.add(relationshipDataItem);
232         
233         relationshipDataItem.relationshipKey   = "service-subscription.service-type"; 
234         relationshipDataItem.relationshipValue = "MSO-dev-service-type"; 
235         relationshipData.relationshipData.add(relationshipDataItem);
236         
237         relationshipDataItem.relationshipKey   = "service-instance.service-instance-id"; 
238         relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970"; 
239         relationshipData.relationshipData.add(relationshipDataItem);
240         
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);
246         
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;
251        
252         relationshipList.relationshipList.add(relationship);
253         response.relationshipList = relationshipList; 
254
255                 return response;
256         }
257
258         public static AAIGETVnfResponse getQueryByVnfName2(String urlGet, String username, String password, UUID requestID, String key) {
259                 AAIGETVnfResponse response = new AAIGETVnfResponse();
260                 
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";
270                   
271         RelationshipList relationshipList = new RelationshipList();
272         Relationship     relationship = new Relationship();
273         RelationshipData relationshipData = new RelationshipData();
274         RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
275         
276         relationshipDataItem.relationshipKey   = "customer.global-customer-id"; 
277         relationshipDataItem.relationshipValue = "MSO_1610_ST"; 
278         relationshipData.relationshipData.add(relationshipDataItem);
279         
280         relationshipDataItem.relationshipKey   = "service-subscription.service-type"; 
281         relationshipDataItem.relationshipValue = "MSO-dev-service-type"; 
282         relationshipData.relationshipData.add(relationshipDataItem);
283         
284         relationshipDataItem.relationshipKey   = "service-instance.service-instance-id"; 
285         relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970"; 
286         relationshipData.relationshipData.add(relationshipDataItem);
287         
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);
293         
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;
298        
299         relationshipList.relationshipList.add(relationship);
300         response.relationshipList = relationshipList; 
301
302                 return response;
303         }
304
305         public static AAIGETVserverResponse getQueryByVserverName2(String urlGet, String username, String password, UUID requestID, String key) {
306                 AAIGETVserverResponse response = new AAIGETVserverResponse();
307                 
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"; 
315                   
316         RelationshipList relationshipList = new RelationshipList();
317         Relationship     relationship = new Relationship();
318         RelationshipData relationshipData = new RelationshipData();
319         RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
320         
321         relationshipDataItem.relationshipKey   = "customer.global-customer-id"; 
322         relationshipDataItem.relationshipValue = "MSO_1610_ST"; 
323         relationshipData.relationshipData.add(relationshipDataItem);
324         
325         relationshipDataItem.relationshipKey   = "service-subscription.service-type"; 
326         relationshipDataItem.relationshipValue = "MSO-dev-service-type"; 
327         relationshipData.relationshipData.add(relationshipDataItem);
328         
329         relationshipDataItem.relationshipKey   = "service-instance.service-instance-id"; 
330         relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970"; 
331         relationshipData.relationshipData.add(relationshipDataItem);
332         
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);
338         
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;
343        
344         relationshipList.relationshipList.add(relationship);
345         response.relationshipList = relationshipList; 
346
347                 return response;
348         }
349 }