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.openecomp.sdc.be.model.operations.impl;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
27 import java.util.Map.Entry;
29 import org.junit.Before;
30 import org.junit.BeforeClass;
31 import org.junit.Ignore;
32 import org.junit.Test;
33 import org.junit.runner.RunWith;
34 import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
35 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
36 import org.openecomp.sdc.be.model.CapabiltyInstance;
37 import org.openecomp.sdc.be.model.ModelTestBase;
38 import org.openecomp.sdc.be.model.PropertyDefinition;
39 import org.openecomp.sdc.be.model.RequirementDefinition;
40 import org.openecomp.sdc.be.model.Resource;
41 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
42 import org.openecomp.sdc.be.model.operations.impl.util.OperationTestsUtil;
43 import org.openecomp.sdc.be.resources.data.UserData;
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46 import org.springframework.test.context.ContextConfiguration;
47 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
49 import com.google.gson.Gson;
50 import com.google.gson.GsonBuilder;
52 import fj.data.Either;
54 @RunWith(SpringJUnit4ClassRunner.class)
55 @ContextConfiguration("classpath:application-context-test.xml")
56 public class RequirementOperationTest extends ModelTestBase {
57 private static Logger log = LoggerFactory.getLogger(RequirementOperationTest.class.getName());
58 private Gson prettyGson = new GsonBuilder().setPrettyPrinting().create();
60 private static String USER_ID = "muUserId";
61 private static String CATEGORY_NAME = "category/mycategory";
63 @javax.annotation.Resource(name = "titan-generic-dao")
64 private TitanGenericDao titanDao;
66 @javax.annotation.Resource(name = "requirement-operation")
67 private RequirementOperation requirementOperation;
69 @javax.annotation.Resource(name = "resource-operation")
70 private ResourceOperation resourceOperation;
72 @javax.annotation.Resource(name = "property-operation")
73 private PropertyOperation propertyOperation;
75 @javax.annotation.Resource(name = "capability-operation")
76 private CapabilityOperation capabilityOperation;
78 @javax.annotation.Resource(name = "capability-type-operation")
79 private CapabilityTypeOperation capabilityTypeOperation;
82 public static void setupBeforeClass() {
84 // configurationManager = new ConfigurationManager(
85 // new ConfigurationSource() {
88 // public <T> T getAndWatchConfiguration(Class<T> className,
89 // ConfigurationListener configurationListener) {
90 // // TODO Auto-generated method stub
95 // public <T> void addWatchConfiguration(Class<T> className,
96 // ConfigurationListener configurationListener) {
97 // // TODO Auto-generated method stub
102 // Configuration configuration = new Configuration();
103 // configuration.setTitanInMemoryGraph(true);
105 // configurationManager.setConfiguration(configuration);
106 ModelTestBase.init();
110 public void testDummy() {
112 assertTrue(requirementOperation != null);
117 public void testAddRequirementNotExistCapability() {
119 String reqName = "host";
120 RequirementDefinition reqDefinition = new RequirementDefinition();
121 reqDefinition.setNode("tosca.nodes.Compute");
122 reqDefinition.setRelationship("myrelationship");
123 reqDefinition.setCapability("mycapability___2");
125 ResourceOperationTest resourceOperationTest = new ResourceOperationTest();
126 resourceOperationTest.setOperations(titanDao, resourceOperation, propertyOperation);
128 Resource resource = resourceOperationTest.createResource(USER_ID, CATEGORY_NAME, "my-resource", "0.1", null, true, true);
130 Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource = requirementOperation.addRequirementToResource(reqName, reqDefinition, resource.getUniqueId());
131 assertEquals("check error", StorageOperationStatus.INVALID_ID, addRequirementToResource.right().value());
136 public void createUserAndCategory() {
137 String[] category = CATEGORY_NAME.split("/");
138 OperationTestsUtil.deleteAndCreateResourceCategory(category[0], category[1], titanDao);
139 deleteAndCreateUser(USER_ID, "first_" + USER_ID, "last_" + USER_ID);
142 private UserData deleteAndCreateUser(String userId, String firstName, String lastName) {
143 UserData userData = new UserData();
144 userData.setUserId(userId);
145 userData.setFirstName(firstName);
146 userData.setLastName(lastName);
148 titanDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), userId, UserData.class);
149 titanDao.createNode(userData, UserData.class);
156 * private void deleteAndCreateCategory(String category) { CategoryData categoryData = new CategoryData(); categoryData.setName(category);
158 * titanDao.deleteNode(categoryData, CategoryData.class); Either<CategoryData, TitanOperationStatus> createNode = titanDao .createNode(categoryData, CategoryData.class); System.out.println("after creating caetgory " + createNode);
165 public void testAddRequirementWithCapability() {
167 String capabilityTypeName = "tosca.nodes.Container";
169 String reqName = "host";
170 RequirementDefinition reqDefinition = new RequirementDefinition();
171 reqDefinition.setNode("tosca.nodes.Compute");
172 reqDefinition.setRelationship("myrelationship");
173 reqDefinition.setCapability(capabilityTypeName);
175 CapabilityTypeOperationTest capabilityTypeOperationTest = new CapabilityTypeOperationTest();
176 capabilityTypeOperationTest.setOperations(titanDao, capabilityTypeOperation);
178 capabilityTypeOperationTest.createCapability(capabilityTypeName);
180 ResourceOperationTest resourceOperationTest = new ResourceOperationTest();
181 resourceOperationTest.setOperations(titanDao, resourceOperation, propertyOperation);
183 Resource resource = resourceOperationTest.createResource(USER_ID, CATEGORY_NAME, "my-resource", "2.0", null, true, true);
185 Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource = requirementOperation.addRequirementToResource(reqName, reqDefinition, resource.getUniqueId());
187 assertEquals("check requirement was added", true, addRequirementToResource.isLeft());
189 Either<Resource, StorageOperationStatus> resource2 = resourceOperation.getResource(resource.getUniqueId());
190 String json = prettyGson.toJson(resource2);
194 private void compareProperties(Map<String, PropertyDefinition> capabilityProperties, CapabiltyInstance capabiltyInstance, Map<String, String> actual) {
196 Map<String, String> properties = capabiltyInstance.getProperties();
198 for (Entry<String, PropertyDefinition> entry : capabilityProperties.entrySet()) {
199 String paramName = entry.getKey();
200 PropertyDefinition propertyDefinition = entry.getValue();
201 String defaultValue = propertyDefinition.getDefaultValue();
203 String value = properties.get(paramName);
205 String actualValue = null;
206 if (actual != null) {
207 actualValue = actual.get(paramName);
209 if (actualValue != null) {
210 assertEquals("check property value of key " + paramName, value, actualValue);
212 assertEquals("check property value of key " + paramName, value, defaultValue);