summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/test
diff options
context:
space:
mode:
authorFrancis Toth <francis.toth@yoppworks.com>2020-05-29 10:12:10 -0400
committerOfir Sonsino <ofir.sonsino@intl.att.com>2020-06-17 08:10:44 +0000
commit9db21cff33a8eadadb85071a37d2239f4ee6f068 (patch)
treed2542c4e84bc96d5efb114905f4a1ba03460bfc5 /catalog-be/src/test
parent63ab11e3a5c635d69056d6f79156ce1d114fa1be (diff)
Extract ComponentCache from CsarUtils
This commit aims to decouple the component caching logic from CsarUtils to its own class. Signed-off-by: Francis Toth <francis.toth@yoppworks.com> Change-Id: Ia7e9284639ec8cd87ca5107e12f295e2eb599768 Issue-ID: SDC-2812
Diffstat (limited to 'catalog-be/src/test')
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/tosca/ComponentCacheTest.java97
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/tosca/CsarUtilsTest.java25
2 files changed, 103 insertions, 19 deletions
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/ComponentCacheTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/ComponentCacheTest.java
new file mode 100644
index 0000000000..12027a755d
--- /dev/null
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/ComponentCacheTest.java
@@ -0,0 +1,97 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdc.be.tosca;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.openecomp.sdc.be.components.impl.utils.TestDataUtils.aUniqueId;
+import static org.openecomp.sdc.be.components.impl.utils.TestDataUtils.alphaNum;
+import static org.openecomp.sdc.be.tosca.ComponentCache.entry;
+
+import io.vavr.collection.List;
+import java.util.function.BinaryOperator;
+import org.junit.jupiter.api.Test;
+import org.openecomp.sdc.be.components.impl.utils.TestDataUtils;
+import org.openecomp.sdc.be.model.Component;
+import org.openecomp.sdc.be.tosca.ComponentCache.CacheEntry;
+
+public class ComponentCacheTest {
+ private static final BinaryOperator<CacheEntry> RETURN_LATEST = (oldValue, newValue) -> newValue;
+ private static final BinaryOperator<CacheEntry> NO_MERGE = (oldValue, newValue) -> {
+ fail("Should not merge");
+ return oldValue;
+ };
+
+ @Test
+ public void emptyCase() {
+ ComponentCache cache = ComponentCache.overwritable(NO_MERGE);
+ List<CacheEntry> actual = cache.all().toList();
+ assertTrue(actual.isEmpty());
+ }
+
+ @Test
+ public void emptyCacheShouldNotMerge() {
+ ComponentCache cache = ComponentCache.overwritable(NO_MERGE);
+
+ String id = alphaNum(10);
+ String fileName = alphaNum(10);
+ Component component = aComponent();
+
+ List<CacheEntry> actual = cache
+ .put(id, fileName, component)
+ .all().toList();
+
+ List<CacheEntry> expected = List.of(entry(id, fileName, component));
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public void nonEmptyCacheShouldMerge() {
+ ComponentCache cache = ComponentCache.overwritable(RETURN_LATEST);
+
+ String id = alphaNum(10);
+ String fileName = alphaNum(10);
+ String invariantId = aUniqueId();
+
+ Component oldComponent = aComponent(invariantId);
+ Component newComponent = aComponent(invariantId);
+
+ CacheEntry actual = cache
+ .put(id, fileName, oldComponent)
+ .put(id, fileName, newComponent)
+ .all().toList().head();
+
+ assertEquals(newComponent, actual.component);
+ assertEquals(1, cache.all().size());
+ }
+
+ private static Component aComponent() {
+ return aComponent(aUniqueId());
+ }
+
+ private static Component aComponent(String invariantId) {
+ Component component = TestDataUtils.aComponent();
+ component.setInvariantUUID(invariantId);
+ return component;
+ }
+}
+
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/CsarUtilsTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/CsarUtilsTest.java
index 8f1e9f9199..07cf727a9e 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/CsarUtilsTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/CsarUtilsTest.java
@@ -27,6 +27,8 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.openecomp.sdc.be.tosca.ComponentCache.MergeStrategy.overwriteIfSameVersions;
+import static org.openecomp.sdc.be.tosca.ComponentCache.entry;
import fj.data.Either;
import java.io.File;
@@ -85,6 +87,7 @@ import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.resources.data.DAOArtifactData;
import org.openecomp.sdc.be.resources.data.SdcSchemaFilesData;
+import org.openecomp.sdc.be.tosca.ComponentCache.CacheEntry;
import org.openecomp.sdc.be.tosca.CsarUtils.NonMetaArtifactInfo;
import org.openecomp.sdc.be.tosca.model.ToscaTemplate;
import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
@@ -509,7 +512,7 @@ public class CsarUtilsTest extends BeConfDependentTest {
@Test
public void testAddInnerComponentsToCache() {
- Map<String, ImmutableTriple<String, String, Component>> componentCache = new HashMap<>();
+ ComponentCache componentCache = ComponentCache.overwritable(overwriteIfSameVersions());
Component childComponent = new Resource();
Component componentRI = new Service();
List<ComponentInstance> componentInstances = new ArrayList<>();
@@ -536,7 +539,8 @@ public class CsarUtilsTest extends BeConfDependentTest {
Deencapsulation.invoke(testSubject, "addInnerComponentsToCache", componentCache, childComponent);
- assertTrue(componentCache.containsValue(ImmutableTriple.of("esId","artifactName",componentRI)));
+ io.vavr.collection.List<CacheEntry> expected = io.vavr.collection.List.of(entry("esId","artifactName",componentRI));
+ assertEquals(expected, componentCache.all().toList());
}
@Test
@@ -573,23 +577,6 @@ public class CsarUtilsTest extends BeConfDependentTest {
}
@Test
- public void testAddComponentToCache() {
- Map<String, ImmutableTriple<String, String, Component>> componentCache = new HashMap<>();
- String id = "id";
- String fileName = "fileName";
- Component component = new Resource();
- component.setInvariantUUID("key");
- component.setVersion("1.0");
-
- Component cachedComponent = new Resource();
- cachedComponent.setVersion("0.3");
-
- componentCache.put("key", new ImmutableTriple<String, String, Component>(id, fileName, cachedComponent));
-
- Deencapsulation.invoke(testSubject, "addComponentToCache", componentCache, id, fileName, component);
- }
-
- @Test
public void testWriteComponentInterface() throws IOException {
String fileName = "name.hello";
ToscaRepresentation tosca = new ToscaRepresentation();