summaryrefslogtreecommitdiffstats
path: root/plugins/plugins-context/context-schema/context-schema-avro/src/test/java
diff options
context:
space:
mode:
authorwaqas.ikram <waqas.ikram@ericsson.com>2018-06-05 16:18:01 +0100
committerwaqas.ikram <waqas.ikram@ericsson.com>2018-06-05 16:18:47 +0100
commitf94d7521936e66febee983ee7633aacaaf9d7390 (patch)
treebc93547a9541ca4f868a0f70f6e6d020458a1557 /plugins/plugins-context/context-schema/context-schema-avro/src/test/java
parent37d6fd9069eb30d88c4ad80b5f35099ed173cc13 (diff)
Adding apex plugins/plugins-context modules
Change-Id: I36fc295ffbd22661bf8bd091bfb20ebf6dcc7f5e Issue-ID: POLICY-862 Signed-off-by: waqas.ikram <waqas.ikram@ericsson.com>
Diffstat (limited to 'plugins/plugins-context/context-schema/context-schema-avro/src/test/java')
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaAAI.java76
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaArray.java107
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaEnum.java120
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaFixed.java130
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperBadSchemas.java123
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperMarshal.java277
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperUnmarshal.java371
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaMap.java135
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaRecord.java130
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaUnion.java109
-rw-r--r--plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestHealthCheckSchema.java119
11 files changed, 1697 insertions, 0 deletions
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaAAI.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaAAI.java
new file mode 100644
index 000000000..65eef39c2
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaAAI.java
@@ -0,0 +1,76 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.apache.avro.generic.GenericData.Array;
+import org.apache.avro.generic.GenericRecord;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.utilities.TextFileUtils;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaAAI {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+ private String aaiInventoryResponseSchema;
+
+ @Before
+ public void initTest() throws IOException {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ aaiInventoryResponseSchema =
+ TextFileUtils.getTextFileAsString("src/test/resources/avsc/AAIInventoryResponseItemType.avsc");
+ }
+
+ @Test
+ public void testAAIResponsePolicy() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", aaiInventoryResponseSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ final Array<?> newArrayEmpty = (Array<?>) schemaHelper.createNewInstance();
+ assertEquals(0, newArrayEmpty.size());
+
+ final String inString = TextFileUtils.getTextFileAsString("src/test/resources/data/AAIResponse4Policy.json");
+ final Array<?> newArrayFull = (Array<?>) schemaHelper.createNewInstance(inString);
+ final String vnfName = ((GenericRecord) ((GenericRecord) newArrayFull.get(0)).get("generic_DasH_vnf"))
+ .get("vnf_DasH_name").toString();
+ assertEquals("ZRDM2MMEX39", vnfName);
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaArray.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaArray.java
new file mode 100644
index 000000000..dc65c108d
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaArray.java
@@ -0,0 +1,107 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.apache.avro.generic.GenericData.Array;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.utilities.TextFileUtils;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaArray {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+ private String longArraySchema;
+ private String addressArraySchema;
+
+ @Before
+ public void initTest() throws IOException {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ longArraySchema = TextFileUtils.getTextFileAsString("src/test/resources/avsc/ArrayExampleLong.avsc");
+ addressArraySchema = TextFileUtils.getTextFileAsString("src/test/resources/avsc/ArrayExampleAddress.avsc");
+ }
+
+ @Test
+ public void testArrayInit() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", addressArraySchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ final Array<?> newArrayEmpty = (Array<?>) schemaHelper.createNewInstance();
+ assertEquals(0, newArrayEmpty.size());
+
+ final String inString =
+ TextFileUtils.getTextFileAsString("src/test/resources/data/ArrayExampleAddressFull.json");
+ final Array<?> newArrayFull = (Array<?>) schemaHelper.createNewInstance(inString);
+ assertEquals("{\"streetaddress\": \"1600 Pennsylvania Avenue\", \"city\": \"Washington DC\"}",
+ newArrayFull.get(0).toString());
+ }
+
+ @Test
+ public void testLongArrayUnmarshalMarshal() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroArray", "0.0.1"), "Avro", longArraySchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/ArrayExampleLongNull.json");
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/ArrayExampleLongFull.json");
+ }
+
+ @Test
+ public void testAddressArrayUnmarshalMarshal() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroArray", "0.0.1"), "Avro", addressArraySchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/ArrayExampleAddressNull.json");
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/ArrayExampleAddressFull.json");
+ }
+
+ private void testUnmarshalMarshal(final SchemaHelper schemaHelper, final String fileName) throws IOException {
+ final String inString = TextFileUtils.getTextFileAsString(fileName);
+ final Array<?> schemaObject = (Array<?>) schemaHelper.unmarshal(inString);
+ final String outString = schemaHelper.marshal2Json(schemaObject);
+ assertEquals(inString.replaceAll("\\s+", ""), outString.replaceAll("\\s+", ""));
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaEnum.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaEnum.java
new file mode 100644
index 000000000..0302345b3
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaEnum.java
@@ -0,0 +1,120 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import org.apache.avro.generic.GenericData.EnumSymbol;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.utilities.TextFileUtils;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaEnum {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+ private String enumSchema;
+
+ @Before
+ public void initTest() throws IOException {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ enumSchema = TextFileUtils.getTextFileAsString("src/test/resources/avsc/EnumSchema.avsc");
+ }
+
+ @Test
+ public void testEnumInit() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", enumSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ final EnumSymbol newEnumEmpty = (EnumSymbol) schemaHelper.createNewInstance();
+ assertEquals("SPADES", newEnumEmpty.toString());
+
+ final EnumSymbol newEnumFull = (EnumSymbol) schemaHelper.createNewInstance("\"HEARTS\"");
+ assertEquals("HEARTS", newEnumFull.toString());
+ }
+
+ @Test
+ public void testEnumUnmarshalMarshal() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroArray", "0.0.1"), "Avro", enumSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/EnumExampleHearts.json");
+
+ try {
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/EnumExampleNull.json");
+ fail("This test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals("AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: Expected fixed. Got VALUE_NULL",
+ e.getMessage());
+ }
+ try {
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/EnumExampleNull.json");
+ fail("This test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals("AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: Expected fixed. Got VALUE_NULL",
+ e.getMessage());
+ }
+ try {
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/EnumExampleBad0.json");
+ fail("This test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals("AvroTest:0.0.1: object \"\"TWEED\"\" Avro unmarshalling failed: Unknown symbol in enum TWEED",
+ e.getMessage());
+ }
+ try {
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/EnumExampleBad1.json");
+ fail("This test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: object \"\"Hearts\"\" Avro unmarshalling failed: Unknown symbol in enum Hearts",
+ e.getMessage());
+ }
+ }
+
+ private void testUnmarshalMarshal(final SchemaHelper schemaHelper, final String fileName) throws IOException {
+ final String inString = TextFileUtils.getTextFileAsString(fileName);
+ final EnumSymbol decodedObject = (EnumSymbol) schemaHelper.unmarshal(inString);
+ final String outString = schemaHelper.marshal2Json(decodedObject);
+ assertEquals(inString.replaceAll("[\\r?\\n]+", " "), outString.replaceAll("[\\r?\\n]+", " "));
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaFixed.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaFixed.java
new file mode 100644
index 000000000..f4906e5df
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaFixed.java
@@ -0,0 +1,130 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import org.apache.avro.generic.GenericData.Fixed;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.utilities.TextFileUtils;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaFixed {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+ private String fixedSchema;
+
+ @Before
+ public void initTest() throws IOException {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ fixedSchema = TextFileUtils.getTextFileAsString("src/test/resources/avsc/FixedSchema.avsc");
+ }
+
+ @Test
+ public void testFixedInit() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", fixedSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ try {
+ schemaHelper.createNewInstance();
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: could not create an instance of class \"org.apache.avro.generic.GenericData.Fixed\" using the default constructor \"Fixed()\"",
+ e.getMessage());
+ }
+
+ final String inString = TextFileUtils.getTextFileAsString("src/test/resources/data/FixedExampleGood.json");
+ final Fixed newFixedFull = (Fixed) schemaHelper.createNewInstance(inString);
+ assertTrue(newFixedFull.toString().startsWith("[48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65"));
+ assertTrue(newFixedFull.toString().endsWith("53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70]"));
+ }
+
+ @Test
+ public void testFixedUnmarshalMarshal() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroArray", "0.0.1"), "Avro", fixedSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/FixedExampleGood.json");
+
+ try {
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/FixedExampleNull.json");
+ fail("This test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals("AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: Expected fixed. Got VALUE_NULL",
+ e.getMessage());
+ }
+ try {
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/FixedExampleNull.json");
+ fail("This test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals("AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: Expected fixed. Got VALUE_NULL",
+ e.getMessage());
+ }
+ try {
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/FixedExampleBad0.json");
+ fail("This test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: object \"\"BADBAD\"\" Avro unmarshalling failed: Expected fixed length 64, but got6",
+ e.getMessage());
+ }
+ try {
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/FixedExampleBad1.json");
+ fail("This test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: object \"\"0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0\"\" Avro unmarshalling failed: Expected fixed length 64, but got65",
+ e.getMessage());
+ }
+ }
+
+ private void testUnmarshalMarshal(final SchemaHelper schemaHelper, final String fileName) throws IOException {
+ final String inString = TextFileUtils.getTextFileAsString(fileName);
+ final Fixed decodedObject = (Fixed) schemaHelper.unmarshal(inString);
+ final String outString = schemaHelper.marshal2Json(decodedObject);
+ assertEquals(inString.replaceAll("[\\r?\\n]+", " "), outString.replaceAll("[\\r?\\n]+", " "));
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperBadSchemas.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperBadSchemas.java
new file mode 100644
index 000000000..1e1a0bee0
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperBadSchemas.java
@@ -0,0 +1,123 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaHelperBadSchemas {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+
+ @Before
+ public void initTest() {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ }
+
+ @Test
+ public void badSchemaTest() {
+ final AxContextSchema avroBadSchema0 = new AxContextSchema(new AxArtifactKey("AvroBad0", "0.0.1"), "Avro", "}");
+ schemas.getSchemasMap().put(avroBadSchema0.getKey(), avroBadSchema0);
+
+ try {
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema0.getKey());
+ fail("This test should throw an exception");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad0:0.0.1\" schema is invalid"));
+ }
+
+ final AxContextSchema avroBadSchema1 = new AxContextSchema(new AxArtifactKey("AvroBad1", "0.0.1"), "Avro", "");
+ schemas.getSchemasMap().put(avroBadSchema1.getKey(), avroBadSchema1);
+
+ try {
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema1.getKey());
+ fail("This test should throw an exception");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad1:0.0.1\" schema is invalid"));
+ }
+
+ final AxContextSchema avroBadSchema2 =
+ new AxContextSchema(new AxArtifactKey("AvroBad2", "0.0.1"), "Avro", "{}");
+ schemas.getSchemasMap().put(avroBadSchema2.getKey(), avroBadSchema2);
+
+ try {
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema2.getKey());
+ fail("This test should throw an exception");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad2:0.0.1\" schema is invalid"));
+ }
+
+ final AxContextSchema avroBadSchema3 =
+ new AxContextSchema(new AxArtifactKey("AvroBad3", "0.0.1"), "Avro", "{zooby}");
+ schemas.getSchemasMap().put(avroBadSchema3.getKey(), avroBadSchema3);
+
+ try {
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema3.getKey());
+ fail("This test should throw an exception");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad3:0.0.1\" schema is invalid"));
+ }
+
+ final AxContextSchema avroBadSchema4 =
+ new AxContextSchema(new AxArtifactKey("AvroBad4", "0.0.1"), "Avro", "{\"zooby\"}");
+ schemas.getSchemasMap().put(avroBadSchema4.getKey(), avroBadSchema4);
+
+ try {
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema4.getKey());
+ fail("This test should throw an exception");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad4:0.0.1\" schema is invalid"));
+ }
+
+ final AxContextSchema avroBadSchema5 =
+ new AxContextSchema(new AxArtifactKey("AvroBad5", "0.0.1"), "Avro", "{\"type\": \"zooby\"}");
+ schemas.getSchemasMap().put(avroBadSchema5.getKey(), avroBadSchema5);
+
+ try {
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroBadSchema5.getKey());
+ fail("This test should throw an exception");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: avro context schema \"AvroBad5:0.0.1\" schema is invalid"));
+ }
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperMarshal.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperMarshal.java
new file mode 100644
index 000000000..1b35d8275
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperMarshal.java
@@ -0,0 +1,277 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaHelperMarshal {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+
+ @Before
+ public void initTest() {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ }
+
+ @Test
+ public void testNullMarshal() {
+ final AxContextSchema avroNullSchema =
+ new AxContextSchema(new AxArtifactKey("AvroNull", "0.0.1"), "Avro", "{\"type\": \"null\"}");
+
+ schemas.getSchemasMap().put(avroNullSchema.getKey(), avroNullSchema);
+ final SchemaHelper schemaHelper0 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroNullSchema.getKey());
+
+ assertEquals("null", schemaHelper0.marshal2Json(null));
+ assertEquals("null", schemaHelper0.marshal2Json(123));
+ assertEquals("null", schemaHelper0.marshal2Json("Everything is marshalled to Null, no matter what it is"));
+ }
+
+ @Test
+ public void testBooleanMarshal() {
+ final AxContextSchema avroBooleanSchema =
+ new AxContextSchema(new AxArtifactKey("AvroBoolean", "0.0.1"), "Avro", "{\"type\": \"boolean\"}");
+
+ schemas.getSchemasMap().put(avroBooleanSchema.getKey(), avroBooleanSchema);
+ final SchemaHelper schemaHelper1 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroBooleanSchema.getKey());
+
+ assertEquals("true", schemaHelper1.marshal2Json(true));
+ assertEquals("false", schemaHelper1.marshal2Json(false));
+ try {
+ schemaHelper1.marshal2Json(0);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ e.printStackTrace();
+ assertEquals(
+ "AvroTest:0.0.1: object \"0\" Avro marshalling failed: java.lang.Integer cannot be cast to java.lang.Boolean",
+ e.getMessage());
+ }
+ try {
+ schemaHelper1.marshal2Json("0");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ e.printStackTrace();
+ assertEquals(
+ "AvroTest:0.0.1: object \"0\" Avro marshalling failed: java.lang.String cannot be cast to java.lang.Boolean",
+ e.getMessage());
+ }
+ }
+
+ @Test
+ public void testIntMarshal() {
+ final AxContextSchema avroIntSchema =
+ new AxContextSchema(new AxArtifactKey("AvroInt", "0.0.1"), "Avro", "{\"type\": \"int\"}");
+
+ schemas.getSchemasMap().put(avroIntSchema.getKey(), avroIntSchema);
+ final SchemaHelper schemaHelper2 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroIntSchema.getKey());
+
+ assertEquals("0", schemaHelper2.marshal2Json(0));
+ assertEquals("1", schemaHelper2.marshal2Json(1));
+ assertEquals("-1", schemaHelper2.marshal2Json(-1));
+ assertEquals("1", schemaHelper2.marshal2Json(1.23));
+ assertEquals("-1", schemaHelper2.marshal2Json(-1.23));
+ assertEquals("2147483647", schemaHelper2.marshal2Json(2147483647));
+ assertEquals("-2147483648", schemaHelper2.marshal2Json(-2147483648));
+ try {
+ schemaHelper2.marshal2Json("Hello");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().startsWith(
+ "AvroTest:0.0.1: object \"Hello\" Avro marshalling failed: java.lang.String cannot be cast to java.lang.Number"));
+ }
+ try {
+ schemaHelper2.marshal2Json(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: cannot encode a null object of class \"java.lang.Integer\""));
+ }
+ }
+
+ @Test
+ public void testLongMarshal() {
+ final AxContextSchema avroLongSchema =
+ new AxContextSchema(new AxArtifactKey("AvroLong", "0.0.1"), "Avro", "{\"type\": \"long\"}");
+
+ schemas.getSchemasMap().put(avroLongSchema.getKey(), avroLongSchema);
+ final SchemaHelper schemaHelper3 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroLongSchema.getKey());
+
+ assertEquals("0", schemaHelper3.marshal2Json(0L));
+ assertEquals("1", schemaHelper3.marshal2Json(1L));
+ assertEquals("-1", schemaHelper3.marshal2Json(-1L));
+ assertEquals("9223372036854775807", schemaHelper3.marshal2Json(9223372036854775807L));
+ assertEquals("-9223372036854775808", schemaHelper3.marshal2Json(-9223372036854775808L));
+ try {
+ schemaHelper3.marshal2Json("Hello");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().startsWith(
+ "AvroTest:0.0.1: object \"Hello\" Avro marshalling failed: java.lang.String cannot be cast to java.lang.Long"));
+ }
+ try {
+ schemaHelper3.marshal2Json(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: cannot encode a null object of class \"java.lang.Long\""));
+ }
+ }
+
+ @Test
+ public void testFloatMarshal() {
+ final AxContextSchema avroFloatSchema =
+ new AxContextSchema(new AxArtifactKey("AvroFloat", "0.0.1"), "Avro", "{\"type\": \"float\"}");
+
+ schemas.getSchemasMap().put(avroFloatSchema.getKey(), avroFloatSchema);
+ final SchemaHelper schemaHelper4 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroFloatSchema.getKey());
+
+ assertEquals("0.0", schemaHelper4.marshal2Json(0F));
+ assertEquals("1.0", schemaHelper4.marshal2Json(1F));
+ assertEquals("-1.0", schemaHelper4.marshal2Json(-1F));
+ assertEquals("1.23", schemaHelper4.marshal2Json(1.23F));
+ assertEquals("-1.23", schemaHelper4.marshal2Json(-1.23F));
+ assertEquals("9.223372E18", schemaHelper4.marshal2Json(9.223372E18F));
+ assertEquals("-9.223372E18", schemaHelper4.marshal2Json(-9.223372E18F));
+ assertEquals("9.223372E18", schemaHelper4.marshal2Json(9.223372E18F));
+ assertEquals("-9.223372E18", schemaHelper4.marshal2Json(-9.223372E18F));
+ try {
+ schemaHelper4.marshal2Json("Hello");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().startsWith(
+ "AvroTest:0.0.1: object \"Hello\" Avro marshalling failed: java.lang.String cannot be cast to java.lang.Float"));
+ }
+ try {
+ schemaHelper4.marshal2Json(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: cannot encode a null object of class \"java.lang.Float\""));
+ }
+ }
+
+
+ @Test
+ public void testDoubleMarshal() {
+ final AxContextSchema avroDoubleSchema =
+ new AxContextSchema(new AxArtifactKey("AvroDouble", "0.0.1"), "Avro", "{\"type\": \"double\"}");
+
+ schemas.getSchemasMap().put(avroDoubleSchema.getKey(), avroDoubleSchema);
+ final SchemaHelper schemaHelper5 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroDoubleSchema.getKey());
+
+ assertEquals("0.0", schemaHelper5.marshal2Json(0D));
+ assertEquals("1.0", schemaHelper5.marshal2Json(1D));
+ assertEquals("-1.0", schemaHelper5.marshal2Json(-1D));
+ assertEquals("1.23", schemaHelper5.marshal2Json(1.23));
+ assertEquals("-1.23", schemaHelper5.marshal2Json(-1.23));
+ assertEquals("9.223372036854776E18", schemaHelper5.marshal2Json(9.223372036854776E18));
+ assertEquals("-9.223372036854776E18", schemaHelper5.marshal2Json(-9.223372036854776E18));
+ assertEquals("9.223372036854776E18", schemaHelper5.marshal2Json(9.223372036854776E18));
+ assertEquals("-9.223372036854776E18", schemaHelper5.marshal2Json(-9.223372036854776E18));
+ try {
+ schemaHelper5.marshal2Json("Hello");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().startsWith(
+ "AvroTest:0.0.1: object \"Hello\" Avro marshalling failed: java.lang.String cannot be cast to java.lang.Double"));
+ }
+ try {
+ schemaHelper5.marshal2Json(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: cannot encode a null object of class \"java.lang.Double\""));
+ }
+ }
+
+ @Test
+ public void testStringMarshal() {
+ final AxContextSchema avroStringSchema =
+ new AxContextSchema(new AxArtifactKey("AvroString", "0.0.1"), "Avro", "{\"type\": \"string\"}");
+
+ schemas.getSchemasMap().put(avroStringSchema.getKey(), avroStringSchema);
+ final SchemaHelper schemaHelper7 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroStringSchema.getKey());
+
+ assertEquals("\"0\"", schemaHelper7.marshal2Json("0"));
+ assertEquals("\"1\"", schemaHelper7.marshal2Json("1"));
+ assertEquals("\"-1\"", schemaHelper7.marshal2Json("-1"));
+ assertEquals("\"1.23\"", schemaHelper7.marshal2Json("1.23"));
+ assertEquals("\"-1.23\"", schemaHelper7.marshal2Json("-1.23"));
+ assertEquals("\"9223372036854775807\"", schemaHelper7.marshal2Json("9223372036854775807"));
+ assertEquals("\"-9223372036854775808\"", schemaHelper7.marshal2Json("-9223372036854775808"));
+ assertEquals("\"9223372036854775808\"", schemaHelper7.marshal2Json("9223372036854775808"));
+ assertEquals("\"-9223372036854775809\"", schemaHelper7.marshal2Json("-9223372036854775809"));
+ assertEquals("\"Hello\"", schemaHelper7.marshal2Json("Hello"));
+ try {
+ schemaHelper7.marshal2Json(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: cannot encode a null object of class \"java.lang.String\""));
+ }
+ }
+
+ @Test
+ public void testBytesMarshal() {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroString", "0.0.1"), "Avro", "{\"type\": \"bytes\"}");
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ final byte[] helloBytes = {104, 101, 108, 108, 111};
+ final String helloOut = schemaHelper.marshal2Json(helloBytes);
+ assertEquals("\"hello\"", helloOut);
+
+ try {
+ schemaHelper.marshal2Json(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage()
+ .startsWith("AvroTest:0.0.1: cannot encode a null object of class \"java.lang.Byte[]\""));
+ }
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperUnmarshal.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperUnmarshal.java
new file mode 100644
index 000000000..725ebb221
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaHelperUnmarshal.java
@@ -0,0 +1,371 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.apache.avro.util.Utf8;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaHelperUnmarshal {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+
+ @Before
+ public void initTest() {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ }
+
+ // @Test
+ public void testNullUnmarshal() {
+ final AxContextSchema avroNullSchema =
+ new AxContextSchema(new AxArtifactKey("AvroNull", "0.0.1"), "Avro", "{\"type\": \"null\"}");
+
+ schemas.getSchemasMap().put(avroNullSchema.getKey(), avroNullSchema);
+ final SchemaHelper schemaHelper0 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroNullSchema.getKey());
+
+ try {
+ schemaHelper0.createNewInstance();
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals("AvroTest:0.0.1: could not create an instance, schema class for the schema is null",
+ e.getMessage());
+ }
+
+ assertEquals(null, schemaHelper0.unmarshal("null"));
+
+ try {
+ schemaHelper0.unmarshal("123");
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: object \"123\" Avro unmarshalling failed: Expected null. Got VALUE_NUMBER_INT",
+ e.getMessage());
+ }
+ }
+
+ // @Test
+ public void testBooleanUnmarshal() {
+ final AxContextSchema avroBooleanSchema =
+ new AxContextSchema(new AxArtifactKey("AvroBoolean", "0.0.1"), "Avro", "{\"type\": \"boolean\"}");
+
+ schemas.getSchemasMap().put(avroBooleanSchema.getKey(), avroBooleanSchema);
+ final SchemaHelper schemaHelper1 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroBooleanSchema.getKey());
+
+ try {
+ schemaHelper1.createNewInstance();
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: could not create an instance of class \"java.lang.Boolean\" using the default constructor \"Boolean()\"",
+ e.getMessage());
+ }
+ assertEquals(true, schemaHelper1.createNewInstance("true"));
+
+ assertEquals(true, schemaHelper1.unmarshal("true"));
+ assertEquals(false, schemaHelper1.unmarshal("false"));
+ try {
+ schemaHelper1.unmarshal(0);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: object \"0\" Avro unmarshalling failed: Expected boolean. Got VALUE_NUMBER_INT",
+ e.getMessage());
+ }
+ }
+
+ // @Test
+ public void testIntUnmarshal() {
+ final AxContextSchema avroIntSchema =
+ new AxContextSchema(new AxArtifactKey("AvroInt", "0.0.1"), "Avro", "{\"type\": \"int\"}");
+
+ schemas.getSchemasMap().put(avroIntSchema.getKey(), avroIntSchema);
+ final SchemaHelper schemaHelper2 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroIntSchema.getKey());
+
+ try {
+ schemaHelper2.createNewInstance();
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: could not create an instance of class \"java.lang.Integer\" using the default constructor \"Integer()\"",
+ e.getMessage());
+ }
+ assertEquals(123, schemaHelper2.createNewInstance("123"));
+
+ assertEquals(0, schemaHelper2.unmarshal("0"));
+ assertEquals(1, schemaHelper2.unmarshal("1"));
+ assertEquals(-1, schemaHelper2.unmarshal("-1"));
+ assertEquals(1, schemaHelper2.unmarshal("1.23"));
+ assertEquals(-1, schemaHelper2.unmarshal("-1.23"));
+ assertEquals(2147483647, schemaHelper2.unmarshal("2147483647"));
+ assertEquals(-2147483648, schemaHelper2.unmarshal("-2147483648"));
+ try {
+ schemaHelper2.unmarshal("2147483648");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().startsWith(
+ "AvroTest:0.0.1: object \"2147483648\" Avro unmarshalling failed: Numeric value (2147483648) out of range of int"));
+ }
+ try {
+ schemaHelper2.unmarshal("-2147483649");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().startsWith(
+ "AvroTest:0.0.1: object \"-2147483649\" Avro unmarshalling failed: Numeric value (-2147483649) out of range of int"));
+ }
+ try {
+ schemaHelper2.unmarshal(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().equals(
+ "AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: String to read from cannot be null!"));
+ }
+ }
+
+ // @Test
+ public void testLongUnmarshal() {
+ final AxContextSchema avroLongSchema =
+ new AxContextSchema(new AxArtifactKey("AvroLong", "0.0.1"), "Avro", "{\"type\": \"long\"}");
+
+ schemas.getSchemasMap().put(avroLongSchema.getKey(), avroLongSchema);
+ final SchemaHelper schemaHelper3 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroLongSchema.getKey());
+
+ try {
+ schemaHelper3.createNewInstance();
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: could not create an instance of class \"java.lang.Long\" using the default constructor \"Long()\"",
+ e.getMessage());
+ }
+ assertEquals(123456789L, schemaHelper3.createNewInstance("123456789"));
+
+ assertEquals(0L, schemaHelper3.unmarshal("0"));
+ assertEquals(1L, schemaHelper3.unmarshal("1"));
+ assertEquals(-1L, schemaHelper3.unmarshal("-1"));
+ assertEquals(1L, schemaHelper3.unmarshal("1.23"));
+ assertEquals(-1L, schemaHelper3.unmarshal("-1.23"));
+ assertEquals(9223372036854775807L, schemaHelper3.unmarshal("9223372036854775807"));
+ assertEquals(-9223372036854775808L, schemaHelper3.unmarshal("-9223372036854775808"));
+ try {
+ schemaHelper3.unmarshal("9223372036854775808");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().startsWith(
+ "AvroTest:0.0.1: object \"9223372036854775808\" Avro unmarshalling failed: Numeric value (9223372036854775808) out of range of long"));
+ }
+ try {
+ schemaHelper3.unmarshal("-9223372036854775809");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().startsWith(
+ "AvroTest:0.0.1: object \"-9223372036854775809\" Avro unmarshalling failed: Numeric value (-9223372036854775809) out of range of long"));
+ }
+ try {
+ schemaHelper3.unmarshal("\"Hello\"");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().equals(
+ "AvroTest:0.0.1: object \"\"Hello\"\" Avro unmarshalling failed: Expected long. Got VALUE_STRING"));
+ }
+ try {
+ schemaHelper3.unmarshal(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().equals(
+ "AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: String to read from cannot be null!"));
+ }
+ }
+
+ // @Test
+ public void testFloatUnmarshal() {
+ final AxContextSchema avroFloatSchema =
+ new AxContextSchema(new AxArtifactKey("AvroFloat", "0.0.1"), "Avro", "{\"type\": \"float\"}");
+
+ schemas.getSchemasMap().put(avroFloatSchema.getKey(), avroFloatSchema);
+ final SchemaHelper schemaHelper4 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroFloatSchema.getKey());
+
+ try {
+ schemaHelper4.createNewInstance();
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: could not create an instance of class \"java.lang.Float\" using the default constructor \"Float()\"",
+ e.getMessage());
+ }
+ assertEquals(1.2345F, schemaHelper4.createNewInstance("1.2345"));
+
+ assertEquals(0.0F, schemaHelper4.unmarshal("0"));
+ assertEquals(1.0F, schemaHelper4.unmarshal("1"));
+ assertEquals(-1.0F, schemaHelper4.unmarshal("-1"));
+ assertEquals(1.23F, schemaHelper4.unmarshal("1.23"));
+ assertEquals(-1.23F, schemaHelper4.unmarshal("-1.23"));
+ assertEquals(9.223372E18F, schemaHelper4.unmarshal("9223372036854775807"));
+ assertEquals(-9.223372E18F, schemaHelper4.unmarshal("-9223372036854775808"));
+ assertEquals(9.223372E18F, schemaHelper4.unmarshal("9223372036854775808"));
+ assertEquals(-9.223372E18F, schemaHelper4.unmarshal("-9223372036854775809"));
+ try {
+ schemaHelper4.unmarshal("\"Hello\"");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().equals(
+ "AvroTest:0.0.1: object \"\"Hello\"\" Avro unmarshalling failed: Expected float. Got VALUE_STRING"));
+ }
+ try {
+ schemaHelper4.unmarshal(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().equals(
+ "AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: String to read from cannot be null!"));
+ }
+ }
+
+ // @Test
+ public void testDoubleUnmarshal() {
+ final AxContextSchema avroDoubleSchema =
+ new AxContextSchema(new AxArtifactKey("AvroDouble", "0.0.1"), "Avro", "{\"type\": \"double\"}");
+
+ schemas.getSchemasMap().put(avroDoubleSchema.getKey(), avroDoubleSchema);
+ final SchemaHelper schemaHelper5 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroDoubleSchema.getKey());
+
+ try {
+ schemaHelper5.createNewInstance();
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: could not create an instance of class \"java.lang.Double\" using the default constructor \"Double()\"",
+ e.getMessage());
+ }
+ assertEquals(1.2345E06, schemaHelper5.createNewInstance("1.2345E06"));
+
+ assertEquals(0.0, schemaHelper5.unmarshal("0"));
+ assertEquals(1.0, schemaHelper5.unmarshal("1"));
+ assertEquals(-1.0, schemaHelper5.unmarshal("-1"));
+ assertEquals(1.23, schemaHelper5.unmarshal("1.23"));
+ assertEquals(-1.23, schemaHelper5.unmarshal("-1.23"));
+ assertEquals(9.223372036854776E18, schemaHelper5.unmarshal("9223372036854775807"));
+ assertEquals(-9.223372036854776E18, schemaHelper5.unmarshal("-9223372036854775808"));
+ assertEquals(9.223372036854776E18, schemaHelper5.unmarshal("9223372036854775808"));
+ assertEquals(-9.223372036854776E18, schemaHelper5.unmarshal("-9223372036854775809"));
+ try {
+ schemaHelper5.unmarshal("\"Hello\"");
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().equals(
+ "AvroTest:0.0.1: object \"\"Hello\"\" Avro unmarshalling failed: Expected double. Got VALUE_STRING"));
+ }
+ try {
+ schemaHelper5.unmarshal(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().equals(
+ "AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: String to read from cannot be null!"));
+ }
+ }
+
+ @Test
+ public void testStringUnmarshal() {
+ final AxContextSchema avroStringSchema =
+ new AxContextSchema(new AxArtifactKey("AvroString", "0.0.1"), "Avro", "{\"type\": \"string\"}");
+
+ schemas.getSchemasMap().put(avroStringSchema.getKey(), avroStringSchema);
+ final SchemaHelper schemaHelper7 =
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroStringSchema.getKey());
+
+ assertEquals("", schemaHelper7.createNewInstance(""));
+ assertEquals("1.2345E06", schemaHelper7.createNewInstance("1.2345E06"));
+
+ assertEquals("0", schemaHelper7.unmarshal("0"));
+ assertEquals("1", schemaHelper7.unmarshal("1"));
+ assertEquals("-1", schemaHelper7.unmarshal("-1"));
+ assertEquals("1.23", schemaHelper7.unmarshal("1.23"));
+ assertEquals("-1.23", schemaHelper7.unmarshal("-1.23"));
+ assertEquals("9223372036854775807", schemaHelper7.unmarshal("9223372036854775807"));
+ assertEquals("-9223372036854775808", schemaHelper7.unmarshal("-9223372036854775808"));
+ assertEquals("9223372036854775808", schemaHelper7.unmarshal("9223372036854775808"));
+ assertEquals("-9223372036854775809", schemaHelper7.unmarshal("-9223372036854775809"));
+ assertEquals("Hello", schemaHelper7.unmarshal("Hello"));
+ assertEquals("Hello", schemaHelper7.unmarshal(new Utf8("Hello")));
+ try {
+ schemaHelper7.unmarshal(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().equals(
+ "AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: String to read from cannot be null!"));
+ }
+ }
+
+ @Test
+ public void testBytesUnmarshal() {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroString", "0.0.1"), "Avro", "{\"type\": \"bytes\"}");
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ try {
+ schemaHelper.createNewInstance();
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertEquals(
+ "AvroTest:0.0.1: could not create an instance of class \"java.lang.Byte[]\" using the default constructor \"Byte[]()\"",
+ e.getMessage());
+ }
+ final byte[] newBytes = (byte[]) schemaHelper.createNewInstance("\"hello\"");
+ assertEquals(5, newBytes.length);
+ assertEquals(104, newBytes[0]);
+ assertEquals(101, newBytes[1]);
+ assertEquals(108, newBytes[2]);
+ assertEquals(108, newBytes[3]);
+ assertEquals(111, newBytes[4]);
+
+ try {
+ schemaHelper.unmarshal(null);
+ fail("Test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().equals(
+ "AvroTest:0.0.1: object \"null\" Avro unmarshalling failed: String to read from cannot be null!"));
+ }
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaMap.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaMap.java
new file mode 100644
index 000000000..74591bb99
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaMap.java
@@ -0,0 +1,135 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+
+import org.apache.avro.util.Utf8;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.utilities.TextFileUtils;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaMap {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+ private String longMapSchema;
+ private String addressMapSchema;
+ private String addressMapSchemaInvalidFields;
+
+ @Before
+ public void initTest() throws IOException {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ longMapSchema = TextFileUtils.getTextFileAsString("src/test/resources/avsc/MapExampleLong.avsc");
+ addressMapSchema = TextFileUtils.getTextFileAsString("src/test/resources/avsc/MapExampleAddress.avsc");
+ addressMapSchemaInvalidFields =
+ TextFileUtils.getTextFileAsString("src/test/resources/avsc/MapExampleAddressInvalidFields.avsc");
+ }
+
+ @Test
+ public void testMapInit() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", addressMapSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ final HashMap<?, ?> newMapEmpty = (HashMap<?, ?>) schemaHelper.createNewInstance();
+ assertEquals(0, newMapEmpty.size());
+
+ final String inString = TextFileUtils.getTextFileAsString("src/test/resources/data/MapExampleAddressFull.json");
+ final HashMap<?, ?> newMapFull = (HashMap<?, ?>) schemaHelper.createNewInstance(inString);
+
+ assertEquals("{\"streetaddress\": \"221 B Baker St.\", \"city\": \"London\"}",
+ newMapFull.get(new Utf8("address2")).toString());
+ }
+
+ @Test
+ public void testLongMapUnmarshalMarshal() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroMap", "0.0.1"), "Avro", longMapSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/MapExampleLongNull.json");
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/MapExampleLongFull.json");
+ }
+
+ @Test
+ public void testAddressMapUnmarshalMarshal() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroMap", "0.0.1"), "Avro", addressMapSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/MapExampleAddressNull.json");
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/MapExampleAddressFull.json");
+ }
+
+ @Test
+ public void testAddressMapUnmarshalMarshalInvalidFields() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroMap", "0.0.1"), "Avro", addressMapSchemaInvalidFields);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/MapExampleAddressInvalidFields.json");
+ }
+
+ private void testUnmarshalMarshal(final SchemaHelper schemaHelper, final String fileName) throws IOException {
+ final String originalInString = TextFileUtils.getTextFileAsString(fileName);
+ final HashMap<?, ?> firstDecodedMap = (HashMap<?, ?>) schemaHelper.unmarshal(originalInString);
+
+ final String outString = schemaHelper.marshal2Json(firstDecodedMap);
+
+ final File tempOutFile = File.createTempFile("ApexAvro", ".json");
+ TextFileUtils.putStringAsFile(outString, tempOutFile);
+
+ final String decodeEncodeInString = TextFileUtils.getTextFileAsString(fileName);
+ tempOutFile.delete();
+
+ final HashMap<?, ?> secondDecodedMap = (HashMap<?, ?>) schemaHelper.unmarshal(decodeEncodeInString);
+
+ // Now check that our doubly encoded map equals the first decoded map, Java map equals
+ // checks values and keys
+ assertEquals(firstDecodedMap, secondDecodedMap);
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaRecord.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaRecord.java
new file mode 100644
index 000000000..b793ef0ae
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaRecord.java
@@ -0,0 +1,130 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.apache.avro.generic.GenericRecord;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.utilities.TextFileUtils;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaRecord {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+ private String recordSchema;
+ private String recordSchemaVPN;
+ private String recordSchemaVPNReuse;
+ private String recordSchemaInvalidFields;
+
+ @Before
+ public void initTest() throws IOException {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ recordSchema = TextFileUtils.getTextFileAsString("src/test/resources/avsc/RecordExample.avsc");
+ recordSchemaVPN = TextFileUtils.getTextFileAsString("src/test/resources/avsc/RecordExampleVPN.avsc");
+ recordSchemaVPNReuse = TextFileUtils.getTextFileAsString("src/test/resources/avsc/RecordExampleVPNReuse.avsc");
+ recordSchemaInvalidFields =
+ TextFileUtils.getTextFileAsString("src/test/resources/avsc/RecordExampleInvalidFields.avsc");
+ }
+
+ @Test
+ public void testRecordInit() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", recordSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ final GenericRecord newRecordEmpty = (GenericRecord) schemaHelper.createNewInstance();
+ assertEquals(null, newRecordEmpty.get("passwordHash"));
+
+ final String inString = TextFileUtils.getTextFileAsString("src/test/resources/data/RecordExampleFull.json");
+ final GenericRecord newRecordFull = (GenericRecord) schemaHelper.createNewInstance(inString);
+ assertEquals("gobbledygook", newRecordFull.get("passwordHash").toString());
+ }
+
+ @Test
+ public void testRecordUnmarshalMarshal() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", recordSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/RecordExampleNull.json");
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/RecordExampleFull.json");
+ }
+
+ @Test
+ public void testRecordUnmarshalMarshalInvalid() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", recordSchemaInvalidFields);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/RecordExampleInvalidFields.json");
+ }
+
+ @Test
+ public void testVPNRecordUnmarshalMarshal() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", recordSchemaVPN);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/RecordExampleVPNFull.json");
+ }
+
+ @Test
+ public void testVPNRecordReuse() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", recordSchemaVPNReuse);
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+ }
+
+ private void testUnmarshalMarshal(final SchemaHelper schemaHelper, final String fileName) throws IOException {
+ final String inString = TextFileUtils.getTextFileAsString(fileName);
+ final GenericRecord decodedObject = (GenericRecord) schemaHelper.unmarshal(inString);
+ final String outString = schemaHelper.marshal2Json(decodedObject);
+ assertEquals(inString.replaceAll("\\s+", ""), outString.replaceAll("\\s+", ""));
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaUnion.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaUnion.java
new file mode 100644
index 000000000..100b51d44
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestAvroSchemaUnion.java
@@ -0,0 +1,109 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.apache.avro.generic.GenericRecord;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.utilities.TextFileUtils;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @version
+ */
+public class TestAvroSchemaUnion {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+ private String uinionSchema;
+
+ @Before
+ public void initTest() throws IOException {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ uinionSchema = TextFileUtils.getTextFileAsString("src/test/resources/avsc/UnionExample.avsc");
+ }
+
+ @Ignore
+ @Test
+ public void testUnionAllFields() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", uinionSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ final String inString = TextFileUtils.getTextFileAsString("src/test/resources/data/UnionExampleAllFields.json");
+ final GenericRecord user = (GenericRecord) schemaHelper.createNewInstance(inString);
+
+ assertEquals("Ben", user.get("name").toString());
+ assertEquals(7, user.get("favourite_number"));
+ assertEquals("red", user.get("favourite_colour").toString());
+ }
+
+ @Ignore
+ @Test
+ public void testUnionOptionalField() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", uinionSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ final String inString =
+ TextFileUtils.getTextFileAsString("src/test/resources/data/UnionExampleOptionalField.json");
+ final GenericRecord user = (GenericRecord) schemaHelper.createNewInstance(inString);
+
+ assertEquals("Ben", user.get("name").toString());
+ assertEquals(7, user.get("favourite_number"));
+ assertEquals("red", user.get("favourite_colour").toString());
+ }
+
+ @Ignore
+ @Test
+ public void testUnionNullField() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", uinionSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ final String inString = TextFileUtils.getTextFileAsString("src/test/resources/data/UnionExampleNullField.json");
+ final GenericRecord user = (GenericRecord) schemaHelper.createNewInstance(inString);
+
+ assertEquals("Ben", user.get("name").toString());
+ assertEquals(7, user.get("favourite_number"));
+ assertEquals("red", user.get("favourite_colour").toString());
+ }
+}
diff --git a/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestHealthCheckSchema.java b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestHealthCheckSchema.java
new file mode 100644
index 000000000..c32d9b3d4
--- /dev/null
+++ b/plugins/plugins-context/context-schema/context-schema-avro/src/test/java/org/onap/policy/apex/plugins/context/schema/avro/TestHealthCheckSchema.java
@@ -0,0 +1,119 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.plugins.context.schema.avro;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.apache.avro.Schema;
+import org.apache.avro.generic.GenericData;
+import org.apache.avro.generic.GenericData.Record;
+import org.apache.avro.generic.GenericRecord;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.impl.schema.SchemaHelperFactory;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.utilities.TextFileUtils;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestHealthCheckSchema {
+ private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
+ private AxContextSchemas schemas;
+ private String healthCheckSchema;
+
+ @Before
+ public void initTest() throws IOException {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+
+ new SchemaParameters().getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters());
+ healthCheckSchema = TextFileUtils.getTextFileAsString("src/test/resources/avsc/HealthCheckBodyType.avsc");
+ }
+
+
+ @Test
+ public void testHealthCheck() throws IOException {
+ final AxContextSchema avroSchema =
+ new AxContextSchema(new AxArtifactKey("AvroRecord", "0.0.1"), "Avro", healthCheckSchema);
+
+ schemas.getSchemasMap().put(avroSchema.getKey(), avroSchema);
+ final SchemaHelper schemaHelper = new SchemaHelperFactory().createSchemaHelper(testKey, avroSchema.getKey());
+
+ testUnmarshalMarshal(schemaHelper, "src/test/resources/data/HealthCheckEvent.json");
+
+ final GenericRecord healthCheckRecord = (Record) schemaHelper.createNewInstance();
+ final Schema healthCheckRecordSchema = healthCheckRecord.getSchema();
+
+ final GenericRecord inputRecord = new GenericData.Record(healthCheckRecordSchema.getField("input").schema());
+ final Schema inputRecordRecordSchema = inputRecord.getSchema();
+
+ final GenericRecord actionIndentifiersRecord =
+ new GenericData.Record(inputRecordRecordSchema.getField("action_DasH_identifiers").schema());
+
+ final GenericRecord commonHeaderRecord =
+ new GenericData.Record(inputRecordRecordSchema.getField("common_DasH_header").schema());
+ final Schema commonHeaderRecordSchema = commonHeaderRecord.getSchema();
+
+ final GenericRecord commonHeaderFlagsRecord =
+ new GenericData.Record(commonHeaderRecordSchema.getField("flags").schema());
+
+ healthCheckRecord.put("input", inputRecord);
+ inputRecord.put("action_DasH_identifiers", actionIndentifiersRecord);
+ inputRecord.put("common_DasH_header", commonHeaderRecord);
+ commonHeaderRecord.put("flags", commonHeaderFlagsRecord);
+
+ inputRecord.put("action", "HealthCheck");
+ inputRecord.put("payload",
+ "{\"host-ip-address\":\"131.160.203.125\",\"input.url\":\"131.160.203.125/afr\",\"request-action-type\":\"GET\",\"request-action\":\"AFR\"}");
+
+ actionIndentifiersRecord.put("vnf_DasH_id", "49414df5-3482-4fd8-9952-c463dff2770b");
+
+ commonHeaderRecord.put("request_DasH_id", "afr-request3");
+ commonHeaderRecord.put("originator_DasH_id", "AFR");
+ commonHeaderRecord.put("api_DasH_ver", "2.15");
+ commonHeaderRecord.put("sub_DasH_request_DasH_id", "AFR-subrequest");
+ commonHeaderRecord.put("timestamp", "2017-11-06T15:15:18.97Z");
+
+ commonHeaderFlagsRecord.put("ttl", "10000");
+ commonHeaderFlagsRecord.put("force", "TRUE");
+ commonHeaderFlagsRecord.put("mode", "EXCLUSIVE");
+
+ final String eventString = TextFileUtils.getTextFileAsString("src/test/resources/data/HealthCheckEvent.json");
+ final String outString = schemaHelper.marshal2Json(healthCheckRecord);
+ assertEquals(eventString.toString().replaceAll("\\s+", ""), outString.replaceAll("\\s+", ""));
+ }
+
+ private void testUnmarshalMarshal(final SchemaHelper schemaHelper, final String fileName) throws IOException {
+ final String inString = TextFileUtils.getTextFileAsString(fileName);
+ final GenericRecord decodedObject = (GenericRecord) schemaHelper.unmarshal(inString);
+ final String outString = schemaHelper.marshal2Json(decodedObject);
+ assertEquals(inString.replaceAll("\\s+", ""), outString.replaceAll("\\s+", ""));
+ }
+}