aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/org/onap/schema/RelationshipSchemaTest.java
diff options
context:
space:
mode:
authorShwetank Dave <shwetank.dave@amdocs.com>2018-06-13 08:40:26 -0400
committerShwetank Dave <shwetank.dave@amdocs.com>2018-06-13 08:54:06 -0400
commit00832f054dd0c21492af531548e321ea25cdb8b4 (patch)
treee9017ca88d1e987a315c2faad1c49b873d3e5ca1 /src/test/java/org/onap/schema/RelationshipSchemaTest.java
parent18703cdc19842806969d30f19f8171469c79a0fe (diff)
Gizmo to load multiple Db Edge Rules files
There is an Edge Rule file for each OXM file. For every OXM version that is loaded, an edge rule file should also be loaded. Issue-ID: AAI-1201 Change-Id: I728e577ea8152623d3c5e2f0e8edf677f0eb9ef4 Signed-off-by: Shwetank Dave <shwetank.dave@amdocs.com>
Diffstat (limited to 'src/test/java/org/onap/schema/RelationshipSchemaTest.java')
-rw-r--r--src/test/java/org/onap/schema/RelationshipSchemaTest.java148
1 files changed, 53 insertions, 95 deletions
diff --git a/src/test/java/org/onap/schema/RelationshipSchemaTest.java b/src/test/java/org/onap/schema/RelationshipSchemaTest.java
index ce8559a..9467f41 100644
--- a/src/test/java/org/onap/schema/RelationshipSchemaTest.java
+++ b/src/test/java/org/onap/schema/RelationshipSchemaTest.java
@@ -20,128 +20,86 @@
*/
package org.onap.schema;
-import org.apache.commons.io.IOUtils;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Multimap;
import org.junit.Test;
+import org.onap.aai.edges.EdgeRule;
+import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException;
import org.onap.crud.exception.CrudException;
-import com.att.aft.dme2.internal.apache.commons.lang.ArrayUtils;
-
-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<String, RelationshipSchema> versionContextMap = new ConcurrentHashMap<>();
- loadRelations(versionContextMap);
- assertTrue(versionContextMap.keySet().size() >= 0);
+ RelationshipSchema rs = loadRelations();
+ assertTrue(!rs.lookupRelationType ("org.onap.some-relation" ).isEmpty ());
}
@Test
public void shouldContainValidTypes() throws Exception {
- Map<String, RelationshipSchema> versionContextMap = new ConcurrentHashMap<>();
- loadRelations(versionContextMap);
- assertTrue(versionContextMap.get("v10").isValidType("groupsResourcesIn"));
- assertTrue(versionContextMap.get("v10").isValidType("uses"));
- assertFalse(versionContextMap.get("v10").isValidType("notValidType"));
+ RelationshipSchema rs = loadRelations();
+ assertTrue(rs.lookupRelationType ("org.onap.some-relation") != null);
+ assertTrue(rs.lookupRelationType("notValidType") == null);
}
@Test
public void shouldLookUpByRelation() throws Exception {
- Map<String, RelationshipSchema> versionContextMap = new ConcurrentHashMap<>();
- loadRelations(versionContextMap);
- assertNotNull(versionContextMap.get("v10").lookupRelation("availability-zone:complex:groupsResourcesIn"));
- assertTrue(versionContextMap.get("v10")
- .lookupRelation("availability-zone:complex:groupsResourcesIn").containsKey("prevent-delete"));
+ RelationshipSchema rs = loadRelations();
+ assertNotNull(rs.lookupRelation("service-instance:customer:org.onap.some-relation"));
}
@Test
public void shouldLookUpByRelationType() throws Exception {
- Map<String, RelationshipSchema> versionContextMap = new ConcurrentHashMap<>();
- loadRelations(versionContextMap);
- assertNotNull(versionContextMap.get("v10").lookupRelationType("groupsResourcesIn"));
- assertTrue(versionContextMap.get("v10")
- .lookupRelation("availability-zone:complex:groupsResourcesIn").containsKey("prevent-delete"));
- }
-
- private void loadRelations(Map<String, RelationshipSchema> 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()));
-
- // Special handling for the v12 file, as it is used for a special test
- for (File f : allFiles) {
- if (f.getName().equals("edge_properties_v11.json")) {
- allFiles = (File[]) ArrayUtils.removeElement(allFiles, f);
- }
- }
-
- 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<File> files) {
- List<String> fileContents = new ArrayList<>();
- RelationshipSchema rsSchema = null;
- for (File f : files) {
- fileContents.add(jsonToString(f));
- }
-
- try {
- if (fileContents.size() == 2) {
- rsSchema = new RelationshipSchema(fileContents);
- }
- } catch (CrudException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- return rsSchema;
+ RelationshipSchema rs = loadRelations();
+ assertNotNull(rs.lookupRelationType("org.onap.groupsResourcesIn"));
+ assertTrue(rs.lookupRelation("availability-zone:complex:org.onap.groupsResourcesIn").containsKey("prevent-delete"));
}
- private String jsonToString (File file) {
- InputStream inputStream = null;
- String content = null;
- HashMap<String,Object> result = null;
-
- try {
- inputStream = new FileInputStream(file);
- content = IOUtils.toString(inputStream, "UTF-8");
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- return content;
- }
+ private RelationshipSchema loadRelations() throws CrudException, EdgeRuleNotFoundException, IOException {
+ String defaultEdgeProps = "{" +
+ "\"contains-other-v\": \"java.lang.String\"," +
+ "\"delete-other-v\": \"java.lang.String\"," +
+ "\"SVC-INFRA\": \"java.lang.String\"," +
+ "\"prevent-delete\": \"java.lang.String\"" +
+ "}";
+
+ Map<String, String> ruleOne = new HashMap<> ( );
+ Map<String, String> ruleTwo = new HashMap<> ( );
+
+ ruleOne.put("label", "org.onap.some-relation");
+ ruleOne.put("direction", "OUT");
+ ruleOne.put("contains-other-v", "NONE");
+ ruleOne.put("delete-other-v", "NONE");
+ ruleOne.put("prevent-delete", "NONE");
+ ruleOne.put("from", "service-instance");
+ ruleOne.put("to", "customer");
+ ruleOne.put("multiplicity", "MANY2MANY");
+ ruleOne.put("default", "true");
+ ruleOne.put("description", "");
+
+ ruleTwo.put("label", "org.onap.groupsResourcesIn");
+ ruleTwo.put("direction", "OUT");
+ ruleTwo.put("contains-other-v", "NONE");
+ ruleTwo.put("delete-other-v", "NONE");
+ ruleTwo.put("prevent-delete", "NONE");
+ ruleTwo.put("from", "availability-zone");
+ ruleTwo.put("to", "complex");
+ ruleTwo.put("multiplicity", "MANY2MANY");
+ ruleTwo.put("default", "true");
+ ruleTwo.put("description", "");
+
+ EdgeRule erOne = new EdgeRule ( ruleOne );
+ EdgeRule erTwo = new EdgeRule ( ruleTwo );
+ Multimap<String, EdgeRule> relationship = ArrayListMultimap.create();
+ relationship.put ( "customer|service-instane", erOne );
+ relationship.put ( "availability-zone|complex", erTwo );
+ return new RelationshipSchema ( relationship, defaultEdgeProps );
- private String myMatcher (Pattern p, String s) {
- Matcher m = p.matcher(s);
- return m.matches() ? m.group(1) : "";
}
} \ No newline at end of file