2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
 
   7  * ================================================================================
 
   8  * Licensed under the Apache License, Version 2.0 (the "License");
 
   9  * you may not use this file except in compliance with the License.
 
  10  * You may obtain a copy of the License at
 
  12  *      http://www.apache.org/licenses/LICENSE-2.0
 
  14  * Unless required by applicable law or agreed to in writing, software
 
  15  * distributed under the License is distributed on an "AS IS" BASIS,
 
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  17  * See the License for the specific language governing permissions and
 
  18  * limitations under the License.
 
  19  * ============LICENSE_END=========================================================
 
  22 package org.openecomp.appc.workingstatemanager;
 
  24 import org.junit.Assert;
 
  25 import org.junit.Before;
 
  26 import org.junit.Ignore;
 
  27 import org.junit.Test;
 
  28 import org.openecomp.appc.configuration.ConfigurationFactory;
 
  29 import org.openecomp.appc.dao.util.AppcJdbcConnectionFactory;
 
  30 import org.openecomp.appc.workingstatemanager.impl.WorkingStateManagerImpl;
 
  31 import org.openecomp.appc.workingstatemanager.objects.VNFWorkingState;
 
  32 import com.att.eelf.configuration.EELFLogger;
 
  33 import com.att.eelf.configuration.EELFManager;
 
  35 import java.util.UUID;
 
  39 public class TestWorkingStateManager {
 
  40     private static final EELFLogger logger = EELFManager.getInstance().getLogger(TestWorkingStateManager.class);
 
  41     WorkingStateManagerImpl workingStateManager;
 
  44     public void init() throws Exception {
 
  45         workingStateManager = new WorkingStateManagerImpl();
 
  46         AppcJdbcConnectionFactory appcJdbcConnectionFactory = new AppcJdbcConnectionFactory();
 
  47         String schema = "sdnctl";
 
  48         appcJdbcConnectionFactory.setSchema(schema);
 
  49         workingStateManager.setConnectionFactory(appcJdbcConnectionFactory);
 
  50         String property = ConfigurationFactory.getConfiguration().getProperty(String.format("org.openecomp.appc.db.url.%s", schema));
 
  51         logger.info(property+" will be used as connection URL to mySQL.");
 
  52         logger.warn("you can set connection URL to other IP by adding -DmysqlIp=<MYSQL_IP> in VM Option");
 
  53 //        System.getProperties().getProperty("mys")
 
  57     // this test run on mysql you need to uncomment Ignore and to add -DmysqlIp=<MYSQL_IP> in VM Option, to make that test pass successfully.
 
  59     public void testUpdateWorkingState() {
 
  60         String vnfId = UUID.randomUUID().toString();
 
  61         String myOwnerId = "myOwnerId";
 
  62         String otherOwnerId = "otherOwnerId";
 
  63         boolean vnfStable = workingStateManager.isVNFStable(vnfId);
 
  64         logger.info("isVNFStable returns "+vnfStable+" for vnfId "+vnfId);
 
  66         //set to unstable with force true
 
  67         boolean updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, myOwnerId, true);
 
  68         Assert.assertTrue(updated);
 
  69         Assert.assertFalse(workingStateManager.isVNFStable(vnfId));
 
  71         //negative test - try to set to any value by other ownerId when vnf state is UNSTABLE
 
  72         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, otherOwnerId, false);
 
  73         Assert.assertFalse(updated);
 
  74         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNKNOWN, otherOwnerId, false);
 
  75         Assert.assertFalse(updated);
 
  76         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.STABLE, otherOwnerId, false);
 
  77         Assert.assertFalse(updated);
 
  79         //positive test - set with same ownerId and force false
 
  80         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, myOwnerId, false);
 
  81         Assert.assertTrue(updated);
 
  82         Assert.assertFalse(workingStateManager.isVNFStable(vnfId));
 
  83         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNKNOWN, myOwnerId, false);
 
  84         Assert.assertTrue(updated);
 
  85         Assert.assertFalse(workingStateManager.isVNFStable(vnfId));
 
  86         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.STABLE, myOwnerId, false);
 
  87         Assert.assertTrue(updated);
 
  88         Assert.assertTrue(workingStateManager.isVNFStable(vnfId));
 
  90         //positive test - set with otherOwnerId and force false when VNF is stable
 
  91         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNKNOWN, otherOwnerId, false);
 
  92         Assert.assertTrue(updated);
 
  93         Assert.assertFalse(workingStateManager.isVNFStable(vnfId));
 
  95         //negative test - try to set to any value by myOwnerId when vnf state is UNKNOWN
 
  96         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, myOwnerId, false);
 
  97         Assert.assertFalse(updated);
 
  98         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNKNOWN, myOwnerId, false);
 
  99         Assert.assertFalse(updated);
 
 100         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.STABLE, myOwnerId, false);
 
 101         Assert.assertFalse(updated);
 
 103         //positive test - try to set to any value by myOwnerId when vnf state is UNKNOWN but with force
 
 104         updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, myOwnerId, true);
 
 105         Assert.assertTrue(updated);
 
 106         Assert.assertFalse(workingStateManager.isVNFStable(vnfId));