-/*
- * ===============================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