2 * Copyright 2016-2017, Nokia Corporation
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
18 import com.google.gson.JsonObject;
19 import java.util.ArrayList;
20 import java.util.List;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.mockito.Mock;
24 import org.onap.aai.model.GenericVnf;
25 import org.onap.aai.model.Relationship;
26 import org.onap.aai.model.RelationshipData;
27 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
28 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider;
29 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.DriverProperties;
30 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
31 import org.slf4j.Logger;
33 import static io.reactivex.Observable.error;
34 import static junit.framework.TestCase.assertEquals;
36 public class TestAbstractManager extends TestBase {
38 private AAIRestApiProvider aaiRestApiProvider;
39 private DummyManager dummyManager;
43 dummyManager = new DummyManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
47 * if the REST resource does not exists the provided instance is used
50 public void testIfResourceDoesNotExists() throws Exception {
51 GenericVnf newInstance = new GenericVnf();
53 GenericVnf actualInstance = dummyManager.createOrGet(error(new RuntimeException()), newInstance);
55 assertEquals(newInstance, actualInstance);
59 * if the REST resource exists it is not recreated
62 public void testIfResourceExists() throws Exception {
63 GenericVnf newInstance = new GenericVnf();
64 GenericVnf existingInstance = new GenericVnf();
66 GenericVnf actualInstance = dummyManager.createOrGet(buildObservable(existingInstance), newInstance);
68 assertEquals(existingInstance, actualInstance);
72 * Test relationship data builder
75 public void testBuildRelationshipData() {
76 RelationshipData relationshipData = AbstractManager.buildRelationshipData("key", "value");
77 assertEquals("key", relationshipData.getRelationshipKey());
78 assertEquals("value", relationshipData.getRelationshipValue());
82 * test mandatory value extraction
85 public void testExtractMandatoryValue() {
86 JsonObject object = new JsonObject();
87 object.addProperty("key", "value");
88 assertEquals("value", AbstractManager.extractMandatoryValue(object, "key"));
92 * the same relation is replaced
95 public void testAddSingletonRelationForExisting() {
96 List<Relationship> relationships = new ArrayList<>();
97 Relationship relation = new Relationship();
98 relation.setRelatedTo("unknownRelation");
99 relation.setRelationshipData(new ArrayList<>());
100 relationships.add(relation);
101 Relationship sameRelation = new Relationship();
102 sameRelation.setRelatedTo("relatedTo");
103 relationships.add(sameRelation);
104 RelationshipData data = new RelationshipData();
105 data.setRelationshipValue("v");
106 data.setRelationshipKey("k");
107 sameRelation.setRelationshipData(new ArrayList<>());
108 sameRelation.getRelationshipData().add(data);
110 Relationship newRelation = new Relationship();
111 newRelation.setRelatedTo("relatedTo");
112 RelationshipData data2 = new RelationshipData();
113 data2.setRelationshipValue("v2");
114 data2.setRelationshipKey("k2");
115 newRelation.setRelationshipData(new ArrayList<>());
116 newRelation.getRelationshipData().add(data2);
119 AbstractManager.addSingletonRelation(relationships, newRelation);
122 assertEquals(2, relationships.size());
123 assertEquals(1, relationships.get(1).getRelationshipData().size());
124 assertEquals("k2", relationships.get(1).getRelationshipData().get(0).getRelationshipKey());
125 assertEquals("v2", relationships.get(1).getRelationshipData().get(0).getRelationshipValue());
129 * the missing relation is created
132 public void testAddSingletonRelation() {
133 Relationship relation = new Relationship();
134 relation.setRelatedTo("unknownRelation");
135 List<Relationship> relationships = new ArrayList<>();
137 relationships.add(relation);
139 Relationship newRelation = new Relationship();
140 newRelation.setRelatedTo("relatedTo");
141 RelationshipData data2 = new RelationshipData();
143 data2.setRelationshipValue("v2");
144 data2.setRelationshipKey("k2");
145 newRelation.setRelationshipData(new ArrayList<>());
146 newRelation.getRelationshipData().add(data2);
149 AbstractManager.addSingletonRelation(relationships, newRelation);
151 assertEquals(2, relationships.size());
152 assertEquals(1, relationships.get(1).getRelationshipData().size());
153 assertEquals("k2", relationships.get(1).getRelationshipData().get(0).getRelationshipKey());
154 assertEquals("v2", relationships.get(1).getRelationshipData().get(0).getRelationshipValue());
158 * the same relation is replaced
161 public void testAddMissingRelationForExisting() {
162 List<Relationship> relationships = new ArrayList<>();
163 Relationship relation = new Relationship();
164 relation.setRelatedTo("unknownRelation");
165 relationships.add(relation);
166 Relationship sameRelation = new Relationship();
167 sameRelation.setRelatedTo("relatedTo");
168 relationships.add(sameRelation);
169 RelationshipData data = new RelationshipData();
171 data.setRelationshipValue("v");
172 data.setRelationshipKey("k");
173 sameRelation.setRelationshipData(new ArrayList<>());
174 sameRelation.getRelationshipData().add(data);
176 Relationship newRelation = new Relationship();
177 newRelation.setRelatedTo("relatedTo");
178 RelationshipData data2 = new RelationshipData();
180 data2.setRelationshipValue("v2");
181 data2.setRelationshipKey("k2");
182 newRelation.setRelationshipData(new ArrayList<>());
183 newRelation.getRelationshipData().add(data2);
186 AbstractManager.addMissingRelation(relationships, newRelation);
189 assertEquals(3, relationships.size());
190 assertEquals(1, relationships.get(1).getRelationshipData().size());
191 assertEquals("k", relationships.get(1).getRelationshipData().get(0).getRelationshipKey());
192 assertEquals("v", relationships.get(1).getRelationshipData().get(0).getRelationshipValue());
193 assertEquals("k2", relationships.get(2).getRelationshipData().get(0).getRelationshipKey());
194 assertEquals("v2", relationships.get(2).getRelationshipData().get(0).getRelationshipValue());
198 * adding the same relation is not duplicated
201 public void testAddMissingRelation() {
202 Relationship relation = new Relationship();
203 relation.setRelatedTo("unknownRelation");
204 List<Relationship> relationships = new ArrayList<>();
205 relationships.add(relation);
207 Relationship sameRelation = new Relationship();
208 sameRelation.setRelatedTo("relatedTo");
209 relationships.add(sameRelation);
210 RelationshipData data = new RelationshipData();
212 data.setRelationshipValue("v");
213 data.setRelationshipKey("k");
214 sameRelation.setRelationshipData(new ArrayList<>());
215 sameRelation.getRelationshipData().add(data);
217 Relationship newRelation = new Relationship();
218 newRelation.setRelatedTo("relatedTo");
219 RelationshipData data2 = new RelationshipData();
221 data2.setRelationshipValue("v");
222 data2.setRelationshipKey("k");
223 newRelation.setRelationshipData(new ArrayList<>());
224 newRelation.getRelationshipData().add(data2);
227 AbstractManager.addMissingRelation(relationships, newRelation);
229 assertEquals(2, relationships.size());
230 assertEquals(1, relationships.get(1).getRelationshipData().size());
231 assertEquals("k", relationships.get(1).getRelationshipData().get(0).getRelationshipKey());
232 assertEquals("v", relationships.get(1).getRelationshipData().get(0).getRelationshipValue());
235 class DummyManager extends AbstractManager {
237 DummyManager(AAIRestApiProvider aaiRestApiProvider, CbamRestApiProvider cbamRestApiProvider, DriverProperties driverProperties) {
238 super(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
242 protected Logger getLogger() {