From 908b4693e5a0a4c2f323dbf518b35e4620f183a1 Mon Sep 17 00:00:00 2001 From: "Bansal, Nitin (nb121v)" Date: Mon, 20 Nov 2017 16:02:06 -0500 Subject: Refactor to move from openecomp to onap Refactor to move from openecomp to onap IssueID: AAI-486 Change-Id: I1d5634739514acf11d5fbdf5e2c7865aaccd864e Signed-off-by: Bansal, Nitin (nb121v) --- .../org/onap/schema/RelationshipSchemaTest.java | 116 +++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/test/java/org/onap/schema/RelationshipSchemaTest.java (limited to 'src/test/java/org/onap/schema/RelationshipSchemaTest.java') diff --git a/src/test/java/org/onap/schema/RelationshipSchemaTest.java b/src/test/java/org/onap/schema/RelationshipSchemaTest.java new file mode 100644 index 0000000..95b3dde --- /dev/null +++ b/src/test/java/org/onap/schema/RelationshipSchemaTest.java @@ -0,0 +1,116 @@ +package org.onap.schema; + +import org.apache.commons.io.IOUtils; +import org.junit.Test; +import org.onap.crud.exception.CrudException; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Comparator; +import java.util.concurrent.ConcurrentHashMap; +import java.util.HashMap; +import java.util.Map; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import static org.junit.Assert.*; + +public class RelationshipSchemaTest { + + final static Pattern rulesFilePattern = Pattern.compile("DbEdgeRules(.*).json"); + final static Pattern propsFilePattern = Pattern.compile("edge_properties_(.*).json"); + final static Pattern versionPattern = Pattern.compile(".*(v\\d+).json"); + + + @Test + public void shouldLoadAllTheVersionsInDirectory() throws Exception { + Map versionContextMap = new ConcurrentHashMap<>(); + loadRelations(versionContextMap); + assertTrue(versionContextMap.keySet().size() >= 0); + } + + @Test + public void shouldContainValidTypes() throws Exception { + Map versionContextMap = new ConcurrentHashMap<>(); + loadRelations(versionContextMap); + assertTrue(versionContextMap.get("v11").isValidType("groupsResourcesIn")); + assertTrue(versionContextMap.get("v11").isValidType("uses")); + assertFalse(versionContextMap.get("v11").isValidType("notValidType")); + } + + @Test + public void shouldLookUpByRelation() throws Exception { + Map versionContextMap = new ConcurrentHashMap<>(); + loadRelations(versionContextMap); + assertNotNull(versionContextMap.get("v11").lookupRelation("availability-zone:complex:groupsResourcesIn")); + assertTrue(versionContextMap.get("v11") + .lookupRelation("availability-zone:complex:groupsResourcesIn").containsKey("usesResource")); + } + + @Test + public void shouldLookUpByRelationType() throws Exception { + Map versionContextMap = new ConcurrentHashMap<>(); + loadRelations(versionContextMap); + assertNotNull(versionContextMap.get("v11").lookupRelationType("groupsResourcesIn")); + assertTrue(versionContextMap.get("v11") + .lookupRelation("availability-zone:complex:groupsResourcesIn").containsKey("usesResource")); + } + + private void loadRelations(Map map){ + ClassLoader classLoader = getClass().getClassLoader(); + File dir = new File(classLoader.getResource("model").getFile()); + File[] allFiles = dir.listFiles((d, name) -> + (propsFilePattern.matcher(name).matches() || rulesFilePattern.matcher(name).matches())); + + Arrays.stream(allFiles).sorted(Comparator.comparing(File::getName)) + .collect(Collectors.groupingBy(f -> myMatcher(versionPattern, f.getName()))) + .forEach((e, f) -> map.put(e, jsonFilesLoader(f))); + + } + + + private RelationshipSchema jsonFilesLoader (List files) { + List fileContents = new ArrayList<>(); + RelationshipSchema rsSchema = null; + for (File f : files) { + fileContents.add(jsonToString(f)); + } + + try { + rsSchema = new RelationshipSchema(fileContents); + } catch (CrudException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + return rsSchema; + } + + private String jsonToString (File file) { + InputStream inputStream = null; + String content = null; + HashMap result = null; + + try { + inputStream = new FileInputStream(file); + content = IOUtils.toString(inputStream, "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + + return content; + } + + private String myMatcher (Pattern p, String s) { + Matcher m = p.matcher(s); + return m.matches() ? m.group(1) : ""; + } +} \ No newline at end of file -- cgit 1.2.3-korg