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;