diff options
Diffstat (limited to 'dcae-analytics-test')
-rw-r--r-- | dcae-analytics-test/pom.xml | 228 | ||||
-rw-r--r-- | dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/BaseDCAEAnalyticsCommonTest.java (renamed from dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsCommonTest.java) | 486 | ||||
-rw-r--r-- | dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/BaseDCAEAnalyticsIT.java (renamed from dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsIT.java) | 58 | ||||
-rw-r--r-- | dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/BaseDCAEAnalyticsUnitTest.java (renamed from dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsUnitTest.java) | 58 | ||||
-rw-r--r-- | dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/annotation/GuiceModules.java (renamed from dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/annotation/GuiceModules.java) | 90 | ||||
-rw-r--r-- | dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/runner/GuiceJUnitRunner.java (renamed from dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/runner/GuiceJUnitRunner.java) | 200 | ||||
-rw-r--r-- | dcae-analytics-test/src/main/resources/logback-test.xml | 110 |
7 files changed, 615 insertions, 615 deletions
diff --git a/dcae-analytics-test/pom.xml b/dcae-analytics-test/pom.xml index be600a6..697a0ee 100644 --- a/dcae-analytics-test/pom.xml +++ b/dcae-analytics-test/pom.xml @@ -1,114 +1,114 @@ -<!--
- ~ ===============================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===========================================
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.onap.dcaegen2.analytics.tca</groupId>
- <artifactId>dcae-analytics</artifactId>
- <version>2.1.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>dcae-analytics-test</artifactId>
- <packaging>jar</packaging>
-
- <!-- THIS MODULE CONTAINS COMMON TESTING CODE AND MUST NEVER BE DEPLOYED IN PRODUCTION ENVIRONMENT -->
- <name>DCAE Analytics Test</name>
- <description>Contains common testing code for all DCAE Analytics Modules</description>
-
-
- <properties>
- <main.basedir>${project.parent.basedir}</main.basedir>
- </properties>
-
- <dependencies>
-
- <!-- LOGGING -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
-
- <!-- UTILITIES -->
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </dependency>
- <dependency>
- <groupId>com.google.code.findbugs</groupId>
- <artifactId>jsr305</artifactId>
- </dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
-
- <!-- DEPENDENCY INJECTION -->
- <dependency>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- </dependency>
- <dependency>
- <groupId>com.google.inject.extensions</groupId>
- <artifactId>guice-assistedinject</artifactId>
- </dependency>
- <dependency>
- <groupId>com.google.inject.extensions</groupId>
- <artifactId>guice-multibindings</artifactId>
- </dependency>
-
- <!-- TEST DEPENDENCIES -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>com.jayway.jsonpath</groupId>
- <artifactId>json-path</artifactId>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>com.jayway.jsonpath</groupId>
- <artifactId>json-path-assert</artifactId>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.skyscreamer</groupId>
- <artifactId>jsonassert</artifactId>
- <scope>compile</scope>
- </dependency>
-
- </dependencies>
-
-</project>
+<!-- + ~ ===============================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=========================================== + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.onap.dcaegen2.analytics.tca</groupId> + <artifactId>dcae-analytics</artifactId> + <version>2.1.0-SNAPSHOT</version> + </parent> + + <artifactId>dcae-analytics-test</artifactId> + <packaging>jar</packaging> + + <!-- THIS MODULE CONTAINS COMMON TESTING CODE AND MUST NEVER BE DEPLOYED IN PRODUCTION ENVIRONMENT --> + <name>DCAE Analytics Test</name> + <description>Contains common testing code for all DCAE Analytics Modules</description> + + + <properties> + <main.basedir>${project.parent.basedir}</main.basedir> + </properties> + + <dependencies> + + <!-- LOGGING --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <!-- UTILITIES --> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + </dependency> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + </dependency> + + <!-- DEPENDENCY INJECTION --> + <dependency> + <groupId>com.google.inject</groupId> + <artifactId>guice</artifactId> + </dependency> + <dependency> + <groupId>com.google.inject.extensions</groupId> + <artifactId>guice-assistedinject</artifactId> + </dependency> + <dependency> + <groupId>com.google.inject.extensions</groupId> + <artifactId>guice-multibindings</artifactId> + </dependency> + + <!-- TEST DEPENDENCIES --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>com.jayway.jsonpath</groupId> + <artifactId>json-path</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>com.jayway.jsonpath</groupId> + <artifactId>json-path-assert</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.skyscreamer</groupId> + <artifactId>jsonassert</artifactId> + <scope>compile</scope> + </dependency> + + </dependencies> + +</project> 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/onap/dcae/apod/analytics/test/BaseDCAEAnalyticsCommonTest.java index 4f5015b..6566051 100644 --- a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsCommonTest.java +++ b/dcae-analytics-test/src/main/java/org/onap/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.
- * <p>
- * @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.
- * <p>
- * 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 <T> Class of Actual Object
- * @param <U> Class of private field
- * @return value of the private field
- */
- public static <T, U> U getPrivateFiledValue(T object, String fieldName, Class<U> privateFieldClass) {
-
- final Class<?> objectClass = object.getClass();
- try {
- final Field privateField = objectClass.getDeclaredField(fieldName);
- try {
-
- // mark private field to be accessible for testing purposes
- AccessController.doPrivileged(new PrivilegedAction() {
- @Override
- public Object run() {
- privateField.setAccessible(true);
- return null;
- }
- });
-
-
- return privateFieldClass.cast(privateField.get(object));
-
- } catch (IllegalAccessException e) {
- LOG.error("Unable to access field: {}", fieldName);
- throw new IllegalStateException(e);
- }
- } catch (NoSuchFieldException e) {
- LOG.error("Unable to locate field name: {} in class: {}", fieldName, objectClass.getSimpleName());
- throw new IllegalStateException(e);
- }
-
-
- }
-
-
- /**
- * Prints classpath jars which are visible inside the class
- *
- * @param classLoader classloader of the calling class
- */
- public static void dumpClasspath(ClassLoader classLoader) {
-
- LOG.info("Dumping ClassPath for classloader: {}", classLoader);
-
- if (classLoader instanceof URLClassLoader) {
-
- URLClassLoader ucl = (URLClassLoader) classLoader;
- LOG.info("\t ==========>>>" + Arrays.toString(ucl.getURLs()));
-
- } else {
- LOG.info("\t(cannot display components as not a URLClassLoader)");
- }
-
- if (classLoader.getParent() != null) {
- dumpClasspath(classLoader.getParent());
- }
- }
-
-}
+/* + * ===============================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.onap.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. + * <p> + * @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. + * <p> + * 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 <T> Class of Actual Object + * @param <U> Class of private field + * @return value of the private field + */ + public static <T, U> U getPrivateFiledValue(T object, String fieldName, Class<U> privateFieldClass) { + + final Class<?> objectClass = object.getClass(); + try { + final Field privateField = objectClass.getDeclaredField(fieldName); + try { + + // mark private field to be accessible for testing purposes + AccessController.doPrivileged(new PrivilegedAction() { + @Override + public Object run() { + privateField.setAccessible(true); + return null; + } + }); + + + return privateFieldClass.cast(privateField.get(object)); + + } catch (IllegalAccessException e) { + LOG.error("Unable to access field: {}", fieldName); + throw new IllegalStateException(e); + } + } catch (NoSuchFieldException e) { + LOG.error("Unable to locate field name: {} in class: {}", fieldName, objectClass.getSimpleName()); + throw new IllegalStateException(e); + } + + + } + + + /** + * Prints classpath jars which are visible inside the class + * + * @param classLoader classloader of the calling class + */ + public static void dumpClasspath(ClassLoader classLoader) { + + LOG.info("Dumping ClassPath for classloader: {}", classLoader); + + if (classLoader instanceof URLClassLoader) { + + URLClassLoader ucl = (URLClassLoader) classLoader; + LOG.info("\t ==========>>>" + Arrays.toString(ucl.getURLs())); + + } else { + LOG.info("\t(cannot display components as not a URLClassLoader)"); + } + + if (classLoader.getParent() != null) { + dumpClasspath(classLoader.getParent()); + } + } + +} diff --git a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsIT.java b/dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/BaseDCAEAnalyticsIT.java index a63d32c..d31fa73 100644 --- a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsIT.java +++ b/dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/BaseDCAEAnalyticsIT.java @@ -1,29 +1,29 @@ -/*
- * ===============================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;
-
-/**
- * Base class for all DCAE Analytics Integration Tests
- * <p>
- * @author Rajiv Singla . Creation Date: 10/6/2016.
- */
-public abstract class BaseDCAEAnalyticsIT extends BaseDCAEAnalyticsCommonTest {
-}
+/* + * ===============================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.onap.dcae.apod.analytics.test; + +/** + * Base class for all DCAE Analytics Integration Tests + * <p> + * @author Rajiv Singla . Creation Date: 10/6/2016. + */ +public abstract class BaseDCAEAnalyticsIT extends BaseDCAEAnalyticsCommonTest { +} diff --git a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsUnitTest.java b/dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/BaseDCAEAnalyticsUnitTest.java index 6b7cc9d..5f07e59 100644 --- a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/BaseDCAEAnalyticsUnitTest.java +++ b/dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/BaseDCAEAnalyticsUnitTest.java @@ -1,29 +1,29 @@ -/*
- * ===============================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;
-
-/**
- * Base class for all DCAE Analytics Unit Tests
- * <p>
- * @author Rajiv Singla . Creation Date: 10/6/2016.
- */
-public abstract class BaseDCAEAnalyticsUnitTest extends BaseDCAEAnalyticsCommonTest {
-}
+/* + * ===============================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.onap.dcae.apod.analytics.test; + +/** + * Base class for all DCAE Analytics Unit Tests + * <p> + * @author Rajiv Singla . Creation Date: 10/6/2016. + */ +public abstract class BaseDCAEAnalyticsUnitTest extends BaseDCAEAnalyticsCommonTest { +} diff --git a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/annotation/GuiceModules.java b/dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/annotation/GuiceModules.java index 1c20f17..9a1e5d4 100644 --- a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/annotation/GuiceModules.java +++ b/dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/annotation/GuiceModules.java @@ -1,45 +1,45 @@ -/*
- * ===============================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.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotation which can be used to provide test guice modules
- * <p>
- * @author Rajiv Singla . Creation Date: 10/20/2016.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Inherited
-public @interface GuiceModules {
-
- /**
- * Test Modules
- *
- * @return module classes
- */
- Class<?>[] value();
-}
+/* + * ===============================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.onap.dcae.apod.analytics.test.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Annotation which can be used to provide test guice modules + * <p> + * @author Rajiv Singla . Creation Date: 10/20/2016. + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +public @interface GuiceModules { + + /** + * Test Modules + * + * @return module classes + */ + Class<?>[] value(); +} diff --git a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/runner/GuiceJUnitRunner.java b/dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/runner/GuiceJUnitRunner.java index 93ef603..a1834d6 100644 --- a/dcae-analytics-test/src/main/java/org/openecomp/dcae/apod/analytics/test/runner/GuiceJUnitRunner.java +++ b/dcae-analytics-test/src/main/java/org/onap/dcae/apod/analytics/test/runner/GuiceJUnitRunner.java @@ -1,100 +1,100 @@ -/*
- * ===============================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.runner;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import org.junit.runners.BlockJUnit4ClassRunner;
-import org.junit.runners.model.InitializationError;
-import org.openecomp.dcae.apod.analytics.test.annotation.GuiceModules;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-
-/**
- * A custom Junit Runner which can be used to run Guice Test with custom Test Modules
- * <p>
- * @author Rajiv Singla . Creation Date: 10/20/2016.
- */
-public class GuiceJUnitRunner extends BlockJUnit4ClassRunner {
-
- private static final Logger LOG = LoggerFactory.getLogger(GuiceJUnitRunner.class);
-
- private final Injector injector;
-
- public GuiceJUnitRunner(Class<?> klass) throws InitializationError {
- super(klass);
- Class<?>[] classes = getModulesFor(klass);
- injector = createInjectorFor(classes);
- }
-
-
- /**
- * Returns a new fixture for running a test. Injects Guice members
- */
- @Override
- public Object createTest() throws Exception {
- Object obj = super.createTest();
- injector.injectMembers(obj);
- return obj;
- }
-
-
- /**
- * Creates new Guice Injector and registers Guice test modules
- *
- * @param classes test module classes
- * @return Guice injector with test modules
- * @throws InitializationError
- */
- private Injector createInjectorFor(Class<?>[] classes) throws InitializationError {
- Module[] modules = new Module[classes.length];
- for (int i = 0; i < classes.length; i++) {
- try {
- modules[i] = (Module) classes[i].newInstance();
- } catch (InstantiationException | IllegalAccessException e) {
- throw new InitializationError(e);
- }
- }
- LOG.debug("Creating Junit Test Runner with Guice Test Modules: {}", Arrays.toString(modules));
- return Guice.createInjector(modules);
- }
-
- /**
- * Extract user provide test modules from the {@link GuiceModules} annotation
- *
- * @param klass Target class which is running the test
- * @return Guice modules contained passed in annotation of Guice Modules
- * @throws InitializationError
- */
- private Class<?>[] getModulesFor(Class<?> klass) throws InitializationError {
- GuiceModules annotation = klass.getAnnotation(GuiceModules.class);
- if (annotation == null) {
- throw new InitializationError(
- "Missing @GuiceModules annotation for unit test '" + klass.getName()
- + "'");
- }
- return annotation.value();
- }
-
-}
+/* + * ===============================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.onap.dcae.apod.analytics.test.runner; + +import com.google.inject.Guice; +import com.google.inject.Injector; +import com.google.inject.Module; +import org.junit.runners.BlockJUnit4ClassRunner; +import org.junit.runners.model.InitializationError; +import org.onap.dcae.apod.analytics.test.annotation.GuiceModules; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; + +/** + * A custom Junit Runner which can be used to run Guice Test with custom Test Modules + * <p> + * @author Rajiv Singla . Creation Date: 10/20/2016. + */ +public class GuiceJUnitRunner extends BlockJUnit4ClassRunner { + + private static final Logger LOG = LoggerFactory.getLogger(GuiceJUnitRunner.class); + + private final Injector injector; + + public GuiceJUnitRunner(Class<?> klass) throws InitializationError { + super(klass); + Class<?>[] classes = getModulesFor(klass); + injector = createInjectorFor(classes); + } + + + /** + * Returns a new fixture for running a test. Injects Guice members + */ + @Override + public Object createTest() throws Exception { + Object obj = super.createTest(); + injector.injectMembers(obj); + return obj; + } + + + /** + * Creates new Guice Injector and registers Guice test modules + * + * @param classes test module classes + * @return Guice injector with test modules + * @throws InitializationError + */ + private Injector createInjectorFor(Class<?>[] classes) throws InitializationError { + Module[] modules = new Module[classes.length]; + for (int i = 0; i < classes.length; i++) { + try { + modules[i] = (Module) classes[i].newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + throw new InitializationError(e); + } + } + LOG.debug("Creating Junit Test Runner with Guice Test Modules: {}", Arrays.toString(modules)); + return Guice.createInjector(modules); + } + + /** + * Extract user provide test modules from the {@link GuiceModules} annotation + * + * @param klass Target class which is running the test + * @return Guice modules contained passed in annotation of Guice Modules + * @throws InitializationError + */ + private Class<?>[] getModulesFor(Class<?> klass) throws InitializationError { + GuiceModules annotation = klass.getAnnotation(GuiceModules.class); + if (annotation == null) { + throw new InitializationError( + "Missing @GuiceModules annotation for unit test '" + klass.getName() + + "'"); + } + return annotation.value(); + } + +} diff --git a/dcae-analytics-test/src/main/resources/logback-test.xml b/dcae-analytics-test/src/main/resources/logback-test.xml index 4857522..78cbdfa 100644 --- a/dcae-analytics-test/src/main/resources/logback-test.xml +++ b/dcae-analytics-test/src/main/resources/logback-test.xml @@ -1,55 +1,55 @@ -<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- ~ ===============================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===========================================
- -->
-<configuration debug="false">
-
- <!--
- Disabling some chatty loggers.
- -->
- <logger name="org.apache.commons.beanutils" level="ERROR"/>
- <logger name="org.apache.zookeeper.server" level="ERROR"/>
- <logger name="org.apache.zookeeper" level="ERROR"/>
- <logger name="com.ning" level="WARN"/>
- <logger name="org.apache.spark" level="WARN"/>
- <logger name="org.spark-project" level="WARN"/>
- <logger name="org.apache.hadoop" level="WARN"/>
- <logger name="org.apache.hive" level="WARN"/>
- <logger name="org.quartz.core" level="WARN"/>
- <logger name="org.eclipse.jetty" level="WARN"/>
- <logger name="io.netty.util.internal" level="WARN"/>
-
- <logger name="org.apache.twill" level="WARN"/>
- <logger name="co.cask.cdap" level="INFO"/>
- <logger name="org.openecomp.dcae.apod.analytics" level="DEBUG"/>
-
- <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</pattern>
- </encoder>
- </appender>
-
- <root level="ERROR">
- <appender-ref ref="Console"/>
- </root>
-
-
-</configuration>
-
+<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ ===============================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=========================================== + --> +<configuration debug="false"> + + <!-- + Disabling some chatty loggers. + --> + <logger name="org.apache.commons.beanutils" level="ERROR"/> + <logger name="org.apache.zookeeper.server" level="ERROR"/> + <logger name="org.apache.zookeeper" level="ERROR"/> + <logger name="com.ning" level="WARN"/> + <logger name="org.apache.spark" level="WARN"/> + <logger name="org.spark-project" level="WARN"/> + <logger name="org.apache.hadoop" level="WARN"/> + <logger name="org.apache.hive" level="WARN"/> + <logger name="org.quartz.core" level="WARN"/> + <logger name="org.eclipse.jetty" level="WARN"/> + <logger name="io.netty.util.internal" level="WARN"/> + + <logger name="org.apache.twill" level="WARN"/> + <logger name="co.cask.cdap" level="INFO"/> + <logger name="org.onap.dcae.apod.analytics" level="DEBUG"/> + + <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</pattern> + </encoder> + </appender> + + <root level="ERROR"> + <appender-ref ref="Console"/> + </root> + + +</configuration> + |