aboutsummaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorPawelSzalapski <pawel.szalapski@nokia.com>2018-08-08 11:01:03 +0200
committerPawelSzalapski <pawel.szalapski@nokia.com>2018-08-10 14:21:34 +0200
commite1ccd83e39090f16a446b23e154b8e28530e2fdd (patch)
treec38f54e6690f58438cb5e66fed2f6aad177b4bfc /src/test
parent5deddeb4892243627ad342a41d4dcef0f7280a29 (diff)
Refactor the code base a bit
Remove potential race condition coming from shared 'version' veriable in singleton instance of RestController. Move the logic behind reading the json schemas out of a on-request phase to application startup. Minor refactoring done that will bump up test coverage. Change-Id: I2ad1ba91dafafd785ede61591a4dc146abf6a1eb Signed-off-by: PawelSzalapski <pawel.szalapski@nokia.com> Issue-ID: DCAEGEN2-526
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/onap/dcae/ApplicationSettingsTest.java32
-rw-r--r--src/test/java/org/onap/dcae/TestingUtilities.java1
-rw-r--r--src/test/java/org/onap/dcae/commonFunction/EventProcessorTest.java4
-rw-r--r--src/test/java/org/onap/dcae/vestest/TestJsonSchemaValidation.java83
-rw-r--r--src/test/java/org/onap/dcae/vestest/TestingUtilities.java93
5 files changed, 22 insertions, 191 deletions
diff --git a/src/test/java/org/onap/dcae/ApplicationSettingsTest.java b/src/test/java/org/onap/dcae/ApplicationSettingsTest.java
index 2ac42080..26b0a68b 100644
--- a/src/test/java/org/onap/dcae/ApplicationSettingsTest.java
+++ b/src/test/java/org/onap/dcae/ApplicationSettingsTest.java
@@ -20,6 +20,11 @@ package org.onap.dcae;
* ============LICENSE_END=========================================================
*/
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.fge.jsonschema.core.exceptions.ProcessingException;
+import com.github.fge.jsonschema.core.report.ProcessingReport;
+import com.github.fge.jsonschema.main.JsonSchema;
import io.vavr.collection.HashMap;
import io.vavr.collection.Map;
import org.json.JSONObject;
@@ -28,6 +33,7 @@ import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Objects;
@@ -35,6 +41,7 @@ import java.util.Objects;
import static java.util.Collections.singletonList;
import static org.junit.Assert.*;
import static org.onap.dcae.CLIUtils.processCmdLine;
+import static org.onap.dcae.TestingUtilities.createTemporaryFile;
public class ApplicationSettingsTest {
@@ -281,22 +288,25 @@ public class ApplicationSettingsTest {
}
@Test
- public void shouldReturnJSONSchema() throws IOException {
+ public void shouldReturnJSONSchema() throws IOException, ProcessingException {
// when
- JSONObject jsonSchema = fromTemporaryConfiguration("collector.schema.file={\"v1\": {}}")
- .jsonSchema();
+ String sampleJsonSchema = "{" +
+ " \"type\": \"object\"," +
+ " \"properties\": {" +
+ " \"state\": { \"type\": \"string\" }" +
+ " }" +
+ "}";
+ Path temporarySchemaFile = createTemporaryFile(sampleJsonSchema);
- // then
- assertEquals(new JSONObject("{\"v1\": {}}").toMap(), jsonSchema.toMap());
- }
-
- @Test
- public void shouldReturnDefaultJSONSchema() throws IOException {
// when
- JSONObject jsonSchema = fromTemporaryConfiguration().jsonSchema();
+ JsonSchema schema = fromTemporaryConfiguration(String.format("collector.schema.file={\"v1\": \"%s\"}", temporarySchemaFile))
+ .jsonSchema("v1");
// then
- assertEquals(new JSONObject("{\"v5\":\"./etc/CommonEventFormat_28.3.json\"}").toMap(), jsonSchema.toMap());
+ JsonNode incorrectTestObject = new ObjectMapper().readTree("{ \"state\": 1 }");
+ JsonNode correctTestObject = new ObjectMapper().readTree("{ \"state\": \"hi\" }");
+ assertFalse(schema.validate(incorrectTestObject).isSuccess());
+ assertTrue(schema.validate(correctTestObject).isSuccess());
}
@Test
diff --git a/src/test/java/org/onap/dcae/TestingUtilities.java b/src/test/java/org/onap/dcae/TestingUtilities.java
index 0bbb6cc3..092983bf 100644
--- a/src/test/java/org/onap/dcae/TestingUtilities.java
+++ b/src/test/java/org/onap/dcae/TestingUtilities.java
@@ -82,7 +82,6 @@ public final class TestingUtilities {
T get() throws Exception;
}
-
public static void assertFailureHasInfo(Try any, String... msgPart) {
Java6Assertions.assertThat(any.isFailure()).isTrue();
AbstractThrowableAssert<?, ? extends Throwable> o = Java6Assertions.assertThat(any.getCause())
diff --git a/src/test/java/org/onap/dcae/commonFunction/EventProcessorTest.java b/src/test/java/org/onap/dcae/commonFunction/EventProcessorTest.java
index f5c5d5f9..97dccb5b 100644
--- a/src/test/java/org/onap/dcae/commonFunction/EventProcessorTest.java
+++ b/src/test/java/org/onap/dcae/commonFunction/EventProcessorTest.java
@@ -29,7 +29,6 @@ import org.mockito.ArgumentCaptor;
import org.onap.dcae.ApplicationSettings;
import org.onap.dcae.CLIUtils;
import org.onap.dcae.commonFunction.event.publishing.EventPublisher;
-import org.onap.dcae.vestest.TestingUtilities;
import java.util.List;
@@ -43,12 +42,11 @@ public class EventProcessorTest {
private final String ev = "{\"event\": {\"commonEventHeader\": { \"reportingEntityName\": \"VM name will be provided by ECOMP\", \"startEpochMicrosec\": 1477012779802988,\"lastEpochMicrosec\": 1477012789802988,\"eventId\": \"83\",\"sourceName\": \"Dummy VM name - No Metadata available\",\"sequence\": 83,\"priority\": \"Normal\",\"functionalRole\": \"vFirewall\",\"domain\": \"measurementsForVfScaling\",\"reportingEntityId\": \"VM UUID will be provided by ECOMP\",\"sourceId\": \"Dummy VM UUID - No Metadata available\",\"version\": 1.1},\"measurementsForVfScalingFields\": {\"measurementInterval\": 10,\"measurementsForVfScalingVersion\": 1.1,\"vNicUsageArray\": [{\"multicastPacketsIn\": 0,\"bytesIn\": 3896,\"unicastPacketsIn\": 0, \"multicastPacketsOut\": 0,\"broadcastPacketsOut\": 0, \"packetsOut\": 28,\"bytesOut\": 12178,\"broadcastPacketsIn\": 0,\"packetsIn\": 58,\"unicastPacketsOut\": 0,\"vNicIdentifier\": \"eth0\"}]}}}";
- Map<String, String[]> streamID;
+ private Map<String, String[]> streamID;
private ApplicationSettings properties;
@Before
public void setUp() {
- streamID = TestingUtilities.convertDMaaPStreamsPropertyToMap("fault=sec_fault|syslog=sec_syslog|heartbeat=sec_heartbeat|measurementsForVfScaling=sec_measurement|mobileFlow=sec_mobileflow|other=sec_other|stateChange=sec_statechange|thresholdCrossingAlert=sec_thresholdCrossingAlert|voiceQuality=ves_voicequality|sipSignaling=ves_sipsignaling");
properties = new ApplicationSettings(new String[]{}, CLIUtils::processCmdLine);
streamID = properties.dMaaPStreamsMapping();
}
diff --git a/src/test/java/org/onap/dcae/vestest/TestJsonSchemaValidation.java b/src/test/java/org/onap/dcae/vestest/TestJsonSchemaValidation.java
deleted file mode 100644
index 9146cdac..00000000
--- a/src/test/java/org/onap/dcae/vestest/TestJsonSchemaValidation.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * PROJECT
- * ================================================================================
- * Copyright (C) 2017 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.onap.dcae.vestest;
-
-import static java.nio.file.Files.readAllBytes;
-import static junit.framework.Assert.assertEquals;
-
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import java.io.IOException;
-import java.nio.file.Paths;
-import org.junit.Test;
-import org.onap.dcae.SchemaValidator;
-
-public class TestJsonSchemaValidation {
-
- @Test
- public void shouldValidEventPassSchema_27_2() throws IOException {
- String result =
- SchemaValidator.validateAgainstSchema(
- readJSONFromFile("src/test/resources/ves4_valid.json").toString(),
- readJSONFromFile("etc/CommonEventFormat_27.2.json").toString());
- assertEquals(result, "true");
- }
-
- @Test
- public void shouldInvalidEventDoesNotPassSchema_27_2() throws IOException {
- String result =
- SchemaValidator.validateAgainstSchema(
- readJSONFromFile("src/test/resources/ves4_invalid.json").toString(),
- readJSONFromFile("etc/CommonEventFormat_27.2.json").toString());
- assertEquals(result, "false");
- }
-
- @Test
- public void shouldValidEventPassSchema_30_0_1() throws IOException {
- String result =
- SchemaValidator.validateAgainstSchema(
- readJSONFromFile("src/test/resources/ves7_valid.json").toString(),
- readJSONFromFile("etc/CommonEventFormat_30.0.1.json").toString());
- assertEquals(result, "true");
- }
-
- @Test
- public void shouldValidEventBatchPassSchema_30_0_1() throws IOException {
- String result =
- SchemaValidator.validateAgainstSchema(
- readJSONFromFile("src/test/resources/ves7_batch_valid.json").toString(),
- readJSONFromFile("etc/CommonEventFormat_30.0.1.json").toString());
- assertEquals(result, "true");
- }
-
- @Test
- public void shouldInvalidEventDoesNotPassSchema_30_0_1() throws IOException {
- String result =
- SchemaValidator.validateAgainstSchema(
- readJSONFromFile("src/test/resources/ves7_invalid.json").toString(),
- readJSONFromFile("etc/CommonEventFormat_30.0.1.json").toString());
- assertEquals(result, "false");
- }
-
- private static JsonObject readJSONFromFile(String path) throws IOException {
- return (JsonObject) new JsonParser().parse(new String(readAllBytes(Paths.get(path))));
- }
-}
diff --git a/src/test/java/org/onap/dcae/vestest/TestingUtilities.java b/src/test/java/org/onap/dcae/vestest/TestingUtilities.java
deleted file mode 100644
index eff31f6d..00000000
--- a/src/test/java/org/onap/dcae/vestest/TestingUtilities.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * org.onap.dcaegen2.collectors.ves
- * ================================================================================
- * Copyright (C) 2018 Nokia. 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.onap.dcae.vestest;
-
-import static java.nio.file.Files.readAllBytes;
-
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import io.vavr.collection.HashMap;
-
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-/**
- * @author Pawel Szalapski (pawel.szalapski@nokia.com)
- */
-public final class TestingUtilities {
-
- private TestingUtilities() {
- // utility class, no objects allowed
- }
-
- static JsonObject readJSONFromFile(Path path) {
- return rethrow(() -> (JsonObject) new JsonParser().parse(new String(readAllBytes(path))));
- }
-
- static Path createTemporaryFile() {
- return rethrow(() -> {
- Path temporaryDirectory = Files.createTempDirectory("temporaryDirectory");
- Path temporaryFile = TestingUtilities.createFile(temporaryDirectory + "/testFile");
- TestingUtilities.scheduleToBeDeletedAfterTests(temporaryDirectory);
- TestingUtilities.scheduleToBeDeletedAfterTests(temporaryFile);
- return temporaryFile;
- });
- }
-
- public static HashMap<String, String[]> convertDMaaPStreamsPropertyToMap(String streamIdsProperty) {
- java.util.HashMap<String, String[]> domainToStreamIdsMapping = new java.util.HashMap<>();
- String[] topics = streamIdsProperty.split("\\|");
- for (String t : topics) {
- String domain = t.split("=")[0];
- String[] streamIds = t.split("=")[1].split(",");
- domainToStreamIdsMapping.put(domain, streamIds);
- }
- return HashMap.ofAll(domainToStreamIdsMapping);
- }
-
- private static Path createFile(String path) {
- return rethrow(() -> Files.createFile(Paths.get(path)));
- }
-
- private static void scheduleToBeDeletedAfterTests(Path path) {
- path.toFile().deleteOnExit();
- }
-
- /**
- * Exception in test case usually means there is something wrong, it should never be catched, but rather thrown to
- * be handled by JUnit framework.
- */
- private static <T> T rethrow(CheckedSupplier<T> supplier) {
- try {
- return supplier.get();
- } catch (Exception e) {
- throw new RuntimeException();
- }
- }
-
- @FunctionalInterface
- interface CheckedSupplier<T> {
-
- T get() throws Exception;
- }
-
-
-}