745841049dd1b4429c01b0f43a107929fd961a6f
[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.fail;
25
26 import java.time.Instant;
27 import java.util.HashMap;
28 import java.util.UUID;
29
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;
49
50 public class ControlLoopEventManagerTest {
51         private static final Logger logger = LoggerFactory.getLogger(ControlLoopEventManagerTest.class);
52         
53         private static VirtualControlLoopEvent onset;
54         static {
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;
65         }
66         
67         @BeforeClass
68         public static void setUpSimulator() {
69                 try {
70                         org.onap.policy.simulators.Util.buildAaiSim();
71                 } catch (Exception e) {
72                         fail(e.getMessage());
73                 }
74         }
75
76         @AfterClass
77         public static void tearDownSimulator() {
78                 HttpServletServer.factory.destroy();
79         }
80         
81         @Test
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();
85                 try {
86                         setAAIProperties();                     
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);
95                         fail(e.getMessage());
96                 }
97         }
98         
99         @Test
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();
103                 try {
104                         setAAIProperties(); 
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());
114                 }
115         }
116         
117         @Test
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();
121                 try {
122                         setAAIProperties(); 
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());
132                 }
133         }
134         
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");                
139         }
140
141         @Test
142         public void testIsClosedLoopDisabled() {
143                 //
144                 // Load up the policy
145                 //
146                 final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
147                 onset.closedLoopControlName = pair.a.getControlLoop().getControlLoopName();
148                 
149                 try {
150                         logger.info("testIsClosedLoopDisabled --");
151                         setAAIProperties(); 
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); 
159
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); 
167
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());
177                 }
178         }
179         
180         // Simulate a response 
181         public static AAIGETVnfResponse getQueryByVnfID2(String urlGet, String username, String password, UUID requestID, String key) {
182                 AAIGETVnfResponse response = new AAIGETVnfResponse();
183                 
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";
193                   
194         RelationshipList relationshipList = new RelationshipList();
195         Relationship     relationship = new Relationship();
196         RelationshipData relationshipData = new RelationshipData();
197         RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
198         
199         relationshipDataItem.relationshipKey   = "customer.global-customer-id"; 
200         relationshipDataItem.relationshipValue = "MSO_1610_ST"; 
201         relationshipData.relationshipData.add(relationshipDataItem);
202         
203         relationshipDataItem.relationshipKey   = "service-subscription.service-type"; 
204         relationshipDataItem.relationshipValue = "MSO-dev-service-type"; 
205         relationshipData.relationshipData.add(relationshipDataItem);
206         
207         relationshipDataItem.relationshipKey   = "service-instance.service-instance-id"; 
208         relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970"; 
209         relationshipData.relationshipData.add(relationshipDataItem);
210         
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);
216         
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;
221        
222         relationshipList.relationshipList.add(relationship);
223         response.relationshipList = relationshipList; 
224
225                 return response;
226         }
227
228         public static AAIGETVnfResponse getQueryByVnfName2(String urlGet, String username, String password, UUID requestID, String key) {
229                 AAIGETVnfResponse response = new AAIGETVnfResponse();
230                 
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";
240                   
241         RelationshipList relationshipList = new RelationshipList();
242         Relationship     relationship = new Relationship();
243         RelationshipData relationshipData = new RelationshipData();
244         RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
245         
246         relationshipDataItem.relationshipKey   = "customer.global-customer-id"; 
247         relationshipDataItem.relationshipValue = "MSO_1610_ST"; 
248         relationshipData.relationshipData.add(relationshipDataItem);
249         
250         relationshipDataItem.relationshipKey   = "service-subscription.service-type"; 
251         relationshipDataItem.relationshipValue = "MSO-dev-service-type"; 
252         relationshipData.relationshipData.add(relationshipDataItem);
253         
254         relationshipDataItem.relationshipKey   = "service-instance.service-instance-id"; 
255         relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970"; 
256         relationshipData.relationshipData.add(relationshipDataItem);
257         
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);
263         
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;
268        
269         relationshipList.relationshipList.add(relationship);
270         response.relationshipList = relationshipList; 
271
272                 return response;
273         }
274
275         public static AAIGETVserverResponse getQueryByVserverName2(String urlGet, String username, String password, UUID requestID, String key) {
276                 AAIGETVserverResponse response = new AAIGETVserverResponse();
277                 
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"; 
285                   
286         RelationshipList relationshipList = new RelationshipList();
287         Relationship     relationship = new Relationship();
288         RelationshipData relationshipData = new RelationshipData();
289         RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
290         
291         relationshipDataItem.relationshipKey   = "customer.global-customer-id"; 
292         relationshipDataItem.relationshipValue = "MSO_1610_ST"; 
293         relationshipData.relationshipData.add(relationshipDataItem);
294         
295         relationshipDataItem.relationshipKey   = "service-subscription.service-type"; 
296         relationshipDataItem.relationshipValue = "MSO-dev-service-type"; 
297         relationshipData.relationshipData.add(relationshipDataItem);
298         
299         relationshipDataItem.relationshipKey   = "service-instance.service-instance-id"; 
300         relationshipDataItem.relationshipValue = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970"; 
301         relationshipData.relationshipData.add(relationshipDataItem);
302         
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);
308         
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;
313        
314         relationshipList.relationshipList.add(relationship);
315         response.relationshipList = relationshipList; 
316
317                 return response;
318         }
319 }