From 9cbcdacf01abd92ca0952410760d3d8545b23ad8 Mon Sep 17 00:00:00 2001 From: BT2983 Date: Thu, 16 Aug 2018 21:48:07 -0600 Subject: Naming micro-service code. Docker updates and tests. Change-Id: Iba669453c4035290441c757f5b1c673ab41213d6 Issue-ID: CCSDK-342 Signed-off-by: BT2983 --- .../neng/core/gen/NameGeneratorExcMissingData.java | 268 --------------------- .../core/gen/NameGeneratorExcMissingDataTest.java | 268 +++++++++++++++++++++ .../ms/neng/core/seq/SequenceGeneratorTest.java | 85 +++++++ .../ms/neng/core/seq/TestSequenceGenerator.java | 85 ------- .../ms/neng/core/service/SpringServiceIntTest.java | 15 +- .../src/test/resources/application-test.properties | 43 +--- .../h2db/changelog/h2db.changelog-master.xml | 20 +- ms/neng/src/test/sanity/README.txt | 6 + ms/neng/src/test/sanity/add-policy.sh | 46 ++++ ms/neng/src/test/sanity/env.sh | 26 ++ ms/neng/src/test/sanity/gen-name.sh | 52 ++++ ms/neng/src/test/sanity/get-policy.sh | 32 +++ ms/neng/src/test/sanity/hello.sh | 38 +++ ms/neng/src/test/sanity/policy-1.json | 32 +++ ms/neng/src/test/sanity/release-name.sh | 49 ++++ ms/neng/src/test/sanity/suite.sh | 31 +++ 16 files changed, 699 insertions(+), 397 deletions(-) delete mode 100644 ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingData.java create mode 100644 ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingDataTest.java create mode 100644 ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/SequenceGeneratorTest.java delete mode 100644 ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/TestSequenceGenerator.java create mode 100644 ms/neng/src/test/sanity/README.txt create mode 100644 ms/neng/src/test/sanity/add-policy.sh create mode 100644 ms/neng/src/test/sanity/env.sh create mode 100644 ms/neng/src/test/sanity/gen-name.sh create mode 100644 ms/neng/src/test/sanity/get-policy.sh create mode 100644 ms/neng/src/test/sanity/hello.sh create mode 100644 ms/neng/src/test/sanity/policy-1.json create mode 100644 ms/neng/src/test/sanity/release-name.sh create mode 100644 ms/neng/src/test/sanity/suite.sh (limited to 'ms/neng/src/test') diff --git a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingData.java b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingData.java deleted file mode 100644 index 4b1d1eac..00000000 --- a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingData.java +++ /dev/null @@ -1,268 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : CCSDK.apps - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.apps.ms.neng.core.gen; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; -import static org.mockito.Matchers.anyInt; -import static org.mockito.Matchers.anyObject; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; -import org.onap.ccsdk.apps.ms.neng.core.persistence.NamePersister; -import org.onap.ccsdk.apps.ms.neng.core.policy.FilePolicyReader; -import org.onap.ccsdk.apps.ms.neng.core.policy.PolicyFinder; -import org.onap.ccsdk.apps.ms.neng.core.policy.PolicyParameters; -import org.onap.ccsdk.apps.ms.neng.core.seq.SequenceGenerator; -import org.onap.ccsdk.apps.ms.neng.core.validator.AaiNameValidator; -import org.onap.ccsdk.apps.ms.neng.core.validator.DbNameValidator; - -@RunWith(MockitoJUnitRunner.class) -public class NameGeneratorExcMissingData { - @Mock - private PolicyParameters policyParams = mock(PolicyParameters.class); - @Mock - private PolicyFinder policyFinder = mock(PolicyFinder.class); - @Mock - private SequenceGenerator sequenceGenerator = mock(SequenceGenerator.class); - @Mock - private DbNameValidator dbValidator = mock(DbNameValidator.class); - @Mock - private AaiNameValidator aaiValidator = mock(AaiNameValidator.class); - @Mock - private NamePersister namePresister = mock(NamePersister.class); - private Map> earlierNames = new HashMap<>(); - private Map> policyCache = new HashMap<>(); - - protected Map makeOneRequest(String policy) { - Map requestElement = new HashMap<>(); - requestElement.put("external-key", "123456"); - requestElement.put("policy-instance-name", policy); - requestElement.put("complex", "dlstxasdf"); - requestElement.put("naming-type", "VNF"); - requestElement.put("nf-naming-code", "ve1"); - requestElement.put("resource-name", "vnf-name"); - return requestElement; - } - - @Test - public void missingPolicy() throws Exception { - String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; - Map requestElement = makeOneRequest(policyName); - List> allElements = new ArrayList<>(); - allElements.add(requestElement); - - when(policyFinder.findPolicy(policyName)).thenReturn(null); - - NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, - namePresister, requestElement, allElements, earlierNames, policyCache); - - try { - gen.generate(); - fail("Expecting exception"); - } catch (Exception e) { - assertEquals("Could not find the policy data for SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq", - e.getMessage()); - return; - } - fail("Expecting exception"); - } - - @Test - public void missingPolicyData() throws Exception { - String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; - Map requestElement = makeOneRequest(policyName); - List> allElements = new ArrayList<>(); - allElements.add(requestElement); - - NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, - namePresister, requestElement, allElements, earlierNames, policyCache); - - try { - gen.generate(); - fail("Expecting exception"); - } catch (Exception e) { - assertEquals("Could not find the policy data for SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " - + "and naming-type VNF", - e.getMessage()); - return; - } - fail("Expecting exception"); - } - - @Test - public void missingPolicyName() throws Exception { - String policyName = null; - Map requestElement = makeOneRequest(policyName); - List> allElements = new ArrayList<>(); - allElements.add(requestElement); - - NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, - namePresister, requestElement, allElements, earlierNames, policyCache); - - try { - gen.generate(); - fail("Expecting exception"); - } catch (Exception e) { - assertEquals("Could not find policy name in the request", e.getMessage()); - return; - } - fail("Expecting exception"); - } - - @Test - public void missingNamingType() throws Exception { - String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; - Map requestElement = makeOneRequest(policyName); - requestElement.remove("naming-type"); - List> allElements = new ArrayList<>(); - allElements.add(requestElement); - - NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, - namePresister, requestElement, allElements, earlierNames, policyCache); - - try { - gen.generate(); - fail("Expecting exception"); - } catch (Exception e) { - assertEquals("Could not find naming type in the request for policy " - + "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq", - e.getMessage()); - return; - } - fail("Expecting exception"); - } - - @Test - public void missingRecipe() throws Exception { - String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; - Map requestElement = makeOneRequest(policyName); - List> allElements = new ArrayList<>(); - allElements.add(requestElement); - - Map policy = new FilePolicyReader("bad_policy_missing_recipe.json").getPolicy(); - when(policyFinder.findPolicy(policyName)).thenReturn(policy); - when(aaiValidator.validate(anyObject(), anyObject())).thenReturn(true); - when(dbValidator.validate(anyObject(), anyObject())).thenReturn(true); - when(sequenceGenerator.generate(anyObject(), anyObject(), anyObject(), anyObject(), anyInt())).thenReturn(1L); - - NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, - namePresister, requestElement, allElements, earlierNames, policyCache); - - try { - gen.generate(); - fail("Expecting exception"); - } catch (Exception e) { - assertEquals("Could not find the recipe for SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " - + "and naming-type VNF", - e.getMessage()); - return; - } - fail("Expecting exception"); - } - - @Test - public void missingRecipeOneField() throws Exception { - String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; - Map requestElement = makeOneRequest(policyName); - requestElement.remove("complex"); - List> allElements = new ArrayList<>(); - allElements.add(requestElement); - - Map policy = new FilePolicyReader("vnf_policy_seq.json").getPolicy(); - when(policyFinder.findPolicy(policyName)).thenReturn(policy); - - NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, - namePresister, requestElement, allElements, earlierNames, policyCache); - - try { - gen.generate(); - fail("Expecting exception"); - } catch (Exception e) { - assertEquals("Could not find data for recipe item COMPLEX in policy " - + "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " - + "and naming-type VNF", e.getMessage()); - return; - } - fail("Expecting exception"); - } - - @Test - public void missingRecipeMultipleFields() throws Exception { - String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; - Map requestElement = makeOneRequest(policyName); - requestElement.remove("complex"); - List> allElements = new ArrayList<>(); - allElements.add(requestElement); - - Map policy = new FilePolicyReader("long_policy.json").getPolicy(); - when(policyFinder.findPolicy(policyName)).thenReturn(policy); - - NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, - namePresister, requestElement, allElements, earlierNames, policyCache); - - try { - gen.generate(); - fail("Expecting exception"); - } catch (Exception e) { - assertEquals("Could not find data for recipe items COMPLEX, Field2, Field3 and Field4 in policy " - + "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " - + "and naming-type VNF", e.getMessage()); - return; - } - fail("Expecting exception"); - } - - @Test - public void missingRecipeTwoFields() throws Exception { - String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; - Map requestElement = makeOneRequest(policyName); - requestElement.put("Field2", "f2"); - List> allElements = new ArrayList<>(); - allElements.add(requestElement); - - Map policy = new FilePolicyReader("long_policy.json").getPolicy(); - when(policyFinder.findPolicy(policyName)).thenReturn(policy); - - NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, - namePresister, requestElement, allElements, earlierNames, policyCache); - - try { - gen.generate(); - fail("Expecting exception"); - } catch (Exception e) { - assertEquals("Could not find data for recipe items Field3 and Field4 in policy " - + "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " - + "and naming-type VNF", e.getMessage()); - return; - } - fail("Expecting exception"); - } -} - diff --git a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingDataTest.java b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingDataTest.java new file mode 100644 index 00000000..d05644b8 --- /dev/null +++ b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingDataTest.java @@ -0,0 +1,268 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : CCSDK.apps + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.apps.ms.neng.core.gen; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.onap.ccsdk.apps.ms.neng.core.persistence.NamePersister; +import org.onap.ccsdk.apps.ms.neng.core.policy.FilePolicyReader; +import org.onap.ccsdk.apps.ms.neng.core.policy.PolicyFinder; +import org.onap.ccsdk.apps.ms.neng.core.policy.PolicyParameters; +import org.onap.ccsdk.apps.ms.neng.core.seq.SequenceGenerator; +import org.onap.ccsdk.apps.ms.neng.core.validator.AaiNameValidator; +import org.onap.ccsdk.apps.ms.neng.core.validator.DbNameValidator; + +@RunWith(MockitoJUnitRunner.class) +public class NameGeneratorExcMissingDataTest { + @Mock + private PolicyParameters policyParams = mock(PolicyParameters.class); + @Mock + private PolicyFinder policyFinder = mock(PolicyFinder.class); + @Mock + private SequenceGenerator sequenceGenerator = mock(SequenceGenerator.class); + @Mock + private DbNameValidator dbValidator = mock(DbNameValidator.class); + @Mock + private AaiNameValidator aaiValidator = mock(AaiNameValidator.class); + @Mock + private NamePersister namePresister = mock(NamePersister.class); + private Map> earlierNames = new HashMap<>(); + private Map> policyCache = new HashMap<>(); + + protected Map makeOneRequest(String policy) { + Map requestElement = new HashMap<>(); + requestElement.put("external-key", "123456"); + requestElement.put("policy-instance-name", policy); + requestElement.put("complex", "dlstxasdf"); + requestElement.put("naming-type", "VNF"); + requestElement.put("nf-naming-code", "ve1"); + requestElement.put("resource-name", "vnf-name"); + return requestElement; + } + + @Test + public void missingPolicy() throws Exception { + String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; + Map requestElement = makeOneRequest(policyName); + List> allElements = new ArrayList<>(); + allElements.add(requestElement); + + when(policyFinder.findPolicy(policyName)).thenReturn(null); + + NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, + namePresister, requestElement, allElements, earlierNames, policyCache); + + try { + gen.generate(); + fail("Expecting exception"); + } catch (Exception e) { + assertEquals("Could not find the policy data for SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq", + e.getMessage()); + return; + } + fail("Expecting exception"); + } + + @Test + public void missingPolicyData() throws Exception { + String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; + Map requestElement = makeOneRequest(policyName); + List> allElements = new ArrayList<>(); + allElements.add(requestElement); + + NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, + namePresister, requestElement, allElements, earlierNames, policyCache); + + try { + gen.generate(); + fail("Expecting exception"); + } catch (Exception e) { + assertEquals("Could not find the policy data for SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " + + "and naming-type VNF", + e.getMessage()); + return; + } + fail("Expecting exception"); + } + + @Test + public void missingPolicyName() throws Exception { + String policyName = null; + Map requestElement = makeOneRequest(policyName); + List> allElements = new ArrayList<>(); + allElements.add(requestElement); + + NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, + namePresister, requestElement, allElements, earlierNames, policyCache); + + try { + gen.generate(); + fail("Expecting exception"); + } catch (Exception e) { + assertEquals("Could not find policy name in the request", e.getMessage()); + return; + } + fail("Expecting exception"); + } + + @Test + public void missingNamingType() throws Exception { + String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; + Map requestElement = makeOneRequest(policyName); + requestElement.remove("naming-type"); + List> allElements = new ArrayList<>(); + allElements.add(requestElement); + + NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, + namePresister, requestElement, allElements, earlierNames, policyCache); + + try { + gen.generate(); + fail("Expecting exception"); + } catch (Exception e) { + assertEquals("Could not find naming type in the request for policy " + + "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq", + e.getMessage()); + return; + } + fail("Expecting exception"); + } + + @Test + public void missingRecipe() throws Exception { + String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; + Map requestElement = makeOneRequest(policyName); + List> allElements = new ArrayList<>(); + allElements.add(requestElement); + + Map policy = new FilePolicyReader("bad_policy_missing_recipe.json").getPolicy(); + when(policyFinder.findPolicy(policyName)).thenReturn(policy); + when(aaiValidator.validate(anyObject(), anyObject())).thenReturn(true); + when(dbValidator.validate(anyObject(), anyObject())).thenReturn(true); + when(sequenceGenerator.generate(anyObject(), anyObject(), anyObject(), anyObject(), anyInt())).thenReturn(1L); + + NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, + namePresister, requestElement, allElements, earlierNames, policyCache); + + try { + gen.generate(); + fail("Expecting exception"); + } catch (Exception e) { + assertEquals("Could not find the recipe for SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " + + "and naming-type VNF", + e.getMessage()); + return; + } + fail("Expecting exception"); + } + + @Test + public void missingRecipeOneField() throws Exception { + String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; + Map requestElement = makeOneRequest(policyName); + requestElement.remove("complex"); + List> allElements = new ArrayList<>(); + allElements.add(requestElement); + + Map policy = new FilePolicyReader("vnf_policy_seq.json").getPolicy(); + when(policyFinder.findPolicy(policyName)).thenReturn(policy); + + NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, + namePresister, requestElement, allElements, earlierNames, policyCache); + + try { + gen.generate(); + fail("Expecting exception"); + } catch (Exception e) { + assertEquals("Could not find data for recipe item COMPLEX in policy " + + "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " + + "and naming-type VNF", e.getMessage()); + return; + } + fail("Expecting exception"); + } + + @Test + public void missingRecipeMultipleFields() throws Exception { + String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; + Map requestElement = makeOneRequest(policyName); + requestElement.remove("complex"); + List> allElements = new ArrayList<>(); + allElements.add(requestElement); + + Map policy = new FilePolicyReader("long_policy.json").getPolicy(); + when(policyFinder.findPolicy(policyName)).thenReturn(policy); + + NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, + namePresister, requestElement, allElements, earlierNames, policyCache); + + try { + gen.generate(); + fail("Expecting exception"); + } catch (Exception e) { + assertEquals("Could not find data for recipe items COMPLEX, Field2, Field3 and Field4 in policy " + + "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " + + "and naming-type VNF", e.getMessage()); + return; + } + fail("Expecting exception"); + } + + @Test + public void missingRecipeTwoFields() throws Exception { + String policyName = "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq"; + Map requestElement = makeOneRequest(policyName); + requestElement.put("Field2", "f2"); + List> allElements = new ArrayList<>(); + allElements.add(requestElement); + + Map policy = new FilePolicyReader("long_policy.json").getPolicy(); + when(policyFinder.findPolicy(policyName)).thenReturn(policy); + + NameGenerator gen = new NameGenerator(policyFinder, policyParams, sequenceGenerator, dbValidator, aaiValidator, + namePresister, requestElement, allElements, earlierNames, policyCache); + + try { + gen.generate(); + fail("Expecting exception"); + } catch (Exception e) { + assertEquals("Could not find data for recipe items Field3 and Field4 in policy " + + "SDNC_Policy.Config_MS_VNFNamingPolicy_no_seq " + + "and naming-type VNF", e.getMessage()); + return; + } + fail("Expecting exception"); + } +} + diff --git a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/SequenceGeneratorTest.java b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/SequenceGeneratorTest.java new file mode 100644 index 00000000..23bbc7c0 --- /dev/null +++ b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/SequenceGeneratorTest.java @@ -0,0 +1,85 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : CCSDK.apps + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.apps.ms.neng.core.seq; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; +import org.onap.ccsdk.apps.ms.neng.core.policy.PolicySequence; +import org.onap.ccsdk.apps.ms.neng.persistence.entity.ServiceParameter; +import org.onap.ccsdk.apps.ms.neng.persistence.repository.GeneratedNameRespository; +import org.onap.ccsdk.apps.ms.neng.persistence.repository.ServiceParameterRepository; + + +@RunWith(MockitoJUnitRunner.class) +public class SequenceGeneratorTest { + @Mock + private GeneratedNameRespository genNameRepo = mock(GeneratedNameRespository.class); + @Mock + private ServiceParameterRepository servParamRepo = mock(ServiceParameterRepository.class); + @Mock + private PolicySequence params = mock(PolicySequence.class); + @Mock + private ServiceParameter sp = mock(ServiceParameter.class); + @InjectMocks + SequenceGenerator sg; + + @Test + public void testGenerate() throws Exception { + assertEquals(0, sg.generate("zSSRX1234", null, params, null, 1)); + + Mockito.when(params.getLastReleaseSeqNumTried()).thenReturn(null); + Mockito.when(genNameRepo.findMaxByPrefixAndSuffix("zSSRX1234", null)).thenReturn("4"); + + assertEquals(0, sg.generate("zSSRX1234", null, params, null, 1)); + + Mockito.when(genNameRepo.findMaxByPrefixAndSuffix("zSSRX1234", null)).thenReturn("2"); + Mockito.when(genNameRepo.findMaxByPrefixAndSuffix("zSSRX1234", null)).thenReturn(null); + Mockito.when(servParamRepo.findByName("initial_increment")).thenReturn(sp); + Mockito.when(sp.getValue()).thenReturn("1"); + + assertEquals(0, sg.generate("zSSRX1234", null, params, 1L, 2)); + + Mockito.when(genNameRepo.findNextReleasedSeq(0L, "zSSRX1234", null)).thenReturn(null); + assertEquals(0, sg.generate("zSSRX1234", null, params, null, 1)); + } + + @Test(expected = Exception.class) + public void exceltionTest() throws Exception { + Mockito.when(genNameRepo.findNextReleasedSeq(1L, "zSSRX1234", null)).thenReturn(null); + Mockito.when(params.getLastReleaseSeqNumTried()).thenReturn(1L); + sg.generate("zSSRX1234", null, params, null, 1); + } + + @Test + public void testAlreadyUsedSequesnce() throws Exception { + Mockito.when(genNameRepo.findMaxByPrefixAndSuffix("zSSRX1234", null)).thenReturn("1"); + Mockito.when(sp.getValue()).thenReturn("4"); + Mockito.when(params.getIncrement()).thenReturn(2L); + assertEquals(0L, sg.generate("zSSRX1234", null, params, 2L, 0)); + } +} diff --git a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/TestSequenceGenerator.java b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/TestSequenceGenerator.java deleted file mode 100644 index fcee4da0..00000000 --- a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/TestSequenceGenerator.java +++ /dev/null @@ -1,85 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : CCSDK.apps - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.apps.ms.neng.core.seq; - -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.mock; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.runners.MockitoJUnitRunner; -import org.onap.ccsdk.apps.ms.neng.core.policy.PolicySequence; -import org.onap.ccsdk.apps.ms.neng.persistence.entity.ServiceParameter; -import org.onap.ccsdk.apps.ms.neng.persistence.repository.GeneratedNameRespository; -import org.onap.ccsdk.apps.ms.neng.persistence.repository.ServiceParameterRepository; - - -@RunWith(MockitoJUnitRunner.class) -public class TestSequenceGenerator { - @Mock - private GeneratedNameRespository genNameRepo = mock(GeneratedNameRespository.class); - @Mock - private ServiceParameterRepository servParamRepo = mock(ServiceParameterRepository.class); - @Mock - private PolicySequence params = mock(PolicySequence.class); - @Mock - private ServiceParameter sp = mock(ServiceParameter.class); - @InjectMocks - SequenceGenerator sg; - - @Test - public void testGenerate() throws Exception { - assertEquals(0, sg.generate("zSSRX1234", null, params, null, 1)); - - Mockito.when(params.getLastReleaseSeqNumTried()).thenReturn(null); - Mockito.when(genNameRepo.findMaxByPrefixAndSuffix("zSSRX1234", null)).thenReturn("4"); - - assertEquals(0, sg.generate("zSSRX1234", null, params, null, 1)); - - Mockito.when(genNameRepo.findMaxByPrefixAndSuffix("zSSRX1234", null)).thenReturn("2"); - Mockito.when(genNameRepo.findMaxByPrefixAndSuffix("zSSRX1234", null)).thenReturn(null); - Mockito.when(servParamRepo.findByName("initial_increment")).thenReturn(sp); - Mockito.when(sp.getValue()).thenReturn("1"); - - assertEquals(0, sg.generate("zSSRX1234", null, params, 1L, 2)); - - Mockito.when(genNameRepo.findNextReleasedSeq(0L, "zSSRX1234", null)).thenReturn(null); - assertEquals(0, sg.generate("zSSRX1234", null, params, null, 1)); - } - - @Test(expected = Exception.class) - public void exceltionTest() throws Exception { - Mockito.when(genNameRepo.findNextReleasedSeq(1L, "zSSRX1234", null)).thenReturn(null); - Mockito.when(params.getLastReleaseSeqNumTried()).thenReturn(1L); - sg.generate("zSSRX1234", null, params, null, 1); - } - - @Test - public void testAlreadyUsedSequesnce() throws Exception { - Mockito.when(genNameRepo.findMaxByPrefixAndSuffix("zSSRX1234", null)).thenReturn("1"); - Mockito.when(sp.getValue()).thenReturn("4"); - Mockito.when(params.getIncrement()).thenReturn(2L); - assertEquals(0L, sg.generate("zSSRX1234", null, params, 2L, 0)); - } -} diff --git a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceIntTest.java b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceIntTest.java index a1873692..c3815f43 100644 --- a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceIntTest.java +++ b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceIntTest.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.ws.rs.core.Response; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -194,19 +195,15 @@ public class SpringServiceIntTest { restServiceImpl.releaseNetworkElementName(request); } - @Test - public void testRestGetPolicyResponse() throws Exception { - List> policyResponse = - restServiceImpl.getPolicyResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml"); - assertNotNull(policyResponse); - } - @Test public void testRestAddPolicyToDb() throws Exception { Map policy = new HashMap<>(); - policy.put("policyName", "policyname"); - policy.put("policyValue", "policyname"); + policy.put("policyName", "JQINSRIOV.Config_MS_SriovBigJson.1.xml"); + policy.put("policyValue", "some policy"); restServiceImpl.addPolicyToDb(policy); + + Response policyResponse = restServiceImpl.getPolicyResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml"); + assertNotNull(policyResponse); } @Test diff --git a/ms/neng/src/test/resources/application-test.properties b/ms/neng/src/test/resources/application-test.properties index ca8ac129..ae425c38 100644 --- a/ms/neng/src/test/resources/application-test.properties +++ b/ms/neng/src/test/resources/application-test.properties @@ -1,38 +1,13 @@ -info.build.artifact=@project.artifactId@ -info.build.name=@project.name@ -info.build.description=@project.description@ -info.build.version=@project.version@ - -spring.jersey.type=filter - -logging.level.root=info -logging.level.org.glassfish=info -logging.level.org.glassfish.jersey=info - -spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration - -logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr($ threadId: {PID:- }){magenta} %clr(---){faint} %clr([ hostname: %X{hostname} serviceName: %X{serviceName} version: %X{version} transactionId: %X{transactionId} requestTimeStamp: %X{requestTimestamp} responseTimeStamp: %X{responseTimestamp} duration: %X{duration}]){yellow} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex - -liquibase.changeLog=classpath:/h2db/changelog/h2db.changelog-master.xml -logging.level.liquibase: DEBUG - -spring.jersey.type=filter -spring.mvc.urls=swagger,docs,prometheus,auditevents,info,heapdump,autoconfig,beans,loggers,dump,env,trace,health,configprops,mappings - -server.contextPath=/web - -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.username=sa -spring.datasource.password=sa -spring.jpa.hibernate.ddl-auto=none -spring.jpa.show-sql=true -spring.datasource.url=jdbc:h2:mem:tests;DB_CLOSE_DELAY=-1; +#========================================================================= +# +# Configuration for the test profile, which is used to run integration +# tests of the application, normally in your IDE. +# +#========================================================================= datasource.db.driver-class-name=org.h2.Driver datasource.db.url=jdbc:h2:mem:tests;DB_CLOSE_DELAY=-1; -datasource.db.username=sa -datasource.db.password=sa -jpa.hibernate.ddl-auto=none -jpa.show-sql=true +datasource.db.username=none +datasource.db.password=none -entitymanager.packagesToScan=org.onap.ccsdk.apps.ms.neng.persistence.entity +liquibase.changeLog=classpath:/h2db/changelog/h2db.changelog-master.xml diff --git a/ms/neng/src/test/resources/h2db/changelog/h2db.changelog-master.xml b/ms/neng/src/test/resources/h2db/changelog/h2db.changelog-master.xml index 496a2e9d..2826e4d4 100644 --- a/ms/neng/src/test/resources/h2db/changelog/h2db.changelog-master.xml +++ b/ms/neng/src/test/resources/h2db/changelog/h2db.changelog-master.xml @@ -1,5 +1,23 @@ - + $TEMP_FILE +printf '"policyName": "sanity-policy-' >> $TEMP_FILE +printf $EXTERNAL_KEY >> $TEMP_FILE +printf '", "policyValue" : "' >> $TEMP_FILE +cat ./policy-1.json | sed 's/\"/\\\"/g' | tr '\n' ' ' | tr '\r' ' ' >> $TEMP_FILE +echo '"}' >> $TEMP_FILE + +echo "===================================================" +echo "====== Adding Policy: ===========================" +cat $TEMP_FILE +echo "" +echo "===================================================" + +echo "===================================================" +curl -vi -H "Content-Type: application/json" --data @$TEMP_FILE $PROTOCOL://$HOST:$PORT/$URL +echo "===================================================" + +rm -f $TEMP_FILE diff --git a/ms/neng/src/test/sanity/env.sh b/ms/neng/src/test/sanity/env.sh new file mode 100644 index 00000000..8685bcf8 --- /dev/null +++ b/ms/neng/src/test/sanity/env.sh @@ -0,0 +1,26 @@ +#!/bin/bash +#============LICENSE_START======================================================= +# ONAP : CCSDK.apps +# ================================================================================ +# Copyright (C) 2018 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========================================================= + +#================================================================================== +# Sets up environment for testing. +#================================================================================== + +PORT=8080 +HOST=localhost +PROTOCOL=http diff --git a/ms/neng/src/test/sanity/gen-name.sh b/ms/neng/src/test/sanity/gen-name.sh new file mode 100644 index 00000000..fb106eda --- /dev/null +++ b/ms/neng/src/test/sanity/gen-name.sh @@ -0,0 +1,52 @@ +#!/bin/bash +#============LICENSE_START======================================================= +# ONAP : CCSDK.apps +# ================================================================================ +# Copyright (C) 2018 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========================================================= + +#================================================================================== +# This script does a sanity test on the generate-name API of this micro-service. +#================================================================================== + +. ./env.sh +URL=web/service/v1/genNetworkElementName +TEMP_FILE=/tmp/gen-name.$$.$RANDOM +EXTERNAL_KEY=${2:-123456789} + +USE_DB=${1:-'Y'} +USE_DB_BOOL=$([ "$USE_DB" == "Y" ] && echo "true" || echo "false") + +printf '{ "UseDb": "' > $TEMP_FILE +printf $USE_DB_BOOL >> $TEMP_FILE +printf '", "elements": [ { "external-key": "sanity-' >> $TEMP_FILE +printf $EXTERNAL_KEY >> $TEMP_FILE +printf '", "policy-instance-name": "sanity-policy-' >> $TEMP_FILE +printf $EXTERNAL_KEY >> $TEMP_FILE +printf '", "NF_NAMING_CODE": "helloname", ' >> $TEMP_FILE +printf '"resource-name": "sanity-1", "naming-type": "sanity-1" } ] }' >> $TEMP_FILE + +echo "===================================================" +echo "======== Generating name with request: ============" +cat $TEMP_FILE +echo "" +echo "===================================================" + +echo "===================================================" +curl -vi -H "Content-Type: application/json" --data @$TEMP_FILE $PROTOCOL://$HOST:$PORT/$URL +echo "===================================================" + +rm -f $TEMP_FILE + diff --git a/ms/neng/src/test/sanity/get-policy.sh b/ms/neng/src/test/sanity/get-policy.sh new file mode 100644 index 00000000..5c7136b6 --- /dev/null +++ b/ms/neng/src/test/sanity/get-policy.sh @@ -0,0 +1,32 @@ +#!/bin/bash +#============LICENSE_START======================================================= +# ONAP : CCSDK.apps +# ================================================================================ +# Copyright (C) 2018 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========================================================= + +#================================================================================== +# This script does a sanity test on the get-policy API of this micro-service. +# +#================================================================================== + +. ./env.sh +URL=web/service/v1/getpolicyresponse +EXTERNAL_KEY=${1:-123456789} + +echo "===================================================" +echo "====== Finding Policy: ===========================" +curl -vi $PROTOCOL://$HOST:$PORT/$URL?policyName=sanity-policy-$EXTERNAL_KEY +echo "===================================================" diff --git a/ms/neng/src/test/sanity/hello.sh b/ms/neng/src/test/sanity/hello.sh new file mode 100644 index 00000000..baa5b703 --- /dev/null +++ b/ms/neng/src/test/sanity/hello.sh @@ -0,0 +1,38 @@ +#!/bin/bash +#============LICENSE_START======================================================= +# ONAP : CCSDK.apps +# ================================================================================ +# Copyright (C) 2018 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========================================================= + +#================================================================================== +# This script does a sanity test on the micro-service, by sending the 'hello' message. +# +#================================================================================== +. ./env.sh +URL=web/service/hello + +echo "===================================================" +echo "===================================================" +echo 'This should show {"message":"Hello world!"}' +echo "===================================================" +curl -vi $PROTOCOL://$HOST:$PORT/$URL + +echo "===================================================" +echo "===================================================" +echo 'This should show {"message":"Hello you!"}' +echo "===================================================" +curl -vi $PROTOCOL://$HOST:$PORT/$URL?name=you +echo "===================================================" diff --git a/ms/neng/src/test/sanity/policy-1.json b/ms/neng/src/test/sanity/policy-1.json new file mode 100644 index 00000000..e85bc790 --- /dev/null +++ b/ms/neng/src/test/sanity/policy-1.json @@ -0,0 +1,32 @@ +[ + { + "config": { + "content": { + "naming-models":[ + { + "naming-properties":[ + { "property-name" : "COMPLEX", "property-operation" : "substr(5)" }, + { "property-name" : "SEQUENCE", "increment-sequence":{ + "max" : "zzz" , "scope" : "ENTIRETY" , "start-value" : "001" , "length" : "3", + "increment" : "1" , "sequence-type" : "alpha-numeric"} + }, + {"property-name" : "NF_NAMING_CODE"} + ], + "naming-type" : "VNF", + "nfRole" : "vPE", + "naming-recipe" : "COMPLEX|SEQUENCE|NF_NAMING_CODE" + }, + { + "naming-properties":[ + {"property-name" : "NF_NAMING_CODE"} + ], + "naming-type" : "sanity-1", + "nfRole" : "sanity-1", + "naming-recipe" : "NF_NAMING_CODE" + } + ] + } + }, + "policyName": "sanity-policy-1" + } +] diff --git a/ms/neng/src/test/sanity/release-name.sh b/ms/neng/src/test/sanity/release-name.sh new file mode 100644 index 00000000..2a6d16df --- /dev/null +++ b/ms/neng/src/test/sanity/release-name.sh @@ -0,0 +1,49 @@ +#!/bin/bash +#============LICENSE_START======================================================= +# ONAP : CCSDK.apps +# ================================================================================ +# Copyright (C) 2018 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========================================================= + +#================================================================================== +# This script does a sanity test on the release-name API of this micro-service. +#================================================================================== + +. ./env.sh +URL=web/service/v1/genNetworkElementName +TEMP_FILE=/tmp/gen-name.$$.$RANDOM +EXTERNAL_KEY=${2:-123456789} + +USE_DB=${1:-'Y'} +USE_DB_BOOL=$([ "$USE_DB" == "Y" ] && echo "true" || echo "false") + +printf '{ "UseDb": "' > $TEMP_FILE +printf $USE_DB_BOOL >> $TEMP_FILE +printf '", "elements": [ { "external-key": "sanity-' >> $TEMP_FILE +printf $EXTERNAL_KEY >> $TEMP_FILE +printf '", "resource-name": "sanity-1" } ] }' >> $TEMP_FILE + +echo "===================================================" +echo "======= Releasing name with request: ==============" +cat $TEMP_FILE +echo "" +echo "===================================================" + +echo "===================================================" +curl -vi -X "DELETE" -H "Content-Type: application/json" --data @$TEMP_FILE $PROTOCOL://$HOST:$PORT/$URL +echo "===================================================" + +rm -f $TEMP_FILE + diff --git a/ms/neng/src/test/sanity/suite.sh b/ms/neng/src/test/sanity/suite.sh new file mode 100644 index 00000000..79d5b414 --- /dev/null +++ b/ms/neng/src/test/sanity/suite.sh @@ -0,0 +1,31 @@ +#!/bin/bash +#============LICENSE_START======================================================= +# ONAP : CCSDK.apps +# ================================================================================ +# Copyright (C) 2018 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========================================================= + +#================================================================================== +# This script does a sanity test on the APIs of the micro-service. +#================================================================================== + +EXTERNAL_KEY=$(date +%s)$RANDOM + +./hello.sh +./add-policy.sh $EXTERNAL_KEY +./get-policy.sh $EXTERNAL_KEY +./gen-name.sh Y $EXTERNAL_KEY +./release-name.sh Y $EXTERNAL_KEY + -- cgit 1.2.3-korg