TCA: Support for VES/A&AI enrichment
[dcaegen2/analytics/tca.git] / dcae-analytics-cdap-plugins / src / test / java / org / openecomp / dcae / apod / analytics / cdap / plugins / utils / CDAPPluginUtilsTest.java
index 1483749..fbecb81 100644 (file)
-/*
- * ===============================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.cdap.plugins.utils;
-
-import co.cask.cdap.api.data.format.StructuredRecord;
-import co.cask.cdap.api.data.schema.Schema;
-import org.junit.Test;
-import org.openecomp.dcae.apod.analytics.cdap.plugins.BaseAnalyticsCDAPPluginsUnitTest;
-import org.openecomp.dcae.apod.analytics.common.exception.DCAEAnalyticsRuntimeException;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
-
-/**
- * @author Rajiv Singla . Creation Date: 1/30/2017.
- */
-public class CDAPPluginUtilsTest extends BaseAnalyticsCDAPPluginsUnitTest {
-
-
-    @Test
-    public void testValidateSchemaContainsFieldsWhenSchemaIsNotNull() throws Exception {
-        final Schema dMaaPMRSinkTestSchema = getDMaaPMRSinkTestSchema();
-        CDAPPluginUtils.validateSchemaContainsFields(dMaaPMRSinkTestSchema, "message");
-    }
-
-    @Test
-    public void testValidateSchemaContainsFieldsWhenInputSchemaIsNull() throws Exception {
-        CDAPPluginUtils.validateSchemaContainsFields(null, "message");
-    }
-
-    @Test
-    public void testCreateStructuredRecord() throws Exception {
-        final StructuredRecord testMessage = CDAPPluginUtils.createDMaaPMRResponseStructuredRecord("testMessage");
-        assertNotNull(testMessage);
-    }
-
-
-    @Test
-    public void testCreateOutputStructuredRecordBuilder() throws Exception {
-
-        final String messageFieldName = "message";
-        final String firstInputFieldName = "inputField1";
-        final String secondInputFieldName = "inputField2";
-
-
-        final Schema inputSchema = Schema.recordOf(
-                "inputSchema",
-                Schema.Field.of(messageFieldName, Schema.of(Schema.Type.STRING)),
-                Schema.Field.of(firstInputFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))),
-                Schema.Field.of(secondInputFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING)))
-        );
-
-        final String addedFieldName = "addedField";
-        final Schema outputSchema = Schema.recordOf(
-                "outputSchema",
-                Schema.Field.of(messageFieldName, Schema.of(Schema.Type.STRING)),
-                Schema.Field.of(firstInputFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))),
-                Schema.Field.of(addedFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))) // added field
-                // missing second Input Field
-        );
-
-        // input structured record
-        final String messageFieldValue = "Message String";
-        final String firstFieldValue = "Input Field 1";
-        final String secondFieldValue = "Input Field 2";
-        final StructuredRecord inputSR = StructuredRecord.builder(inputSchema)
-                .set(messageFieldName, messageFieldValue)
-                .set(firstInputFieldName, firstFieldValue)
-                .set(secondInputFieldName, secondFieldValue)
-                .build();
-
-        final StructuredRecord.Builder outputStructuredRecordBuilder =
-                CDAPPluginUtils.createOutputStructuredRecordBuilder(outputSchema, inputSR);
-
-        final String addedFieldValue = "Added Field Value";
-        final StructuredRecord outputSR = outputStructuredRecordBuilder
-                .set(addedFieldName, addedFieldValue)
-                .build();
-
-        assertThat("Added Field field value copied correctly",
-                outputSR.get(addedFieldName).toString(), is(addedFieldValue));
-
-        assertThat("Output SR has message field copied correctly",
-                outputSR.get(messageFieldName).toString(), is(messageFieldValue));
-
-        assertThat("First Field value copied correctly",
-                outputSR.get(firstInputFieldName).toString(), is(firstFieldValue));
-
-        assertNull("Second Field value is null as output schema does not have the field",
-                outputSR.get(secondInputFieldName));
-
-    }
-
-
-    @Test
-    public void testAddFieldValueToStructuredRecordBuilder() throws Exception {
-
-        final String messageFieldName = "message";
-        final String firstInputFieldName = "inputField1";
-        final String addedFieldName = "addedField";
-        final String firstFieldValue = "Input Field 1";
-        final String addedFieldValue = "Added Field Value";
-        final Schema outputSchema = Schema.recordOf(
-                "outputSchema",
-                Schema.Field.of(messageFieldName, Schema.of(Schema.Type.STRING)),
-                Schema.Field.of(firstInputFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))),
-                Schema.Field.of(addedFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))) // added field
-        );
-
-        final StructuredRecord.Builder outputSRBuilder = StructuredRecord.builder(outputSchema)
-                .set(messageFieldName, "Some message")
-                .set(firstInputFieldName, firstFieldValue);
-
-        final StructuredRecord.Builder addedFieldSRBuilder = CDAPPluginUtils.addFieldValueToStructuredRecordBuilder(
-                outputSRBuilder, outputSchema, addedFieldName, addedFieldValue);
-
-        // Try adding field to output Structured record that is not in output schema
-        final String nonExistentFieldName = "fieldNotInOutputSchema";
-        final String nonExistentFieldValue = "Some Value";
-        final StructuredRecord outputSR = CDAPPluginUtils.addFieldValueToStructuredRecordBuilder(
-                addedFieldSRBuilder, outputSchema, nonExistentFieldName, nonExistentFieldValue).build();
-
-        assertThat("Output SR must contain added Field which is in output schema",
-                outputSR.get(addedFieldName).toString(), is(addedFieldValue));
-        assertNull("Output SR must not contain field that is not in output schema",
-                outputSR.get(nonExistentFieldName));
-
-    }
-
-    @Test(expected = DCAEAnalyticsRuntimeException.class)
-    public void testValidateSchemaFieldTypeWhenInputSchemaIsNotValidJson() throws Exception {
-        CDAPPluginUtils.validateSchemaFieldType("Invalid Schema", "field1", Schema.Type.STRING);
-    }
-
-    @Test(expected = DCAEAnalyticsRuntimeException.class)
-    public void testSetOutputSchemaWhenOutputSchemaIsNotValidJson() throws Exception {
-        CDAPPluginUtils.setOutputSchema(null, "Invalid output Schema");
-    }
-
-    @Test(expected = DCAEAnalyticsRuntimeException.class)
-    public void testExtractFieldMappingsWhenFieldMappingValueIsEmpty() throws Exception {
-        CDAPPluginUtils.extractFieldMappings("path1:,path2:value2");
-    }
-
-    @Test(expected = DCAEAnalyticsRuntimeException.class)
-    public void testExtractFieldMappingsWhenFieldMappingAreBlank() throws Exception {
-        CDAPPluginUtils.extractFieldMappings("path1: ,path2:value2");
-    }
-
-
-}
+/*\r
+ * ===============================LICENSE_START======================================\r
+ *  dcae-analytics\r
+ * ================================================================================\r
+ *    Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ *  Licensed under the Apache License, Version 2.0 (the "License");\r
+ *  you may not use this file except in compliance with the License.\r
+ *   You may obtain a copy of the License at\r
+ *\r
+ *          http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ *  Unless required by applicable law or agreed to in writing, software\r
+ *  distributed under the License is distributed on an "AS IS" BASIS,\r
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ *  See the License for the specific language governing permissions and\r
+ *  limitations under the License.\r
+ *  ============================LICENSE_END===========================================\r
+ */\r
+\r
+package org.openecomp.dcae.apod.analytics.cdap.plugins.utils;\r
+\r
+import co.cask.cdap.api.data.format.StructuredRecord;\r
+import co.cask.cdap.api.data.schema.Schema;\r
+import org.junit.Test;\r
+import org.openecomp.dcae.apod.analytics.cdap.plugins.BaseAnalyticsCDAPPluginsUnitTest;\r
+import org.openecomp.dcae.apod.analytics.common.exception.DCAEAnalyticsRuntimeException;\r
+\r
+import static org.hamcrest.CoreMatchers.is;\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.junit.Assert.assertNull;\r
+import static org.junit.Assert.assertThat;\r
+\r
+/**\r
+ * @author Rajiv Singla . Creation Date: 1/30/2017.\r
+ */\r
+public class CDAPPluginUtilsTest extends BaseAnalyticsCDAPPluginsUnitTest {\r
+\r
+\r
+    @Test\r
+    public void testValidateSchemaContainsFieldsWhenSchemaIsNotNull() throws Exception {\r
+        final Schema dMaaPMRSinkTestSchema = getDMaaPMRSinkTestSchema();\r
+        CDAPPluginUtils.validateSchemaContainsFields(dMaaPMRSinkTestSchema, "message");\r
+    }\r
+\r
+    @Test\r
+    public void testValidateSchemaContainsFieldsWhenInputSchemaIsNull() throws Exception {\r
+        CDAPPluginUtils.validateSchemaContainsFields(null, "message");\r
+    }\r
+\r
+    @Test\r
+    public void testCreateStructuredRecord() throws Exception {\r
+        final StructuredRecord testMessage = CDAPPluginUtils.createDMaaPMRResponseStructuredRecord("testMessage");\r
+        assertNotNull(testMessage);\r
+    }\r
+\r
+\r
+    @Test\r
+    public void testCreateOutputStructuredRecordBuilder() throws Exception {\r
+\r
+        final String messageFieldName = "message";\r
+        final String firstInputFieldName = "inputField1";\r
+        final String secondInputFieldName = "inputField2";\r
+\r
+\r
+        final Schema inputSchema = Schema.recordOf(\r
+                "inputSchema",\r
+                Schema.Field.of(messageFieldName, Schema.of(Schema.Type.STRING)),\r
+                Schema.Field.of(firstInputFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))),\r
+                Schema.Field.of(secondInputFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING)))\r
+        );\r
+\r
+        final String addedFieldName = "addedField";\r
+        final Schema outputSchema = Schema.recordOf(\r
+                "outputSchema",\r
+                Schema.Field.of(messageFieldName, Schema.of(Schema.Type.STRING)),\r
+                Schema.Field.of(firstInputFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))),\r
+                Schema.Field.of(addedFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))) // added field\r
+                // missing second Input Field\r
+        );\r
+\r
+        // input structured record\r
+        final String messageFieldValue = "Message String";\r
+        final String firstFieldValue = "Input Field 1";\r
+        final String secondFieldValue = "Input Field 2";\r
+        final StructuredRecord inputSR = StructuredRecord.builder(inputSchema)\r
+                .set(messageFieldName, messageFieldValue)\r
+                .set(firstInputFieldName, firstFieldValue)\r
+                .set(secondInputFieldName, secondFieldValue)\r
+                .build();\r
+\r
+        final StructuredRecord.Builder outputStructuredRecordBuilder =\r
+                CDAPPluginUtils.createOutputStructuredRecordBuilder(outputSchema, inputSR);\r
+\r
+        final String addedFieldValue = "Added Field Value";\r
+        final StructuredRecord outputSR = outputStructuredRecordBuilder\r
+                .set(addedFieldName, addedFieldValue)\r
+                .build();\r
+\r
+        assertThat("Added Field field value copied correctly",\r
+                outputSR.get(addedFieldName).toString(), is(addedFieldValue));\r
+\r
+        assertThat("Output SR has message field copied correctly",\r
+                outputSR.get(messageFieldName).toString(), is(messageFieldValue));\r
+\r
+        assertThat("First Field value copied correctly",\r
+                outputSR.get(firstInputFieldName).toString(), is(firstFieldValue));\r
+\r
+        assertNull("Second Field value is null as output schema does not have the field",\r
+                outputSR.get(secondInputFieldName));\r
+\r
+    }\r
+\r
+\r
+    @Test\r
+    public void testAddFieldValueToStructuredRecordBuilder() throws Exception {\r
+\r
+        final String messageFieldName = "message";\r
+        final String firstInputFieldName = "inputField1";\r
+        final String addedFieldName = "addedField";\r
+        final String firstFieldValue = "Input Field 1";\r
+        final String addedFieldValue = "Added Field Value";\r
+        final Schema outputSchema = Schema.recordOf(\r
+                "outputSchema",\r
+                Schema.Field.of(messageFieldName, Schema.of(Schema.Type.STRING)),\r
+                Schema.Field.of(firstInputFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))),\r
+                Schema.Field.of(addedFieldName, Schema.nullableOf(Schema.of(Schema.Type.STRING))) // added field\r
+        );\r
+\r
+        final StructuredRecord.Builder outputSRBuilder = StructuredRecord.builder(outputSchema)\r
+                .set(messageFieldName, "Some message")\r
+                .set(firstInputFieldName, firstFieldValue);\r
+\r
+        final StructuredRecord.Builder addedFieldSRBuilder = CDAPPluginUtils.addFieldValueToStructuredRecordBuilder(\r
+                outputSRBuilder, outputSchema, addedFieldName, addedFieldValue);\r
+\r
+        // Try adding field to output Structured record that is not in output schema\r
+        final String nonExistentFieldName = "fieldNotInOutputSchema";\r
+        final String nonExistentFieldValue = "Some Value";\r
+        final StructuredRecord outputSR = CDAPPluginUtils.addFieldValueToStructuredRecordBuilder(\r
+                addedFieldSRBuilder, outputSchema, nonExistentFieldName, nonExistentFieldValue).build();\r
+\r
+        assertThat("Output SR must contain added Field which is in output schema",\r
+                outputSR.get(addedFieldName).toString(), is(addedFieldValue));\r
+        assertNull("Output SR must not contain field that is not in output schema",\r
+                outputSR.get(nonExistentFieldName));\r
+\r
+    }\r
+\r
+    @Test(expected = DCAEAnalyticsRuntimeException.class)\r
+    public void testValidateSchemaFieldTypeWhenInputSchemaIsNotValidJson() throws Exception {\r
+        CDAPPluginUtils.validateSchemaFieldType("Invalid Schema", "field1", Schema.Type.STRING);\r
+    }\r
+\r
+    @Test(expected = DCAEAnalyticsRuntimeException.class)\r
+    public void testSetOutputSchemaWhenOutputSchemaIsNotValidJson() throws Exception {\r
+        CDAPPluginUtils.setOutputSchema(null, "Invalid output Schema");\r
+    }\r
+\r
+    @Test(expected = DCAEAnalyticsRuntimeException.class)\r
+    public void testExtractFieldMappingsWhenFieldMappingValueIsEmpty() throws Exception {\r
+        CDAPPluginUtils.extractFieldMappings("path1:,path2:value2");\r
+    }\r
+\r
+    @Test(expected = DCAEAnalyticsRuntimeException.class)\r
+    public void testExtractFieldMappingsWhenFieldMappingAreBlank() throws Exception {\r
+        CDAPPluginUtils.extractFieldMappings("path1: ,path2:value2");\r
+    }\r
+\r
+\r
+}\r