X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=dcae-analytics-test%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fdcae%2Fapod%2Fanalytics%2Ftest%2FBaseDCAEAnalyticsCommonTest.java;h=4f5015bc8fa4bfa3c16c04494f2e4da1644ab4b5;hb=06044df56fb07f4b368888581752855595e7b147;hp=4698f21cd6efbf58bfa1cf8edca8f5363b44b95e;hpb=475cb8c867038acd73ff540173d54bac3947c610;p=dcaegen2%2Fanalytics%2Ftca.git diff --git a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsCommonTest.java b/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsCommonTest.java index 4698f21..4f5015b 100644 --- a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsCommonTest.java +++ b/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsCommonTest.java @@ -1,243 +1,243 @@ -/* - * ===============================LICENSE_START====================================== - * dcae-analytics - * ================================================================================ - * Copyright © 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.openecomp.dcae.apod.analytics.test; - -import org.json.JSONException; -import org.junit.Assert; -import org.skyscreamer.jsonassert.JSONAssert; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.ObjectOutputStream; -import java.io.OutputStreamWriter; -import java.lang.reflect.Field; -import java.net.URL; -import java.net.URLClassLoader; -import java.nio.charset.Charset; -import java.nio.file.Paths; -import java.security.AccessController; -import java.security.PrivilegedAction; -import java.util.Arrays; - -import static java.nio.file.Files.deleteIfExists; -import static java.nio.file.Files.exists; - -/** - * Base common test class for all DCAE Analytics Test e.g. unit tests, integration test, CDAP tests etc. - *
- * @author Rajiv Singla . Creation Date: 10/19/2016. - */ -abstract class BaseDCAEAnalyticsCommonTest { - - protected static final Logger LOG = LoggerFactory.getLogger(BaseDCAEAnalyticsCommonTest.class); - - /** - * Asserts if expected Json String and actual Json String contain the same properties ignoring - * property order. Simple String assertion might fail as property order during serialization and deserialization - * is generally non-deterministic. Also proper error message are generated more missing or unexpected - * properties - * - * @param expectedJsonString expected Json String - * @param actualJsonString actual Json String - * @throws JSONException Json Exception - */ - public static void assertJson(String expectedJsonString, String actualJsonString) throws JSONException { - JSONAssert.assertEquals(expectedJsonString, actualJsonString, true); - } - - /** - * Converts given file location to String - * - * @param fileLocation location of the file which needs to be converted to String - * @return Contents of file as string - * @throws IOException IOException - */ - public static String fromStream(String fileLocation) throws IOException { - final InputStream jsonFileInputStream = - BaseDCAEAnalyticsCommonTest.class.getClassLoader().getResourceAsStream(fileLocation); - Assert.assertNotNull("Json File Location must be valid", jsonFileInputStream); - try (BufferedReader reader = - new BufferedReader(new InputStreamReader(jsonFileInputStream, Charset.forName("UTF-8")))) { - final StringBuilder result = new StringBuilder(); - final String newLine = System.getProperty("line.separator"); - String line = reader.readLine(); - while (line != null) { - result.append(line) - .append(newLine); - line = reader.readLine(); - } - jsonFileInputStream.close(); - return result.toString(); - } - } - - - /** - * Checks if object can be serialized properly - * - * @param object input object - * @param callingClass calling class - * @throws IOException IOException - */ - public static void testSerialization(Object object, Class> callingClass) throws IOException { - final URL location = callingClass.getProtectionDomain().getCodeSource().getLocation(); - final File serializedOutputFile = - new File(location.getPath() + String.format("serialization/%s.ser", object.getClass().getSimpleName())); - - // Maybe file already try deleting it first - final boolean deleteIfExists = deleteIfExists(Paths.get(serializedOutputFile.getPath())); - - if (deleteIfExists) { - LOG.warn("Previous serialization file was overwritten at location: {}", serializedOutputFile.getPath()); - } - - boolean mkdirs = true; - if (!exists(Paths.get(serializedOutputFile.getParentFile().getPath()))) { - mkdirs = serializedOutputFile.getParentFile().mkdirs(); - } - if (mkdirs) { - try (FileOutputStream fileOutputStream = new FileOutputStream(serializedOutputFile); - ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream)) { - objectOutputStream.writeObject(object); - LOG.debug("Successfully created serialization file at location: {}", serializedOutputFile.getPath()); - } - } else { - throw new IllegalStateException( - String.format("Failed to create location to store serialization file: %s", - serializedOutputFile)); - } - } - - /** - * Writes Text to Output file - * - * @param textFileLocation - location of text file e.g. textfiles/fileName.json - * @param content - file content - * @param callingClass - calling class - * @throws IOException - ioException - */ - public static void writeToOutputTextFile(String textFileLocation, String content, Class> callingClass) throws - IOException { - final URL location = callingClass.getProtectionDomain().getCodeSource().getLocation(); - final File fileLocation = new File(location.getPath() + textFileLocation); - - // Maybe file already try deleting it first - final boolean deleteIfExists = deleteIfExists(Paths.get(fileLocation.getPath())); - - if (deleteIfExists) { - LOG.warn("Previous file will be overwritten at location: {}", fileLocation.getPath()); - } - - boolean mkdirs = true; - if (!exists(Paths.get(fileLocation.getParentFile().getPath()))) { - mkdirs = fileLocation.getParentFile().mkdirs(); - } - if (mkdirs) { - try ( - FileOutputStream fileOutputStream = new FileOutputStream(fileLocation); - OutputStreamWriter outputStream = - new OutputStreamWriter(fileOutputStream, Charset.forName("UTF-8"))) { - outputStream.write(content); - LOG.debug("Successfully created text file at location: {}", fileLocation.getPath()); - } - } else { - throw new IllegalStateException( - String.format("Failed to create location to store text file: %s", fileLocation)); - } - - } - - - /** - * For testing purposes only we may sometime we may want to access private fields of underlying - * object to confirm the values are setup correctly. - *
- * This method uses java reflection to get the value to private object in the class
- *
- * @param object Actual object which has the private field you want to check
- * @param fieldName Field name in the Actual Object you want to get the value of
- * @param privateFieldClass Type of the private field
- * @param
+ * @author Rajiv Singla . Creation Date: 10/19/2016.
+ */
+abstract class BaseDCAEAnalyticsCommonTest {
+
+ protected static final Logger LOG = LoggerFactory.getLogger(BaseDCAEAnalyticsCommonTest.class);
+
+ /**
+ * Asserts if expected Json String and actual Json String contain the same properties ignoring
+ * property order. Simple String assertion might fail as property order during serialization and deserialization
+ * is generally non-deterministic. Also proper error message are generated more missing or unexpected
+ * properties
+ *
+ * @param expectedJsonString expected Json String
+ * @param actualJsonString actual Json String
+ * @throws JSONException Json Exception
+ */
+ public static void assertJson(String expectedJsonString, String actualJsonString) throws JSONException {
+ JSONAssert.assertEquals(expectedJsonString, actualJsonString, true);
+ }
+
+ /**
+ * Converts given file location to String
+ *
+ * @param fileLocation location of the file which needs to be converted to String
+ * @return Contents of file as string
+ * @throws IOException IOException
+ */
+ public static String fromStream(String fileLocation) throws IOException {
+ final InputStream jsonFileInputStream =
+ BaseDCAEAnalyticsCommonTest.class.getClassLoader().getResourceAsStream(fileLocation);
+ Assert.assertNotNull("Json File Location must be valid", jsonFileInputStream);
+ try (BufferedReader reader =
+ new BufferedReader(new InputStreamReader(jsonFileInputStream, Charset.forName("UTF-8")))) {
+ final StringBuilder result = new StringBuilder();
+ final String newLine = System.getProperty("line.separator");
+ String line = reader.readLine();
+ while (line != null) {
+ result.append(line)
+ .append(newLine);
+ line = reader.readLine();
+ }
+ jsonFileInputStream.close();
+ return result.toString();
+ }
+ }
+
+
+ /**
+ * Checks if object can be serialized properly
+ *
+ * @param object input object
+ * @param callingClass calling class
+ * @throws IOException IOException
+ */
+ public static void testSerialization(Object object, Class> callingClass) throws IOException {
+ final URL location = callingClass.getProtectionDomain().getCodeSource().getLocation();
+ final File serializedOutputFile =
+ new File(location.getPath() + String.format("serialization/%s.ser", object.getClass().getSimpleName()));
+
+ // Maybe file already try deleting it first
+ final boolean deleteIfExists = deleteIfExists(Paths.get(serializedOutputFile.getPath()));
+
+ if (deleteIfExists) {
+ LOG.warn("Previous serialization file was overwritten at location: {}", serializedOutputFile.getPath());
+ }
+
+ boolean mkdirs = true;
+ if (!exists(Paths.get(serializedOutputFile.getParentFile().getPath()))) {
+ mkdirs = serializedOutputFile.getParentFile().mkdirs();
+ }
+ if (mkdirs) {
+ try (FileOutputStream fileOutputStream = new FileOutputStream(serializedOutputFile);
+ ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream)) {
+ objectOutputStream.writeObject(object);
+ LOG.debug("Successfully created serialization file at location: {}", serializedOutputFile.getPath());
+ }
+ } else {
+ throw new IllegalStateException(
+ String.format("Failed to create location to store serialization file: %s",
+ serializedOutputFile));
+ }
+ }
+
+ /**
+ * Writes Text to Output file
+ *
+ * @param textFileLocation - location of text file e.g. textfiles/fileName.json
+ * @param content - file content
+ * @param callingClass - calling class
+ * @throws IOException - ioException
+ */
+ public static void writeToOutputTextFile(String textFileLocation, String content, Class> callingClass) throws
+ IOException {
+ final URL location = callingClass.getProtectionDomain().getCodeSource().getLocation();
+ final File fileLocation = new File(location.getPath() + textFileLocation);
+
+ // Maybe file already try deleting it first
+ final boolean deleteIfExists = deleteIfExists(Paths.get(fileLocation.getPath()));
+
+ if (deleteIfExists) {
+ LOG.warn("Previous file will be overwritten at location: {}", fileLocation.getPath());
+ }
+
+ boolean mkdirs = true;
+ if (!exists(Paths.get(fileLocation.getParentFile().getPath()))) {
+ mkdirs = fileLocation.getParentFile().mkdirs();
+ }
+ if (mkdirs) {
+ try (
+ FileOutputStream fileOutputStream = new FileOutputStream(fileLocation);
+ OutputStreamWriter outputStream =
+ new OutputStreamWriter(fileOutputStream, Charset.forName("UTF-8"))) {
+ outputStream.write(content);
+ LOG.debug("Successfully created text file at location: {}", fileLocation.getPath());
+ }
+ } else {
+ throw new IllegalStateException(
+ String.format("Failed to create location to store text file: %s", fileLocation));
+ }
+
+ }
+
+
+ /**
+ * For testing purposes only we may sometime we may want to access private fields of underlying
+ * object to confirm the values are setup correctly.
+ *
+ * This method uses java reflection to get the value to private object in the class
+ *
+ * @param object Actual object which has the private field you want to check
+ * @param fieldName Field name in the Actual Object you want to get the value of
+ * @param privateFieldClass Type of the private field
+ * @param