summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorEran (ev672n), Vosk <ev672n@att.com>2018-08-06 15:26:20 +0300
committerEran (ev672n), Vosk <ev672n@att.com>2018-08-06 15:26:20 +0300
commit98402fb4dc509ce1de0beccb3daefb4c8a755957 (patch)
tree39de55dd6c4bdcf28a4bee7c323d03e5200e4be6 /src/main
parentaa17bf450180971b442a8b49ae08ba986c44cfb7 (diff)
Changing the dcae ci code
Dockerizing the DCAE-CI code Change-Id: If8647213ee3e68fa00f81ae426404810d5469326 Issue-ID: SDC-1603 Signed-off-by: Eran (ev672n), Vosk <ev672n@att.com>
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/onap/dcae/ci/api/tests/blueprint/ToscaLabApiTests.java190
-rw-r--r--src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionElementsControllerTests.java145
-rw-r--r--src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionMicroServicesApiTests.java21
-rw-r--r--src/main/java/org/onap/dcae/ci/api/tests/composition/SaveAndSubmitCompositionFullFlowTest.java60
-rw-r--r--src/main/java/org/onap/dcae/ci/api/tests/configuration/ConfigurationControllerApiTest.java43
-rw-r--r--src/main/java/org/onap/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java716
-rw-r--r--src/main/java/org/onap/dcae/ci/config/Configuration.java95
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/items/Artifact.java109
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/items/Data.java21
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/items/DcaeComponents.java56
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/items/Element.java55
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/items/Error.java8
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/items/Item.java220
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/items/Model.java65
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Artifact.java109
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Item.java220
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/ItemsElement.java55
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Model.java65
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Service.java21
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/elements/Element.java76
-rw-r--r--src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/elements/Elements.java18
-rw-r--r--src/main/java/org/onap/dcae/ci/report/ExtentManager.java19
-rw-r--r--src/main/java/org/onap/dcae/ci/report/ExtentTestManager.java4
-rw-r--r--src/main/java/org/onap/dcae/ci/report/Report.java2
-rw-r--r--src/main/java/org/onap/dcae/ci/utilities/BaseRestUtils.java34
-rw-r--r--src/main/java/org/onap/dcae/ci/utilities/DcaeRestClient.java59
-rw-r--r--src/main/java/org/onap/dcae/ci/utilities/DcaeTestConstants.java1
-rw-r--r--src/main/java/org/onap/dcae/ci/utilities/DcaeUtil.java152
-rw-r--r--src/main/java/org/onap/dcae/ci/utilities/HttpRequest.java59
-rw-r--r--src/main/java/org/onap/dcae/ci/utilities/SdcInternalApiClient.java9
-rw-r--r--src/main/resources/conf/conf.yaml19
-rw-r--r--src/main/resources/conf/dcae_tests_conf.yaml.erb15
-rw-r--r--src/main/resources/scripts/run.sh2
-rw-r--r--src/main/resources/testSuite/testSuite.xml2
34 files changed, 943 insertions, 1802 deletions
diff --git a/src/main/java/org/onap/dcae/ci/api/tests/blueprint/ToscaLabApiTests.java b/src/main/java/org/onap/dcae/ci/api/tests/blueprint/ToscaLabApiTests.java
new file mode 100644
index 0000000..cde8659
--- /dev/null
+++ b/src/main/java/org/onap/dcae/ci/api/tests/blueprint/ToscaLabApiTests.java
@@ -0,0 +1,190 @@
+package org.onap.dcae.ci.api.tests.blueprint;
+
+import com.aventstack.extentreports.Status;
+import org.onap.dcae.ci.api.tests.DcaeRestBaseTest;
+import org.onap.dcae.ci.entities.RestResponse;
+import org.onap.dcae.ci.report.Report;
+import org.onap.dcae.ci.utilities.DcaeRestClient;
+import org.onap.sdc.dcae.composition.restmodels.health.HealthResponse;
+import org.testng.annotations.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.IOException;
+
+public class ToscaLabApiTests extends DcaeRestBaseTest {
+
+ private String validInput = "{\"template\":\"dG9wb2xvZ3lfdGVtcGxhdGU6CiAgbm9kZV90ZW1wbGF0ZXM6CiAgICBzdXAuc3VwcGxlbWVudF9uLjE1MjU3ODE5NzY1MDAuODoKICAgICAgcmVxdWlyZW1lbnRzOgogICAgICAtIHN0cmVhbV9wdWJsaXNoXzA6IHtjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGll"
+ + "cy5zdHJlYW0uc3Vic2NyaWJlLCByZWxhdGlvbnNoaXA6IGRjYWUucmVsYXRpb25zaGlwcy5yZXdvcmtfY29ubmVjdGVkX3RvfQogICAgICAtIGhvc3Q6IHtjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5jZGFwSG9zdCwgcmVsYXRpb25zaGlwOiBkY2FlLnJlbGF0aW9uc2hpcHMuY29tcG9uZW50X2Nvb"
+ + "nRhaW5lZF9pbn0KICAgICAgLSBkZXBlbmRlbmN5OiB7Y2FwYWJpbGl0eTogdG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUsIHJlbGF0aW9uc2hpcDogdG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT259CiAgICAgIGNhcGFiaWxpdGllczoKICAgICAgICBzdHJlYW1fc3Vic2NyaWJlXzA6CiAgICAgICAgICBwcm"
+ + "9wZXJ0aWVzOiB7cm91dGU6IElHTk9SRSwgZm9ybWF0OiBWRVNfc3BlY2lmaWNhdGlvbiwgdmVyc2lvbjogNS4yOC40fQogICAgICBkZXNjcmlwdGlvbjogL3NkYy92MS9jYXRhbG9nL3Jlc291cmNlcy81YzFiY2FlMC1lMWQxLTRiNTMtOWVkMS1kNzI1N2UzYWVhYWIvYXJ0aWZhY3RzL2ZiZGFjYjhhLWViYzMt"
+ + "NGEyZC04Nzg3LTM2MWI5YWI1NzQyMwogICAgICB0eXBlOiB0b3NjYS5kY2FlLm5vZGVzLmNkYXBBcHAuc3VwcGxlbWVudAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGNvbm5lY3RlZF9icm9rZXJfZG5zX25hbWU6IHtnZXRfaW5wdXQ6IGNvbm5lY3RlZF9icm9rZXJfZG5zX25hbWV9CiAgICAgICAgcGhhc2"
+ + "VzLnN1cHBsZW1lbnQucGhhc2VOYW1lOiBzdXBwbGVtZW50CiAgICAgICAgcGhhc2VzLnZlc19zdXBwbGVtZW50LnBoYXNlTmFtZTogdmVzX3N1cHBsZW1lbnQKICAgICAgICBqc29uOiAneyJwcm9jZXNzaW5nIjpbeyJwaGFzZSI6InN1cHBsZW1lbnQiLCJmaWx0ZXIiOnsiY2xhc3MiOiJPbmVPZiIsImZpZWx"
+ + "kIjoiZXZlbnQuY29tbW9uRXZlbnRIZWFkZXIuZXZlbnRUeXBlIiwidmFsdWVzIjpbInZQQ1JGX0FsYXJtcyIsInZNb0dfQWxhcm1zIiwiYXBwbGljYXRpb25WbmYiLCJHdWVzdE9TX0FsYXJtcyIsIkNvbnRyb2wiXX0sInByb2Nlc3NvcnMiOlt7ImNsYXNzIjoiTG9nVGV4dCIsImxvZ0xldmVsIjoiSU5GTyIs"
+ + "ImxvZ1RleHQiOiJFbnRlcmluZwogICAgICAgICAgc3VwcGxlbWVudCBQaGFzZSAtIEZJTFRFUiBwYXJhbWV0ZXIgIC0gJHtldmVudC5jb21tb25FdmVudEhlYWRlci5ldmVudFR5cGV9In0seyJjbGFzcyI6IkRhdGVGb3JtYXR0ZXIiLCJ2YWx1ZSI6IiR7ZXZlbnQuY29tbW9uRXZlbnRIZWFkZXIuc3RhcnRFc"
+ + "G9jaE1pY3Jvc2VjfSIsImZyb21Gb3JtYXQiOiIjbXMiLCJmcm9tVHoiOiJHTVQiLCJ0b0ZpZWxkIjoiZXZlbnQuY29tbW9uRXZlbnRIZWFkZXIuaW50ZXJuYWxIZWFkZXJGaWVsZHMuZmlyc3REYXRldGltZSIsInRvRm9ybWF0IjoiRUVFLAogICAgICAgICAgZGQgTU0geXl5eSBISDptbTpzcyB6enoiLCJ0b"
+ + "1R6IjoiR01UIn0seyJjbGFzcyI6IkRhdGVGb3JtYXR0ZXIiLCJ2YWx1ZSI6IiR7ZXZlbnQuY29tbW9uRXZlbnRIZWFkZXIubGFzdEVwb2NoTWljcm9zZWN9IiwiZnJvbUZvcm1hdCI6IiNtcyIsImZyb21UeiI6IkdNVCIsInRvRmllbGQiOiJldmVudC5jb21tb25FdmVudEhlYWRlci5pbnRlcm5hbEhlYWRlc"
+ + "kZpZWxkcy5sYXN0RGF0ZXRpbWUiLCJ0b0Zvcm1hdCI6IkVFRSwKICAgICAgICAgIGRkIE1NIHl5eXkgSEg6bW06c3Mgenp6IiwidG9UeiI6IkdNVCJ9LHsiY2xhc3MiOiJEYXRlRm9ybWF0dGVyIiwidmFsdWUiOiIle25vdy5tc30iLCJmcm9tRm9ybWF0IjoiI21zIiwiZnJvbVR6IjoiR01UIiwidG9GaWVsZ"
+ + "CI6ImV2ZW50LmNvbW1vbkV2ZW50SGVhZGVyLmludGVybmFsSGVhZGVyRmllbGRzLmNvbGxlY3RvclRpbWVTdGFtcCIsInRvRm9ybWF0IjoiRUVFLAogICAgICAgICAgZGQgTU0geXl5eSBISDptbTpzcyB6enoiLCJ0b1R6IjoiR01UIn0seyJjbGFzcyI6IlNldCIsInVwZGF0ZXMiOnsiZXZlbnQuY29tbW9uRX"
+ + "ZlbnRIZWFkZXIuaW50ZXJuYWxIZWFkZXJGaWVsZHMuaW50ZXJuYWxIZWFkZXJGaWVsZHNWZXJzaW9uIjoiOS45IiwiZXZlbnQuY29tbW9uRXZlbnRIZWFkZXIuaW50ZXJuYWxIZWFkZXJGaWVsZHMuZXZlbnRUYWciOiIke2hwLnRhZ30ifX1dfSx7InBoYXNlIjoic3VwcGxlbWVudCIsInByb2Nlc3NvcnMiOlt7"
+ + "ImNsYXNzIjoiTG9nRXZlbnRQcmV0dHkiLCJ0aXRsZSI6IlN1cHBsZW1lbnRfRXZlbnRfUGFyc2VkOiIsImxvZ05hbWUiOiJjb20uYXR0LmdmcC5kY2FlLmV2ZW50UHJvY2Vzc29yLm91dHB1dCJ9LHsiY2xhc3MiOiJSdW5QaGFzZSIsInBoYXNlIjoic3VwcGxlbWVudF9wdWJsaXNoIn1dfSx7InBoYXNlIjoidm"
+ + "VzX3N1cHBsZW1lbnQiLCJmaWx0ZXIiOnsiY2xhc3MiOiJPbmVPZiIsImZpZWxkIjoiZXZlbnQuY29tbW9uRXZlbnRIZWFkZXIuZXZlbnRUeXBlIiwidmFsdWVzIjpbInZJUkNfQWxhcm1zIl19LCJwcm9jZXNzb3JzIjpbeyJjbGFzcyI6IlJ1blBoYXNlIiwicGhhc2UiOiJzdXBwbGVtZW50X3B1Ymxpc2gifV1"
+ + "9XX0nCiAgICAgICAgcGhhc2VzLnZlc19zdXBwbGVtZW50LnN0cmVhbVBhdHRlcm46IC4qc2VjLWZhdWx0LioKICAgICAgICBkZWZhdWx0Q2F0YWxvZ3M6IGNvbS5hdHQuZ2ZwLmRjYWUuZXZlbnRQcm9jZXNzb3IuQ2F0YWxvZyxjb20uYXR0LmVjb21wLmRjYWUuZXZlbnRwcm9jLmNkYXAuY29tbW9uLnByb2Nl"
+ + "c3NvcnMuQ2F0YWxvZwogICAgICAgIHBvc3RDb25maWc6ICd7InBoYXNlIjoic3VwcGxlbWVudF9wdWJsaXNoIiwicHJvY2Vzc29ycyI6W3siY2xhc3MiOiJFdmVudFByb2Nlc3Nvck1ldHJpYyIsIm1ldHJpYyI6Im91dC5ldmVudHMifSx7ImNsYXNzIjoiU2VuZEV2ZW50IiwiY2hhbm5lbCI6IjI0MjU2LURDQ"
+ + "UUtU1VQUExFTUVOVC1FVkVOVC1PVVQtdjEifV19JwogICAgICAgIHBoYXNlcy5zdXBwbGVtZW50LnN0cmVhbVBhdHRlcm46IC4qc3VwcGxlbWVudC1pbi4qCmltcG9ydHM6IFtdCnRvc2NhX2RlZmluaXRpb25zX3ZlcnNpb246IHRvc2NhX3NpbXBsZV95YW1sXzFfMF8wCg==\","
+ +"\"models\":[{\"template\": \"dG9zY2FfZGVmaW5pdGlvbnNfdmVyc2lvbjogdG9zY2Ffc2ltcGxlX3lhbWxfMV8wXzANCm1ldGFkYXRhOg0KICB0ZW1wbGF0ZV9uYW1lOiBzdXBwbGVtZW50DQppbXBvcnRzOg0KLSBzY2hlbWE6IHNjaGVtYS55YW1sDQp0b3BvbG9neV90ZW1wbGF0ZToNCiAgaW5wdXRzO"
+ + "g0KICAgIGNvbm5lY3RlZF9icm9rZXJfZG5zX25hbWU6DQogICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIGRlZmF1bHQ6IGNkYXBfYnJva2VyDQogIG5vZGVfdGVtcGxhdGVzOg0KICAgIHN1cHBsZW1lbnQ6DQogICAgICB0eXBlOiB0b3NjYS5kY2FlLm5vZGVzLmNkYXBBcHAuc3VwcGxlbWVudA0KICAgICAgc"
+ + "HJvcGVydGllczoNCiAgICAgICAgY29ubmVjdGVkX2Jyb2tlcl9kbnNfbmFtZToNCiAgICAgICAgICBnZXRfaW5wdXQ6IGNvbm5lY3RlZF9icm9rZXJfZG5zX25hbWUNCiAgICAgICAgZGVmYXVsdENhdGFsb2dzOiBjb20uYXR0LmdmcC5kY2FlLmV2ZW50UHJvY2Vzc29yLkNhdGFsb2csY29tLmF0dC5lY29tc"
+ + "C5kY2FlLmV2ZW50cHJvYy5jZGFwLmNvbW1vbi5wcm9jZXNzb3JzLkNhdGFsb2cNCiAgICAgICAganNvbjogJ3sicHJvY2Vzc2luZyI6W3sicGhhc2UiOiJzdXBwbGVtZW50IiwiZmlsdGVyIjp7ImNsYXNzIjoiT25lT2YiLCJmaWVsZCI6ImV2ZW50LmNvbW1vbkV2ZW50SGVhZGVyLmV2ZW50VHlwZSIsInZhb"
+ + "HVlcyI6WyJ2UENSRl9BbGFybXMiLCJ2TW9HX0FsYXJtcyIsImFwcGxpY2F0aW9uVm5mIiwiR3Vlc3RPU19BbGFybXMiLCJDb250cm9sIl19LCJwcm9jZXNzb3JzIjpbeyJjbGFzcyI6IkxvZ1RleHQiLCJsb2dMZXZlbCI6IklORk8iLCJsb2dUZXh0IjoiRW50ZXJpbmcgc3VwcGxlbWVudCBQaGFzZSAtIEZJT"
+ + "FRFUiBwYXJhbWV0ZXIgIC0gJHtldmVudC5jb21tb25FdmVudEhlYWRlci5ldmVudFR5cGV9In0seyJjbGFzcyI6IkRhdGVGb3JtYXR0ZXIiLCJ2YWx1ZSI6IiR7ZXZlbnQuY29tbW9uRXZlbnRIZWFkZXIuc3RhcnRFcG9jaE1pY3Jvc2VjfSIsImZyb21Gb3JtYXQiOiIjbXMiLCJmcm9tVHoiOiJHTVQiLCJ0b"
+ + "0ZpZWxkIjoiZXZlbnQuY29tbW9uRXZlbnRIZWFkZXIuaW50ZXJuYWxIZWFkZXJGaWVsZHMuZmlyc3REYXRldGltZSIsInRvRm9ybWF0IjoiRUVFLCBkZCBNTSB5eXl5IEhIOm1tOnNzIHp6eiIsInRvVHoiOiJHTVQifSx7ImNsYXNzIjoiRGF0ZUZvcm1hdHRlciIsInZhbHVlIjoiJHtldmVudC5jb21tb25Fd"
+ + "mVudEhlYWRlci5sYXN0RXBvY2hNaWNyb3NlY30iLCJmcm9tRm9ybWF0IjoiI21zIiwiZnJvbVR6IjoiR01UIiwidG9GaWVsZCI6ImV2ZW50LmNvbW1vbkV2ZW50SGVhZGVyLmludGVybmFsSGVhZGVyRmllbGRzLmxhc3REYXRldGltZSIsInRvRm9ybWF0IjoiRUVFLCBkZCBNTSB5eXl5IEhIOm1tOnNzIHp6"
+ + "eiIsInRvVHoiOiJHTVQifSx7ImNsYXNzIjoiRGF0ZUZvcm1hdHRlciIsInZhbHVlIjoiJXtub3cubXN9IiwiZnJvbUZvcm1hdCI6IiNtcyIsImZyb21UeiI6IkdNVCIsInRvRmllbGQiOiJldmVudC5jb21tb25FdmVudEhlYWRlci5pbnRlcm5hbEhlYWRlckZpZWxkcy5jb2xsZWN0b3JUaW1lU3RhbXAiLCJ"
+ + "0b0Zvcm1hdCI6IkVFRSwgZGQgTU0geXl5eSBISDptbTpzcyB6enoiLCJ0b1R6IjoiR01UIn0seyJjbGFzcyI6IlNldCIsInVwZGF0ZXMiOnsiZXZlbnQuY29tbW9uRXZlbnRIZWFkZXIuaW50ZXJuYWxIZWFkZXJGaWVsZHMuaW50ZXJuYWxIZWFkZXJGaWVsZHNWZXJzaW9uIjoiOS45IiwiZXZlbnQuY29tbW"
+ + "9uRXZlbnRIZWFkZXIuaW50ZXJuYWxIZWFkZXJGaWVsZHMuZXZlbnRUYWciOiIke2hwLnRhZ30ifX1dfSx7InBoYXNlIjoic3VwcGxlbWVudCIsInByb2Nlc3NvcnMiOlt7ImNsYXNzIjoiTG9nRXZlbnRQcmV0dHkiLCJ0aXRsZSI6IlN1cHBsZW1lbnRfRXZlbnRfUGFyc2VkOiIsImxvZ05hbWUiOiJjb20u"
+ + "YXR0LmdmcC5kY2FlLmV2ZW50UHJvY2Vzc29yLm91dHB1dCJ9LHsiY2xhc3MiOiJSdW5QaGFzZSIsInBoYXNlIjoic3VwcGxlbWVudF9wdWJsaXNoIn1dfSx7InBoYXNlIjoidmVzX3N1cHBsZW1lbnQiLCJmaWx0ZXIiOnsiY2xhc3MiOiJPbmVPZiIsImZpZWxkIjoiZXZlbnQuY29tbW9uRXZlbnRIZWFkZXI"
+ + "uZXZlbnRUeXBlIiwidmFsdWVzIjpbInZJUkNfQWxhcm1zIl19LCJwcm9jZXNzb3JzIjpbeyJjbGFzcyI6IlJ1blBoYXNlIiwicGhhc2UiOiJzdXBwbGVtZW50X3B1Ymxpc2gifV19XX0nDQogICAgICAgIHBoYXNlcy5zdXBwbGVtZW50LnBoYXNlTmFtZTogc3VwcGxlbWVudA0KICAgICAgICBwaGFzZXMuc"
+ + "3VwcGxlbWVudC5zdHJlYW1QYXR0ZXJuOiAuKnN1cHBsZW1lbnQtaW4uKg0KICAgICAgICBwaGFzZXMudmVzX3N1cHBsZW1lbnQucGhhc2VOYW1lOiB2ZXNfc3VwcGxlbWVudA0KICAgICAgICBwaGFzZXMudmVzX3N1cHBsZW1lbnQuc3RyZWFtUGF0dGVybjogLipzZWMtZmF1bHQuKg0KICAgICAgICBwb3N"
+ + "0Q29uZmlnOiAneyJwaGFzZSI6InN1cHBsZW1lbnRfcHVibGlzaCIsInByb2Nlc3NvcnMiOlt7ImNsYXNzIjoiRXZlbnRQcm9jZXNzb3JNZXRyaWMiLCJtZXRyaWMiOiJvdXQuZXZlbnRzIn0seyJjbGFzcyI6IlNlbmRFdmVudCIsImNoYW5uZWwiOiIyNDI1Ni1EQ0FFLVNVUFBMRU1FTlQtRVZFTlQtT1VUL"
+ + "XYxIn1dfScNCiAgICAgIGNhcGFiaWxpdGllczoNCiAgICAgICAgc3RyZWFtX3N1YnNjcmliZV8wOg0KICAgICAgICAgIHByb3BlcnRpZXM6DQogICAgICAgICAgICBmb3JtYXQ6IFZFU19zcGVjaWZpY2F0aW9uDQogICAgICAgICAgICByb3V0ZTogSUdOT1JFDQogICAgICAgICAgICB2ZXJzaW9uOiA1Lj"
+ + "I4LjQNCiAgICAgIHJlcXVpcmVtZW50czoNCiAgICAgIC0gc3RyZWFtX3B1Ymxpc2hfMDoNCiAgICAgICAgICBjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5zdHJlYW0uc3Vic2NyaWJlDQogICAgICAgICAgcmVsYXRpb25zaGlwOiBkY2FlLnJlbGF0aW9uc2hpcHMucmV3b3JrX2Nvbm5lY3RlZF9"
+ + "0bw0KICAgICAgICAgIG5vZGVfZmlsdGVyOg0KICAgICAgICAgICAgY2FwYWJpbGl0aWVzOg0KICAgICAgICAgICAgLSBkY2FlLmNhcGFiaWxpdGllcy5zdHJlYW0uc3Vic2NyaWJlOg0KICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6DQogICAgICAgICAgICAgICAgLSBmb3JtYXQ6DQogICAgICAgICAgICAg"
+ + "ICAgICAtIGVxdWFsOiBWRVNfc3BlY2lmaWNhdGlvbg0KICAgICAgICAgICAgICAgIC0gdmVyc2lvbjoNCiAgICAgICAgICAgICAgICAgIC0gZXF1YWw6IDUuMjguNA0K\","
+ +"\"schema\":\"dG9zY2FfZGVmaW5pdGlvbnNfdmVyc2lvbjogdG9zY2Ffc2ltcGxlX3lhbWxfMV8wXzANCmNhcGFiaWxpdHlfdHlwZXM6DQogIGRjYWUuY2FwYWJpbGl0aWVzLmNkYXBIb3N0Og0KICAgIGRlcml2ZWRfZnJvbTogdG9zY2EuY2FwYWJpbGl0aWVzLlJvb3QNCiAgZGNhZS5jYXBhYmlsaXRpZXMuY2"
+ + "9tcG9zaXRpb24uaG9zdDoNCiAgICBkZXJpdmVkX2Zyb206IHRvc2NhLmNhcGFiaWxpdGllcy5Sb290DQogICAgcHJvcGVydGllczoNCiAgICAgIGxvY2F0aW9uX2lkOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHNlcnZpY2VfaWQ6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICBkY2FlLmNhcGFiaWx"
+ + "pdGllcy5kbW1hcC5mZWVkOg0KICAgIGRlcml2ZWRfZnJvbTogdG9zY2EuY2FwYWJpbGl0aWVzLlJvb3QNCiAgICBwcm9wZXJ0aWVzOg0KICAgICAgZmVlZF9uYW1lOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIGxvY2F0aW9uOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIG5vZGVfbmFtZToNC"
+ + "iAgICAgICAgdHlwZTogc3RyaW5nDQogIGRjYWUuY2FwYWJpbGl0aWVzLmRtbWFwLnRvcGljOg0KICAgIGRlcml2ZWRfZnJvbTogdG9zY2EuY2FwYWJpbGl0aWVzLlJvb3QNCiAgICBwcm9wZXJ0aWVzOg0KICAgICAgYWFmX3Bhc3N3b3JkOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIGFhZl91c2Vyb"
+ + "mFtZToNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBjbGllbnRfcm9sZToNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBsb2NhdGlvbjoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBub2RlX25hbWU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgdG9waWNfbmFtZToNCiAgICAgI"
+ + "CAgdHlwZTogc3RyaW5nDQogIGRjYWUuY2FwYWJpbGl0aWVzLmRvY2tlckhvc3Q6DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5jYXBhYmlsaXRpZXMuUm9vdA0KICBkY2FlLmNhcGFiaWxpdGllcy5wb2xpY3k6DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5jYXBhYmlsaXRpZXMuUm9vdA0KICBkY2FlLmNhc"
+ + "GFiaWxpdGllcy5zZXJ2aWNlLnByb3ZpZGU6DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5jYXBhYmlsaXRpZXMuUm9vdA0KICAgIHByb3BlcnRpZXM6DQogICAgICByZXF1ZXN0X2Zvcm1hdDoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICByZXF1ZXN0X3ZlcnNpb246DQogICAgICAgIHR5cGU6IHN0c"
+ + "mluZw0KICAgICAgcmVzcG9uc2VfZm9ybWF0Og0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHJlc3BvbnNlX3ZlcnNpb246DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgc2VydmljZV9lbmRwb2ludDoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBzZXJ2aWNlX25hbWU6DQogICAgICAgIH"
+ + "R5cGU6IHN0cmluZw0KICAgICAgdmVyYjoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogIGRjYWUuY2FwYWJpbGl0aWVzLnN0cmVhbS5zdWJzY3JpYmU6DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5jYXBhYmlsaXRpZXMuUm9vdA0KICAgIHByb3BlcnRpZXM6DQogICAgICBmb3JtYXQ6DQogICAgICAgIHR5cG"
+ + "U6IHN0cmluZw0KICAgICAgcm91dGU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgdmVyc2lvbjoNCiAgICAgICAgdHlwZTogc3RyaW5nDQpyZWxhdGlvbnNoaXBfdHlwZXM6DQogIGNsb3VkaWZ5LnJlbGF0aW9uc2hpcHMuZGVwZW5kc19vbjoNCiAgICBkZXJpdmVkX2Zyb206IHRvc2NhLnJlbGF0aW9"
+ + "uc2hpcHMuUm9vdA0KICBkY2FlLnJlbGF0aW9uc2hpcHMuY29tcG9uZW50X2NvbnRhaW5lZF9pbjoNCiAgICBkZXJpdmVkX2Zyb206IHRvc2NhLnJlbGF0aW9uc2hpcHMuUm9vdA0KICBkY2FlLnJlbGF0aW9uc2hpcHMucHVibGlzaF9ldmVudHM6DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5yZWxhdGlvbnNo"
+ + "aXBzLlJvb3QNCiAgZGNhZS5yZWxhdGlvbnNoaXBzLnB1Ymxpc2hfZmlsZXM6DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5yZWxhdGlvbnNoaXBzLlJvb3QNCiAgZGNhZS5yZWxhdGlvbnNoaXBzLnJld29ya19jb25uZWN0ZWRfdG86DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5yZWxhdGlvbnNoaXBzLlJvb"
+ + "3QNCiAgZGNhZS5yZWxhdGlvbnNoaXBzLnN1YnNjcmliZV90b19ldmVudHM6DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5yZWxhdGlvbnNoaXBzLlJvb3QNCiAgZGNhZS5yZWxhdGlvbnNoaXBzLnN1YnNjcmliZV90b19maWxlczoNCiAgICBkZXJpdmVkX2Zyb206IHRvc2NhLnJlbGF0aW9uc2hpcHMuUm9vdA"
+ + "0Kbm9kZV90eXBlczoNCiAgY2xvdWRpZnkuZGNhZS5ub2Rlcy5Sb290Og0KICAgIGRlcml2ZWRfZnJvbTogdG9zY2Eubm9kZXMuUm9vdA0KICBkY2FlLm5vZGVzLkRvY2tlckNvbnRhaW5lckZvckNvbXBvbmVudHM6DQogICAgYXR0cmlidXRlczoNCiAgICAgIHNlcnZpY2VfY29tcG9uZW50X25hbWU6DQogICA"
+ + "gICAgIHR5cGU6IHN0cmluZw0KICAgIGRlcml2ZWRfZnJvbTogY2xvdWRpZnkuZGNhZS5ub2Rlcy5Sb290DQogICAgcHJvcGVydGllczoNCiAgICAgIGFwcGxpY2F0aW9uX2NvbmZpZzoNCiAgICAgICAgcmVxdWlyZWQ6IHRydWUNCiAgICAgICAgdHlwZTogbWFwDQogICAgICBkb2NrZXJfY29uZmlnOg0KICAg"
+ + "ICAgICB0eXBlOiBtYXANCiAgICAgIGltYWdlOg0KICAgICAgICByZXF1aXJlZDogdHJ1ZQ0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIGxvY2F0aW9uX2lkOg0KICAgICAgICByZXF1aXJlZDogdHJ1ZQ0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHNlcnZpY2VfY29tcG9uZW50X3R5cGU6DQogI"
+ + "CAgICAgIHJlcXVpcmVkOiB0cnVlDQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgIHJlcXVpcmVtZW50czoNCiAgICAtIGhvc3Q6DQogICAgICAgIGNhcGFiaWxpdHk6IGRjYWUuY2FwYWJpbGl0aWVzLmRvY2tlckhvc3QNCiAgICAgICAgcmVsYXRpb25zaGlwOiBkY2FlLnJlbGF0aW9uc2hpcHMuY29tcG9uZW"
+ + "50X2NvbnRhaW5lZF9pbg0KICBkY2FlLm5vZGVzLkRvY2tlckNvbnRhaW5lckZvckNvbXBvbmVudHNVc2luZ0RtYWFwOg0KICAgIGRlcml2ZWRfZnJvbTogZGNhZS5ub2Rlcy5Eb2NrZXJDb250YWluZXJGb3JDb21wb25lbnRzDQogICAgcHJvcGVydGllczoNCiAgICAgIHN0cmVhbXNfcHVibGlzaGVzOg0KICA"
+ + "gICAgICB0eXBlOiBsaXN0DQogICAgICBzdHJlYW1zX3N1YnNjcmliZXM6DQogICAgICAgIHR5cGU6IGxpc3QNCiAgZGNhZS5ub2Rlcy5FeGlzdGluZ0ZlZWQ6DQogICAgY2FwYWJpbGl0aWVzOg0KICAgICAgZmVlZDoNCiAgICAgICAgdHlwZTogZGNhZS5jYXBhYmlsaXRpZXMuZG1tYXAuZmVlZA0KICAgIGRl"
+ + "cml2ZWRfZnJvbTogY2xvdWRpZnkuZGNhZS5ub2Rlcy5Sb290DQogICAgcHJvcGVydGllczoNCiAgICAgIGZlZWRfaWQ6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICBkY2FlLm5vZGVzLkV4aXN0aW5nVG9waWM6DQogICAgY2FwYWJpbGl0aWVzOg0KICAgICAgdG9waWM6DQogICAgICAgIHR5cGU6IGRjYWUuY"
+ + "2FwYWJpbGl0aWVzLmRtbWFwLnRvcGljDQogICAgZGVyaXZlZF9mcm9tOiBjbG91ZGlmeS5kY2FlLm5vZGVzLlJvb3QNCiAgICBwcm9wZXJ0aWVzOg0KICAgICAgZnF0bjoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogIGRjYWUubm9kZXMuRXh0ZXJuYWxUYXJnZXRGZWVkOg0KICAgIGNhcGFiaWxpdGllczoNCi"
+ + "AgICAgIGZlZWQ6DQogICAgICAgIHR5cGU6IGRjYWUuY2FwYWJpbGl0aWVzLmRtbWFwLmZlZWQNCiAgICBkZXJpdmVkX2Zyb206IGNsb3VkaWZ5LmRjYWUubm9kZXMuUm9vdA0KICAgIHByb3BlcnRpZXM6DQogICAgICB1cmw6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgdXNlcm5hbWU6DQogICAgICA"
+ + "gIHR5cGU6IHN0cmluZw0KICAgICAgdXNlcnB3Og0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgZGNhZS5ub2Rlcy5GZWVkOg0KICAgIGNhcGFiaWxpdGllczoNCiAgICAgIGZlZWQ6DQogICAgICAgIHR5cGU6IGRjYWUuY2FwYWJpbGl0aWVzLmRtbWFwLmZlZWQNCiAgICBkZXJpdmVkX2Zyb206IGNsb3VkaWZ5"
+ + "LmRjYWUubm9kZXMuUm9vdA0KICAgIHByb3BlcnRpZXM6DQogICAgICBmZWVkX25hbWU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICBkY2FlLm5vZGVzLk1pY3JvU2VydmljZS5jZGFwOg0KICAgIGRlcml2ZWRfZnJvbTogY2xvdWRpZnkuZGNhZS5ub2Rlcy5Sb290DQogICAgcHJvcGVydGllczoNCiAgICAgI"
+ + "GFwcF9jb25maWc6DQogICAgICAgIHJlcXVpcmVkOiBmYWxzZQ0KICAgICAgICB0eXBlOiBtYXANCiAgICAgIGFwcF9wcmVmZXJlbmNlczoNCiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlDQogICAgICAgIHR5cGU6IG1hcA0KICAgICAgYXJ0aWZhY3RfbmFtZToNCiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlDQogIC"
+ + "AgICAgIHR5cGU6IHN0cmluZw0KICAgICAgYXJ0aWZhY3RfdmVyc2lvbjoNCiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlDQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgY29ubmVjdGlvbnM6DQogICAgICAgIHJlcXVpcmVkOiBmYWxzZQ0KICAgICAgICB0eXBlOiBtYXANCiAgICAgIGphcl91cmw6DQogICA"
+ + "gICAgIHR5cGU6IHN0cmluZw0KICAgICAgbmFtZXNwYWNlOg0KICAgICAgICByZXF1aXJlZDogZmFsc2UNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBwcm9ncmFtX3ByZWZlcmVuY2VzOg0KICAgICAgICByZXF1aXJlZDogZmFsc2UNCiAgICAgICAgdHlwZTogbGlzdA0KICAgICAgcHJvZ3JhbXM6DQog"
+ + "ICAgICAgIHJlcXVpcmVkOiBmYWxzZQ0KICAgICAgICB0eXBlOiBsaXN0DQogICAgICBzZXJ2aWNlX2NvbXBvbmVudF90eXBlOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHNlcnZpY2VfZW5kcG9pbnRzOg0KICAgICAgICByZXF1aXJlZDogZmFsc2UNCiAgICAgICAgdHlwZTogbGlzdA0KICAgICAgc"
+ + "3RyZWFtbmFtZToNCiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlDQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgIGF0dHJpYnV0ZXM6DQogICAgICBzZXJ2aWNlX2NvbXBvbmVudF9uYW1lOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICBjYXBhYmlsaXRpZXM6DQogICAgICBzdHJlYW1fc3Vic2NyaWJlXzA6DQ"
+ + "ogICAgICAgIHR5cGU6IGRjYWUuY2FwYWJpbGl0aWVzLnN0cmVhbS5zdWJzY3JpYmUNCiAgICByZXF1aXJlbWVudHM6DQogICAgLSBob3N0Og0KICAgICAgICBjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5jZGFwSG9zdA0KICAgICAgICByZWxhdGlvbnNoaXA6IGRjYWUucmVsYXRpb25zaGlwcy5jb2"
+ + "1wb25lbnRfY29udGFpbmVkX2luDQogICAgLSBzdHJlYW1fcHVibGlzaF8wOg0KICAgICAgICBjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5zdHJlYW0uc3Vic2NyaWJlDQogICAgICAgIHJlbGF0aW9uc2hpcDogZGNhZS5yZWxhdGlvbnNoaXBzLnJld29ya19jb25uZWN0ZWRfdG8NCiAgICBpbnRlcmZ"
+ + "hY2VzOg0KICAgICAgY2xvdWRpZnkuaW50ZXJmYWNlcy5saWZlY3ljbGU6DQogICAgICAgIGNyZWF0ZToNCiAgICAgICAgICBpbnB1dHM6DQogICAgICAgICAgICBjb25uZWN0ZWRfYnJva2VyX2Ruc19uYW1lOg0KICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgICAgdHlwZTogdG9zY2EuaW50ZXJ"
+ + "mYWNlcy5Sb290DQogIGRjYWUubm9kZXMuU2VsZWN0ZWREb2NrZXJIb3N0Og0KICAgIGNhcGFiaWxpdGllczoNCiAgICAgIGhvc3Q6DQogICAgICAgIHR5cGU6IGRjYWUuY2FwYWJpbGl0aWVzLmRvY2tlckhvc3QNCiAgICBkZXJpdmVkX2Zyb206IGNsb3VkaWZ5LmRjYWUubm9kZXMuUm9vdA0KICAgIHByb3B"
+ + "lcnRpZXM6DQogICAgICBkb2NrZXJfaG9zdF9vdmVycmlkZToNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBsb2NhdGlvbl9pZDoNCiAgICAgICAgcmVxdWlyZWQ6IHRydWUNCiAgICAgICAgdHlwZTogc3RyaW5nDQogIGRjYWUubm9kZXMuVG9waWM6DQogICAgY2FwYWJpbGl0aWVzOg0KICAgICAgdG9w"
+ + "aWM6DQogICAgICAgIHR5cGU6IGRjYWUuY2FwYWJpbGl0aWVzLmRtbWFwLnRvcGljDQogICAgZGVyaXZlZF9mcm9tOiBjbG91ZGlmeS5kY2FlLm5vZGVzLlJvb3QNCiAgICBwcm9wZXJ0aWVzOg0KICAgICAgdG9waWNfbmFtZToNCiAgICAgICAgdHlwZTogc3RyaW5nDQogIGRjYWUubm9kZXMuY29tcG9zaXRpb"
+ + "24udmlydHVhbDoNCiAgICBjYXBhYmlsaXRpZXM6DQogICAgICBob3N0Og0KICAgICAgICB0eXBlOiBkY2FlLmNhcGFiaWxpdGllcy5jb21wb3NpdGlvbi5ob3N0DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5ub2Rlcy5Sb290DQogICAgcHJvcGVydGllczoNCiAgICAgIGxvY2F0aW9uX2lkOg0KICAgICAgIC"
+ + "ByZXF1aXJlZDogdHJ1ZQ0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHNlcnZpY2VfaWQ6DQogICAgICAgIHJlcXVpcmVkOiB0cnVlDQogICAgICAgIHR5cGU6IHN0cmluZw0KICBkY2FlLm5vZGVzLnBvbGljeToNCiAgICBjYXBhYmlsaXRpZXM6DQogICAgICBwb2xpY3k6DQogICAgICAgIHR5cGU6IGR"
+ + "jYWUuY2FwYWJpbGl0aWVzLnBvbGljeQ0KICAgIGRlcml2ZWRfZnJvbTogY2xvdWRpZnkuZGNhZS5ub2Rlcy5Sb290DQogICAgcHJvcGVydGllczoNCiAgICAgIHBvbGljeV9pZDoNCiAgICAgICAgcmVxdWlyZWQ6IHRydWUNCiAgICAgICAgdHlwZTogc3RyaW5nDQogIHBvbGljeS5ub2Rlcy5Sb290Og0KICAg"
+ + "IGRlcml2ZWRfZnJvbTogdG9zY2Eubm9kZXMuUm9vdA0KICAgIHByb3BlcnRpZXM6DQogICAgICBwb2xpY3lEZXNjcmlwdGlvbjoNCiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlDQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgcG9saWN5TmFtZToNCiAgICAgICAgcmVxdWlyZWQ6IHRydWUNCiAgICAgICAgd"
+ + "HlwZTogc3RyaW5nDQogICAgICBwb2xpY3lTY29wZToNCiAgICAgICAgcmVxdWlyZWQ6IHRydWUNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBwb2xpY3lWZXJzaW9uOg0KICAgICAgICByZXF1aXJlZDogdHJ1ZQ0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgdG9zY2EuZGNhZS5ub2Rlcy5Sb290Og0KIC"
+ + "AgIGRlcml2ZWRfZnJvbTogdG9zY2Eubm9kZXMuUm9vdA0KICB0b3NjYS5kY2FlLm5vZGVzLmNkYXBBcHA6DQogICAgYXR0cmlidXRlczoNCiAgICAgIHNlcnZpY2VfY29tcG9uZW50X25hbWU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgIGRlcml2ZWRfZnJvbTogdG9zY2EuZGNhZS5ub2Rlcy5Sb290DQ"
+ + "ogICAgcHJvcGVydGllczoNCiAgICAgIGNvbm5lY3RlZF9icm9rZXJfZG5zX25hbWU6DQogICAgICAgIGRlZmF1bHQ6IGNkYXBfYnJva2VyDQogICAgICAgIHJlcXVpcmVkOiB0cnVlDQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgamFyX3VybDoNCiAgICAgICAgcmVxdWlyZWQ6IHRydWUNCiAgICAgIC"
+ + "AgdHlwZTogc3RyaW5nDQogICAgICBzZXJ2aWNlX2NvbXBvbmVudF90eXBlOg0KICAgICAgICByZXF1aXJlZDogdHJ1ZQ0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICByZXF1aXJlbWVudHM6DQogICAgLSBob3N0Og0KICAgICAgICBjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5jZGFwSG9zdA0KICA"
+ + "gICAgICByZWxhdGlvbnNoaXA6IGRjYWUucmVsYXRpb25zaGlwcy5jb21wb25lbnRfY29udGFpbmVkX2luDQogIHRvc2NhLmRjYWUubm9kZXMuY2RhcEFwcC5zdXBwbGVtZW50Og0KICAgIGRlcml2ZWRfZnJvbTogdG9zY2EuZGNhZS5ub2Rlcy5jZGFwQXBwDQogICAgcHJvcGVydGllczoNCiAgICAgIGRlZmF"
+ + "1bHRDYXRhbG9nczoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBqc29uOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHBoYXNlcy5zdXBwbGVtZW50LnBoYXNlTmFtZToNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBwaGFzZXMuc3VwcGxlbWVudC5zdHJlYW1QYXR0ZXJuOg0KICAgICAg"
+ + "ICB0eXBlOiBzdHJpbmcNCiAgICAgIHBoYXNlcy52ZXNfc3VwcGxlbWVudC5waGFzZU5hbWU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgcGhhc2VzLnZlc19zdXBwbGVtZW50LnN0cmVhbVBhdHRlcm46DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgcG9zdENvbmZpZzoNCiAgICAgICAgdHlwZ"
+ + "Togc3RyaW5nDQogICAgY2FwYWJpbGl0aWVzOg0KICAgICAgc3RyZWFtX3N1YnNjcmliZV8wOg0KICAgICAgICB0eXBlOiBkY2FlLmNhcGFiaWxpdGllcy5zdHJlYW0uc3Vic2NyaWJlDQogICAgcmVxdWlyZW1lbnRzOg0KICAgIC0gc3RyZWFtX3B1Ymxpc2hfMDoNCiAgICAgICAgY2FwYWJpbGl0eTogZGNhZS"
+ + "5jYXBhYmlsaXRpZXMuc3RyZWFtLnN1YnNjcmliZQ0KICAgICAgICByZWxhdGlvbnNoaXA6IGRjYWUucmVsYXRpb25zaGlwcy5yZXdvcmtfY29ubmVjdGVkX3RvDQogIHRvc2NhLmRjYWUubm9kZXMuZG1hYXAuZXhpc3RpbmdGZWVkOg0KICAgIGNhcGFiaWxpdGllczoNCiAgICAgIGZlZWQ6DQogICAgICAgIHR"
+ + "5cGU6IGRjYWUuY2FwYWJpbGl0aWVzLmRtbWFwLmZlZWQNCiAgICBkZXJpdmVkX2Zyb206IHRvc2NhLmRjYWUubm9kZXMuUm9vdA0KICAgIHByb3BlcnRpZXM6DQogICAgICBmZWVkX2lkOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIGxvY2F0aW9uOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAg"
+ + "IG5vZGVfbmFtZToNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgcmVxdWlyZW1lbnRzOg0KICAgIC0gY29tcG9zaXRpb246DQogICAgICAgIGNhcGFiaWxpdHk6IGRjYWUuY2FwYWJpbGl0aWVzLmNvbXBvc2l0aW9uLmhvc3QNCiAgdG9zY2EuZGNhZS5ub2Rlcy5kbWFhcC5leGlzdGluZ1RvcGljOg0KICAg"
+ + "IGNhcGFiaWxpdGllczoNCiAgICAgIHRvcGljOg0KICAgICAgICB0eXBlOiBkY2FlLmNhcGFiaWxpdGllcy5kbW1hcC50b3BpYw0KICAgIGRlcml2ZWRfZnJvbTogdG9zY2EuZGNhZS5ub2Rlcy5Sb290DQogICAgcHJvcGVydGllczoNCiAgICAgIGFhZl9wYXNzd29yZDoNCiAgICAgICAgdHlwZTogc3RyaW5nDQ"
+ + "ogICAgICBhYWZfdXNlcm5hbWU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgY2xpZW50X3JvbGU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgZnF0bjoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBsb2NhdGlvbjoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBub2RlX25hbWU6"
+ + "DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgIHJlcXVpcmVtZW50czoNCiAgICAtIGNvbXBvc2l0aW9uOg0KICAgICAgICBjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5jb21wb3NpdGlvbi5ob3N0DQogIHRvc2NhLmRjYWUubm9kZXMuZG1hYXAuZXh0ZXJuYWxUYXJnZXRGZWVkOg0KICAgIGNhcGFiaW"
+ + "xpdGllczoNCiAgICAgIGZlZWQ6DQogICAgICAgIHR5cGU6IGRjYWUuY2FwYWJpbGl0aWVzLmRtbWFwLmZlZWQNCiAgICBkZXJpdmVkX2Zyb206IHRvc2NhLmRjYWUubm9kZXMuUm9vdA0KICAgIHByb3BlcnRpZXM6DQogICAgICBsb2NhdGlvbjoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBub2RlX25"
+ + "hbWU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgdXJsOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHVzZXJuYW1lOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHVzZXJwdzoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgcmVxdWlyZW1lbnRzOg0KICAgIC0gY29tcG9zaXRpb246"
+ + "DQogICAgICAgIGNhcGFiaWxpdHk6IGRjYWUuY2FwYWJpbGl0aWVzLmNvbXBvc2l0aW9uLmhvc3QNCiAgdG9zY2EuZGNhZS5ub2Rlcy5kbWFhcC5mZWVkOg0KICAgIGNhcGFiaWxpdGllczoNCiAgICAgIGZlZWQ6DQogICAgICAgIHR5cGU6IGRjYWUuY2FwYWJpbGl0aWVzLmRtbWFwLmZlZWQNCiAgICBkZXJpd"
+ + "mVkX2Zyb206IHRvc2NhLmRjYWUubm9kZXMuUm9vdA0KICAgIHByb3BlcnRpZXM6DQogICAgICBmZWVkX25hbWU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgbG9jYXRpb246DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgbm9kZV9uYW1lOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICByZX"
+ + "F1aXJlbWVudHM6DQogICAgLSBjb21wb3NpdGlvbjoNCiAgICAgICAgY2FwYWJpbGl0eTogZGNhZS5jYXBhYmlsaXRpZXMuY29tcG9zaXRpb24uaG9zdA0KICB0b3NjYS5kY2FlLm5vZGVzLmRtYWFwLnRvcGljOg0KICAgIGNhcGFiaWxpdGllczoNCiAgICAgIHRvcGljOg0KICAgICAgICB0eXBlOiBkY2FlLmN"
+ + "hcGFiaWxpdGllcy5kbW1hcC50b3BpYw0KICAgIGRlcml2ZWRfZnJvbTogdG9zY2EuZGNhZS5ub2Rlcy5Sb290DQogICAgcHJvcGVydGllczoNCiAgICAgIGFhZl9wYXNzd29yZDoNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBhYWZfdXNlcm5hbWU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAg"
+ + "Y2xpZW50X3JvbGU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgbG9jYXRpb246DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgICAgbm9kZV9uYW1lOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHRvcGljX25hbWU6DQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgIHJlcXVpcmVtZW50czoNC"
+ + "iAgICAtIGNvbXBvc2l0aW9uOg0KICAgICAgICBjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5jb21wb3NpdGlvbi5ob3N0DQogIHRvc2NhLmRjYWUubm9kZXMuZG9ja2VyQXBwOg0KICAgIGF0dHJpYnV0ZXM6DQogICAgICBzZXJ2aWNlX2NvbXBvbmVudF9uYW1lOg0KICAgICAgICB0eXBlOiBzdHJpb"
+ + "mcNCiAgICBkZXJpdmVkX2Zyb206IHRvc2NhLmRjYWUubm9kZXMuUm9vdA0KICAgIHByb3BlcnRpZXM6DQogICAgICBpbWFnZToNCiAgICAgICAgcmVxdWlyZWQ6IHRydWUNCiAgICAgICAgdHlwZTogc3RyaW5nDQogICAgICBsb2NhdGlvbl9pZDoNCiAgICAgICAgcmVxdWlyZWQ6IHRydWUNCiAgICAgICAgd"
+ + "HlwZTogc3RyaW5nDQogICAgICBzZXJ2aWNlX2NvbXBvbmVudF90eXBlOg0KICAgICAgICByZXF1aXJlZDogdHJ1ZQ0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICByZXF1aXJlbWVudHM6DQogICAgLSBob3N0Og0KICAgICAgICBjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5kb2NrZXJIb3N0DQogI"
+ + "CAgICAgIHJlbGF0aW9uc2hpcDogZGNhZS5yZWxhdGlvbnNoaXBzLmNvbXBvbmVudF9jb250YWluZWRfaW4NCiAgICAtIGNvbXBvc2l0aW9uOg0KICAgICAgICBjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5jb21wb3NpdGlvbi5ob3N0DQogIHRvc2NhLmRjYWUubm9kZXMuZG9ja2VySG9zdDoNCiAgIC"
+ + "BjYXBhYmlsaXRpZXM6DQogICAgICBob3N0Og0KICAgICAgICB0eXBlOiBkY2FlLmNhcGFiaWxpdGllcy5kb2NrZXJIb3N0DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5kY2FlLm5vZGVzLlJvb3QNCiAgICBwcm9wZXJ0aWVzOg0KICAgICAgZG9ja2VyX2hvc3Rfb3ZlcnJpZGU6DQogICAgICAgIHR5cGU6IHN"
+ + "0cmluZw0KICAgICAgbG9jYXRpb25faWQ6DQogICAgICAgIHJlcXVpcmVkOiB0cnVlDQogICAgICAgIHR5cGU6IHN0cmluZw0KICAgIHJlcXVpcmVtZW50czoNCiAgICAtIGNvbXBvc2l0aW9uOg0KICAgICAgICBjYXBhYmlsaXR5OiBkY2FlLmNhcGFiaWxpdGllcy5jb21wb3NpdGlvbi5ob3N0DQogIHRvc2Nh"
+ + "LmRjYWUubm9kZXMucG9saWN5Og0KICAgIGNhcGFiaWxpdGllczoNCiAgICAgIHBvbGljeToNCiAgICAgICAgdHlwZTogZGNhZS5jYXBhYmlsaXRpZXMucG9saWN5DQogICAgZGVyaXZlZF9mcm9tOiB0b3NjYS5kY2FlLm5vZGVzLlJvb3QNCiAgICBwcm9wZXJ0aWVzOg0KICAgICAgcG9saWN5X2lkOg0KICAgI"
+ + "CAgICByZXF1aXJlZDogdHJ1ZQ0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHBvbGljeV9uYW1lOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCg==\","
+ +"\"translate\": \"dG9zY2FfZGVmaW5pdGlvbnNfdmVyc2lvbjogdG9zY2Ffc2ltcGxlX3lhbWxfMV8wXzANCm1ldGFkYXRhOg0KICB0ZW1wbGF0ZV9uYW1lOiBzdXBwbGVtZW50X3RyYW5zbGF0ZQ0KaW1wb3J0czoNCi0gJzAnOiBodHRwOi8vZG9ja2VyY2VudHJhbC5pdC5hdHQuY29tOjgwOTMvbmV4dXMvcm"
+ + "Vwb3NpdG9yeS9yYXdjZW50cmFsL2NvbS5hdHQuZGNhZS5jb250cm9sbGVyL3R5cGVfZmlsZXMvZG9ja2VycGx1Z2luLzIuNC4wK3QuMC44L25vZGUtdHlwZS55YW1sDQotICcxJzogaHR0cDovL2RvY2tlcmNlbnRyYWwuaXQuYXR0LmNvbTo4MDkzL25leHVzL3JlcG9zaXRvcnkvcmF3Y2VudHJhbC9jb20uYXR0"
+ + "LmRjYWUuY29udHJvbGxlci90eXBlX2ZpbGVzL2RtYWFwLzEuMi4wK3QuMC45L2RtYWFwLnlhbWwNCi0gJzInOiBodHRwOi8vZG9ja2VyY2VudHJhbC5pdC5hdHQuY29tOjgwOTMvbmV4dXMvcmVwb3NpdG9yeS9yYXdjZW50cmFsL2NvbS5hdHQuZGNhZS5jb250cm9sbGVyL3R5cGVfZmlsZXMvcmVsYXRpb25za"
+ + "GlwLzEuMC4wK3QuMC4xL3JlbGF0aW9uc2hpcC10eXBlcy55YW1sDQp0b3BvbG9neV90ZW1wbGF0ZToNCiAgaW5wdXRzOg0KICAgIGNvbm5lY3RlZF9icm9rZXJfZG5zX25hbWU6DQogICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIGRlZmF1bHQ6IGNkYXBfYnJva2VyDQogICAgZGVmYXVsdENhdGFsb2dzOg0KIC"
+ + "AgICAgdHlwZTogc3RyaW5nDQogICAgamFyX3VybDoNCiAgICAgIHR5cGU6IHN0cmluZw0KICAgIGpzb246DQogICAgICB0eXBlOiBzdHJpbmcNCiAgICBwaGFzZXMuc3VwcGxlbWVudC5waGFzZU5hbWU6DQogICAgICB0eXBlOiBzdHJpbmcNCiAgICBwaGFzZXMuc3VwcGxlbWVudC5zdHJlYW1QYXR0ZXJuOg0"
+ + "KICAgICAgdHlwZTogc3RyaW5nDQogICAgcGhhc2VzLnZlc19zdXBwbGVtZW50LnBoYXNlTmFtZToNCiAgICAgIHR5cGU6IHN0cmluZw0KICAgIHBoYXNlcy52ZXNfc3VwcGxlbWVudC5zdHJlYW1QYXR0ZXJuOg0KICAgICAgdHlwZTogc3RyaW5nDQogICAgcG9zdENvbmZpZzoNCiAgICAgIHR5cGU6IHN0cmlu"
+ + "Zw0KICAgIHNlcnZpY2VfY29tcG9uZW50X3R5cGU6DQogICAgICB0eXBlOiBzdHJpbmcNCiAgc3Vic3RpdHV0aW9uX21hcHBpbmdzOg0KICAgIG5vZGVfdHlwZTogdG9zY2EuZGNhZS5ub2Rlcy5jZGFwQXBwLnN1cHBsZW1lbnQNCiAgICBjYXBhYmlsaXRpZXM6DQogICAgICBzdHJlYW1fc3Vic2NyaWJlXzA6D"
+ + "QogICAgICAtIHN1cHBsZW1lbnQNCiAgICAgIC0gc3RyZWFtX3N1YnNjcmliZV8wDQogICAgcmVxdWlyZW1lbnRzOg0KICAgICAgaG9zdDoNCiAgICAgIC0gc3VwcGxlbWVudA0KICAgICAgLSBob3N0DQogICAgICBzdHJlYW1fcHVibGlzaF8wOg0KICAgICAgLSBzdXBwbGVtZW50DQogICAgICAtIHN0cmVhbV"
+ + "9wdWJsaXNoXzANCiAgbm9kZV90ZW1wbGF0ZXM6DQogICAgc3VwcGxlbWVudDoNCiAgICAgIHR5cGU6IGRjYWUubm9kZXMuTWljcm9TZXJ2aWNlLmNkYXANCiAgICAgIHByb3BlcnRpZXM6DQogICAgICAgIGFwcF9jb25maWc6DQogICAgICAgICAgZGVzY3JpcHRpb246IFN1cHBsZW1lbnQgTWljcm9zZXJ2aWN"
+ + "lDQogICAgICAgICAgZXZlbnRGYWN0b3J5OiAnJw0KICAgICAgICAgIG1vbml0b3JUaHJlYWRzOiB0cnVlDQogICAgICAgICAgbmFtZTogc3VwcGxlbWVudE1TDQogICAgICAgICAgcnVsZUtleVBhdHRlcm46IHZuZlR5cGVzLioNCiAgICAgICAgICBzdGFydE5vQ2hhbm5lbHM6IGZhbHNlDQogICAgICAgIGFw"
+ + "cF9wcmVmZXJlbmNlczoNCiAgICAgICAgICBkZWZhdWx0Q2F0YWxvZ3M6DQogICAgICAgICAgICBnZXRfaW5wdXQ6IGRlZmF1bHRDYXRhbG9ncw0KICAgICAgICAgIGRlZmF1bHRPYmplY3RzOiAnJw0KICAgICAgICAgIGRtYWFwQ29uc3VtZXJHcnA6IERDQUUtQ0RBUC1TVVBQTEVNRU5ULU1TDQogICAgICAgI"
+ + "CAganNvbjoNCiAgICAgICAgICAgIGdldF9pbnB1dDoganNvbg0KICAgICAgICAgIHBoYXNlcy5zdXBwbGVtZW50LnBoYXNlTmFtZToNCiAgICAgICAgICAgIGdldF9pbnB1dDogcGhhc2VzLnN1cHBsZW1lbnQucGhhc2VOYW1lDQogICAgICAgICAgcGhhc2VzLnN1cHBsZW1lbnQuc3RyZWFtUGF0dGVybjoNCi"
+ + "AgICAgICAgICAgIGdldF9pbnB1dDogcGhhc2VzLnN1cHBsZW1lbnQuc3RyZWFtUGF0dGVybg0KICAgICAgICAgIHBoYXNlcy52ZXNfc3VwcGxlbWVudC5waGFzZU5hbWU6DQogICAgICAgICAgICBnZXRfaW5wdXQ6IHBoYXNlcy52ZXNfc3VwcGxlbWVudC5waGFzZU5hbWUNCiAgICAgICAgICBwaGFzZXMudm"
+ + "VzX3N1cHBsZW1lbnQuc3RyZWFtUGF0dGVybjoNCiAgICAgICAgICAgIGdldF9pbnB1dDogcGhhc2VzLnZlc19zdXBwbGVtZW50LnN0cmVhbVBhdHRlcm4NCiAgICAgICAgICBwb3N0Q29uZmlnOg0KICAgICAgICAgICAgZ2V0X2lucHV0OiBwb3N0Q29uZmlnDQogICAgICAgIGFydGlmYWN0X25hbWU6IGRjYWU"
+ + "tZXZlbnQtcHJvYy1jZGFwLXN1cHBsZW1lbnQNCiAgICAgICAgYXJ0aWZhY3RfdmVyc2lvbjogMS4wLjE2DQogICAgICAgIGNvbm5lY3Rpb25zOg0KICAgICAgICAgIHN0cmVhbXNfcHVibGlzaGVzOiBbXQ0KICAgICAgICAgIHN0cmVhbXNfc3Vic2NyaWJlczogW10NCiAgICAgICAgamFyX3VybDogaHR0cDo"
+ + "vL21hdmVuY2VudHJhbC5pdC5hdHQuY29tOjgwODQvbmV4dXMvY29udGVudC9yZXBvc2l0b3JpZXMvYXR0LXJlcG9zaXRvcnktcmVsZWFzZXMvY29tL2F0dC9lY29tcC9kY2FlL2V2ZW50cHJvYy9kY2FlLWV2ZW50LXByb2MtY2RhcC1zdXBwbGVtZW50LzEuMC4xNi9kY2FlLWV2ZW50LXByb2MtY2RhcC1zdXB"
+ + "wbGVtZW50LTEuMC4xNi5qYXINCiAgICAgICAgbmFtZXNwYWNlOiBldmVudF9wcm9jX3N1cHBsZW1lbnQNCiAgICAgICAgcHJvZ3JhbXM6DQogICAgICAgIC0gcHJvZ3JhbV9pZDogc3VwcGxlbWVudE1TV29ya2VyDQogICAgICAgICAgcHJvZ3JhbV90eXBlOiB3b3JrZXJzDQogICAgICAgIHNlcnZpY2VfY29"
+ + "tcG9uZW50X3R5cGU6IGNkYXBfYXBwX3N1cHBsZW1lbnQNCiAgICAgICAgc3RyZWFtbmFtZTogaW5wdXRfc3RyZWFtDQogICAgICBpbnRlcmZhY2VzOg0KICAgICAgICBjbG91ZGlmeS5pbnRlcmZhY2VzLmxpZmVjeWNsZToNCiAgICAgICAgICB0eXBlOiB0b3NjYS5pbnRlcmZhY2VzLlJvb3QNCiAgICAgICA"
+ + "gICBjcmVhdGU6DQogICAgICAgICAgICBpbnB1dHM6DQogICAgICAgICAgICAgIGNvbm5lY3RlZF9icm9rZXJfZG5zX25hbWU6DQogICAgICAgICAgICAgICAgZ2V0X2lucHV0OiBjb25uZWN0ZWRfYnJva2VyX2Ruc19uYW1lDQo=\"}]}";
+
+ private String expectedOutput = "tosca_definitions_version: cloudify_dsl_1_3\nimports:\n- http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/dockerplugin/2.4.0+t.0.8/node-type.yaml\n"
+ + "- http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/dmaap/1.2.0+t.0.9/dmaap.yaml\n- http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/relationship/1.0.0+t.0.1/relationship-types.yaml\n"
+ + "inputs:\n sup.supplement_n.1525781976500.8_connected_broker_dns_name:\n"
+ + " type: string\n default: cdap_broker\nnode_templates:\n sup.supplement_n.1525781976500.8_supplement:\n type: dcae.nodes.MicroService.cdap\n properties:\n app_config:\n "
+ + "description: Supplement Microservice\n eventFactory: ''\n monitorThreads: true\n name: supplementMS\n ruleKeyPattern: vnfTypes.*\n startNoChannels: false\n app_preferences:\n"
+ + " defaultCatalogs: com.att.gfp.dcae.eventProcessor.Catalog,com.att.ecomp.dcae.eventproc.cdap.common.processors.Catalog\n defaultObjects: ''\n dmaapConsumerGrp: DCAE-CDAP-SUPPLEMENT-MS\n "
+ + "json: '{\"processing\":[{\"phase\":\"supplement\",\"filter\":{\"class\":\"OneOf\",\"field\":\"event.commonEventHeader.eventType\",\"values\":[\"vPCRF_Alarms\",\"vMoG_Alarms\",\"applicationVnf\",\"GuestOS_Alarms\",\"Control\"]},"
+ + "\"processors\":[{\"class\":\"LogText\",\"logLevel\":\"INFO\",\"logText\":\"Entering supplement Phase - FILTER parameter - ${event.commonEventHeader.eventType}\"},{\"class\":\"DateFormatter\","
+ + "\"value\":\"${event.commonEventHeader.startEpochMicrosec}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.firstDatetime\",\"toFormat\":\"EEE, dd MM yyyy HH:mm:ss zzz\","
+ + "\"toTz\":\"GMT\"},{\"class\":\"DateFormatter\",\"value\":\"${event.commonEventHeader.lastEpochMicrosec}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.lastDatetime\","
+ + "\"toFormat\":\"EEE, dd MM yyyy HH:mm:ss zzz\",\"toTz\":\"GMT\"},{\"class\":\"DateFormatter\",\"value\":\"%{now.ms}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\","
+ + "\"toField\":\"event.commonEventHeader.internalHeaderFields.collectorTimeStamp\",\"toFormat\":\"EEE, dd MM yyyy HH:mm:ss zzz\",\"toTz\":\"GMT\"},{\"class\":\"Set\",\"updates\":"
+ + "{\"event.commonEventHeader.internalHeaderFields.internalHeaderFieldsVersion\":\"9.9\",\"event.commonEventHeader.internalHeaderFields.eventTag\":\"${hp.tag}\"}}]},{\"phase\":\"supplement\",\"processors\":[{\"class\":\"LogEventPretty\","
+ + "\"title\":\"Supplement_Event_Parsed:\",\"logName\":\"com.att.gfp.dcae.eventProcessor.output\"},{\"class\":\"RunPhase\",\"phase\":\"supplement_publish\"}]},{\"phase\":\"ves_supplement\",\"filter\":{\"class\":\"OneOf\","
+ + "\"field\":\"event.commonEventHeader.eventType\",\"values\":[\"vIRC_Alarms\"]},\"processors\":[{\"class\":\"RunPhase\",\"phase\":\"supplement_publish\"}]}]}'\n phases.supplement.phaseName: supplement\n "
+ + "phases.supplement.streamPattern: .*supplement-in.*\n phases.ves_supplement.phaseName: ves_supplement\n phases.ves_supplement.streamPattern: .*sec-fault.*\n postConfig: '{\"phase\":\"supplement_publish\","
+ + "\"processors\":[{\"class\":\"EventProcessorMetric\",\"metric\":\"out.events\"},{\"class\":\"SendEvent\",\"channel\":\"24256-DCAE-SUPPLEMENT-EVENT-OUT-v1\"}]}'\n artifact_name: dcae-event-proc-cdap-supplement\n "
+ + "artifact_version: 1.0.16\n connections:\n streams_publishes: []\n streams_subscribes: []\n "
+ + "jar_url: http://mavencentral.it.att.com:8084/nexus/content/repositories/att-repository-releases/com/att/ecomp/dcae/eventproc/dcae-event-proc-cdap-supplement/1.0.16/dcae-event-proc-cdap-supplement-1.0.16.jar\n "
+ + "namespace: event_proc_supplement\n programs:\n - program_id: supplementMSWorker\n program_type: workers\n service_component_type: cdap_app_supplement\n streamname: input_stream\n interfaces:\n"
+ + " cloudify.interfaces.lifecycle:\n create:\n inputs:\n connected_broker_dns_name:\n get_input: sup.supplement_n.1525781976500.8_connected_broker_dns_name\n";
+
+ @Test
+ // already covered by HealthCheckTest since ToscaLab healthCheck is a component in the DCAE BE aggregated healthCheck
+ public void healthCheckSuccessTest() throws IOException{
+ RestResponse res = DcaeRestClient.getToscaLabHealthCheck();
+ Report.log(Status.INFO, "HealthCheck response: " + res.getResponse());
+ HealthResponse hc = gson.fromJson(res.getResponse(),HealthResponse.class);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ assertThat(hc.getHealthCheckComponent()).isEqualTo("TOSCA_LAB");
+ assertThat(hc.getHealthCheckStatus()).isEqualTo("UP");
+ assertThat(hc.getDescription()).isEqualTo("OK");
+ }
+
+ @Test
+ public void translateToBlueprintSuccessTest() throws IOException {
+ RestResponse res = DcaeRestClient.translateModelToBlueprint(validInput);
+ Report.log(Status.INFO, "Blueprint result: " + res.getResponse());
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ assertThat(res.getResponse()).isEqualTo(expectedOutput);
+ }
+
+ @Test
+ public void invalidInputFailureTest() throws IOException {
+ RestResponse res = DcaeRestClient.translateModelToBlueprint("{\"template\":\"aW52YWxpZCBUb3NjYQ==\"}");
+ Report.log(Status.INFO, "Blueprint result: " + res.getResponse());
+ assertThat(res.getStatusCode()).isEqualTo(500);
+ }
+}
diff --git a/src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionElementsControllerTests.java b/src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionElementsControllerTests.java
index 0193df1..00b3f31 100644
--- a/src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionElementsControllerTests.java
+++ b/src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionElementsControllerTests.java
@@ -1,27 +1,24 @@
package org.onap.dcae.ci.api.tests.composition;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.util.List;
-import java.util.stream.Collectors;
-
+import com.aventstack.extentreports.Status;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
import org.assertj.core.api.SoftAssertions;
import org.onap.dcae.ci.api.tests.DcaeRestBaseTest;
import org.onap.dcae.ci.entities.RestResponse;
-
-import org.onap.dcae.ci.entities.composition.rightMenu.element.Item;
-import org.onap.dcae.ci.entities.composition.rightMenu.elements.Element;
-import org.onap.dcae.ci.utilities.DcaeRestClient;
import org.onap.dcae.ci.report.Report;
+import org.onap.dcae.ci.utilities.DcaeRestClient;
+import org.onap.dcae.ci.utilities.DcaeTestConstants;
import org.onap.sdc.dcae.composition.model.Model;
-
-import org.testng.annotations.DataProvider;
+import org.onap.sdc.dcae.composition.model.Node;
+import org.onap.sdc.dcae.composition.restmodels.canvas.DcaeComponentCatalog;
+import org.onap.sdc.dcae.composition.restmodels.sdc.Resource;
import org.testng.annotations.Test;
-import com.aventstack.extentreports.Status;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-import com.google.gson.reflect.TypeToken;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
public class CompositionElementsControllerTests extends DcaeRestBaseTest {
@@ -30,57 +27,24 @@ public class CompositionElementsControllerTests extends DcaeRestBaseTest {
@Test
public void test_getAllElements() throws IOException{
Report.log(Status.INFO, "test_getAllElements start");
- RestResponse response = DcaeRestClient.getElements();
+ RestResponse response = DcaeRestClient.getCatalog();
Report.log(Status.INFO, "getElements response=%s", response);
- JsonElement getElementJsonResponse = getElementsJson(response);
- Type listType = new TypeToken<List<Element>>(){}.getType();
- List<Element> responseData = gson.fromJson(getElementJsonResponse, listType);
-
- SoftAssertions.assertSoftly(softly -> {
- softly.assertThat(response.getStatusCode()).as("response status").isEqualTo(200);
- softly.assertThat(getElementJsonResponse.toString()).isNotEmpty();
- softly.assertThat(responseData).extracting("itemId")
- .containsExactlyInAnyOrder("Policy","Utility","Microservice","Database","Collector","Analytics","Source");
- });
- }
-
-
- @DataProvider(name="item")
- public static Object[][] allElementsItems() throws IOException{
- RestResponse response = DcaeRestClient.getElements();
- JsonElement getElementJsonResponse = getElementsJson(response);
- Type listType = new TypeToken<List<Element>>(){}.getType();
- List<Element> responseData = gson.fromJson(getElementJsonResponse, listType);
- return responseData
- .stream()
- .map(x -> new Object[]{ x.getItemId() } )
- .collect(Collectors.toList())
- .toArray(new Object[responseData.size()][1]);
- }
-
- @Test(dataProvider ="item")
- public void test_getAllElementsByItemId(String itemName) throws IOException{
- Report.log(Status.INFO, "test_getAllElementsByItemId start");
- RestResponse response = DcaeRestClient.getItem(itemName);
- Report.log(Status.INFO, "getItem response=%s", response);
+ DcaeComponentCatalog getCatalogResponse = gson.fromJson(response.getResponse(), DcaeComponentCatalog.class);
SoftAssertions.assertSoftly(softly -> {
softly.assertThat(response.getStatusCode()).as("response status").isEqualTo(200);
+ softly.assertThat(getCatalogResponse.toString()).isNotEmpty();
+ softly.assertThat(Arrays.asList("Policy","Utility","Microservice","Database","Collector","Analytics","Source"))
+ .containsAll(getCatalogResponse.getElements().stream().map(DcaeComponentCatalog.SubCategoryFolder::getItemId).collect(Collectors.toList()));
});
}
@Test
public void test_getModelData() throws IOException{
Report.log(Status.INFO, "test_getModelData start");
- RestResponse responseGetElements = DcaeRestClient.getElements();
- JsonElement obj = getElementsJson(responseGetElements);
- String elementItemName = getElementItemName(obj);
-
- RestResponse responseElementsItem = DcaeRestClient.getItem(elementItemName);
- JsonElement elementsById = parser.parse(responseElementsItem.getResponse());
- JsonElement itemData = elementsById.getAsJsonObject().get("data").getAsJsonObject().get("element").getAsJsonObject().get("items");
-
- String elemId = getElementItemID(itemData);
+ DcaeComponentCatalog getCatalogResponse = gson.fromJson(DcaeRestClient.getCatalog().getResponse(), DcaeComponentCatalog.class);
+ List<Resource> itemsData = getCatalogResponse.getElements().stream().filter(p -> DcaeTestConstants.Composition.Microservice.equals(p.getItemId())).findAny().get().getItems();
+ String elemId = itemsData.stream().filter(p -> "map".equalsIgnoreCase(p.getName())).findAny().get().getUuid();
Report.log(Status.INFO, "test_getModelData start");
RestResponse response = DcaeRestClient.getItemModel(elemId);
@@ -97,21 +61,15 @@ public class CompositionElementsControllerTests extends DcaeRestBaseTest {
@Test
public void test_getTypeData() throws IOException{
Report.log(Status.INFO, "test_getTypeData start");
- RestResponse responseGetElements = DcaeRestClient.getElements();
- JsonElement obj = getElementsJson(responseGetElements);
- String elementItemName = getElementItemName(obj);
-
- RestResponse responseElementsItem = DcaeRestClient.getItem(elementItemName);
- JsonElement elementsById = parser.parse(responseElementsItem.getResponse());
- JsonElement itemData = elementsById.getAsJsonObject().get("data").getAsJsonObject().get("element").getAsJsonObject().get("items");
-
- String elemId = getElementItemID(itemData);
+ DcaeComponentCatalog getCatalogResponse = gson.fromJson(DcaeRestClient.getCatalog().getResponse(), DcaeComponentCatalog.class);
+ List<Resource> itemsData = getCatalogResponse.getElements().stream().filter(p -> DcaeTestConstants.Composition.Microservice.equals(p.getItemId())).findAny().get().getItems();
+ String elemId = itemsData.stream().filter(p -> "map".equalsIgnoreCase(p.getName())).findAny().get().getUuid();
RestResponse responseModel = DcaeRestClient.getItemModel(elemId);
JsonElement jsonRes = parser.parse(responseModel.getResponse());
JsonElement jsonModel = jsonRes.getAsJsonObject().get("data").getAsJsonObject().get("model").getAsJsonObject();
Model model = gson.fromJson(jsonModel, Model.class);
List<String> nodesDataTypes = model.getNodes().stream()
- .map(y -> y.getType())
+ .map(Node::getType)
.collect(Collectors.toList());
nodesDataTypes.forEach(z -> Report.log(Status.INFO, "All types inside model: " + z));
@@ -126,26 +84,14 @@ public class CompositionElementsControllerTests extends DcaeRestBaseTest {
});
}
- /**************** nagative ***************/
- @Test
- public void test_getAllElementsByNonExistItemId() throws IOException{
- Report.log(Status.INFO, "test_getAllElementsByNonExistItemId start");
- RestResponse response = DcaeRestClient.getItem("notExist");
- JsonElement elementsById = parser.parse(response.getResponse());
- JsonElement exception = elementsById.getAsJsonObject().get("error").getAsJsonObject().get("exception");
-
- SoftAssertions.assertSoftly(softly -> {
- softly.assertThat(response.getStatusCode()).as("response status").isEqualTo(200);
- softly.assertThat(exception.toString()).isNotEmpty();
- });
- }
+ /**************** negative ***************/
@Test
public void test_getErrorNonExistingModelData() throws IOException{
Report.log(Status.INFO, "test_getErrorNonExistingModelData start");
RestResponse response = DcaeRestClient.getItemModel("notExist");
- JsonElement elementsById = parser.parse(response.getResponse());
- JsonElement exception = elementsById.getAsJsonObject().get("error");
+ JsonElement error = parser.parse(response.getResponse());
+ JsonElement exception = error.getAsJsonObject().get("requestError");
SoftAssertions.assertSoftly(softly -> {
softly.assertThat(response.getStatusCode()).as("response status").isEqualTo(500);
@@ -157,44 +103,13 @@ public class CompositionElementsControllerTests extends DcaeRestBaseTest {
public void test_getErrorNonExistingItemType() throws IOException{
Report.log(Status.INFO, "test_getErrorNonExistingItemType start");
RestResponse response = DcaeRestClient.getItemType("notExistId","nonType");
- JsonElement elementsById = parser.parse(response.getResponse());
- JsonElement exception = elementsById.getAsJsonObject().get("error");
+ JsonElement error = parser.parse(response.getResponse());
+ JsonElement exception = error.getAsJsonObject().get("requestError");
SoftAssertions.assertSoftly(softly -> {
softly.assertThat(response.getStatusCode()).as("response status").isEqualTo(500);
softly.assertThat(exception.toString()).isNotEmpty();
});
}
-
- /******************** private ********************/
- private static JsonElement getElementsJson(RestResponse response) {
- JsonParser parser = new JsonParser();
- JsonElement element = parser.parse(response.getResponse());
- JsonElement obj = element.getAsJsonObject().get("data").getAsJsonObject().get("elements");
- return obj;
- }
-
- private String getElementItemName(JsonElement obj) {
- Type listType = new TypeToken<List<Element>>(){}.getType();
- List<Element> fromJson = gson.fromJson(obj, listType);
- List<Element> collect = fromJson.stream().filter(x->x.getName().equals("Microservice")).collect(Collectors.toList());
- Element element = collect.get(0);
- String elementItemName = element.getName();
- return elementItemName;
- }
-
- private String getElementItemID(JsonElement data) {
- Type listType = new TypeToken<List<Item>>(){}.getType();
- List<Item> elementsItemFoi = gson.fromJson(data, listType);
- Report.log(Status.INFO, "getElementItemID for map");
- List<Item> foiItemData = elementsItemFoi.stream().filter(x->x.getName().equalsIgnoreCase("map")).collect(Collectors.toList());
- if(foiItemData!=null && foiItemData.size()>0){
- Item item = foiItemData.get(0);
- String elemId = item.getItemId();
- return elemId;
- }else{
- Report.log(Status.ERROR, "getElementItemID for map failed. Does the CI environment has map component in it??");
- return null;
- }
- }
+
}
diff --git a/src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionMicroServicesApiTests.java b/src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionMicroServicesApiTests.java
index 9808400..6847b16 100644
--- a/src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionMicroServicesApiTests.java
+++ b/src/main/java/org/onap/dcae/ci/api/tests/composition/CompositionMicroServicesApiTests.java
@@ -27,30 +27,13 @@ public class CompositionMicroServicesApiTests extends DcaeRestBaseTest {
@Test
public void getAllElementsTest() throws IOException, ParseException{
Report.log(Status.INFO, "getAllElementsTest start");
- RestResponse services = DcaeRestClient.getElements();
+ RestResponse services = DcaeRestClient.getCatalog();
Report.log(Status.INFO, "getAllElementsTest response=%s", services);
assertThat(services.getStatusCode().intValue()).isEqualTo(200);
String response = services.getResponse();
JSONParser parser = new JSONParser();
JSONObject o = (JSONObject) parser.parse(response);
- JSONObject ele = (JSONObject) o.get("data");
- String arrString = ele.get("elements").toString();
- assertThat(arrString)
- .as("Check that elements not empty")
- .isNotEmpty();
- }
-
- @Test
- public void getMsElementsTest() throws IOException, ParseException{
- Report.log(Status.INFO, "getMsElementsTest start");
- RestResponse services = DcaeUtil.SdcElementsModelType.getMsElements();
- Report.log(Status.INFO, "getMsElementsTest response=%s", services);
- assertThat(services.getStatusCode().intValue()).isEqualTo(200);
- String response = services.getResponse();
- JSONParser parser = new JSONParser();
- JSONObject o = (JSONObject) parser.parse(response);
- JSONObject ele = (JSONObject) o.get("data");
- String arrString = ele.get("element").toString();
+ String arrString = o.get("elements").toString();
assertThat(arrString)
.as("Check that elements not empty")
.isNotEmpty();
diff --git a/src/main/java/org/onap/dcae/ci/api/tests/composition/SaveAndSubmitCompositionFullFlowTest.java b/src/main/java/org/onap/dcae/ci/api/tests/composition/SaveAndSubmitCompositionFullFlowTest.java
index 566a028..f2d7a24 100644
--- a/src/main/java/org/onap/dcae/ci/api/tests/composition/SaveAndSubmitCompositionFullFlowTest.java
+++ b/src/main/java/org/onap/dcae/ci/api/tests/composition/SaveAndSubmitCompositionFullFlowTest.java
@@ -10,6 +10,7 @@ import org.onap.dcae.ci.report.Report;
import org.onap.sdc.dcae.composition.restmodels.CreateMcResponse;
import org.onap.sdc.dcae.composition.restmodels.CreateVFCMTRequest;
import org.onap.sdc.dcae.composition.restmodels.MonitoringComponent;
+import org.onap.sdc.dcae.composition.restmodels.VfcmtData;
import org.onap.sdc.dcae.composition.restmodels.sdc.Resource;
import org.onap.sdc.dcae.composition.restmodels.sdc.ResourceDetailed;
import org.onap.sdc.dcae.composition.services.Service;
@@ -113,4 +114,63 @@ public class SaveAndSubmitCompositionFullFlowTest extends DcaeRestBaseTest {
}
+
+ @Test
+ public void certifiedMcCheckoutAndBindToServiceSuccessTest() throws IOException {
+
+ CreateVFCMTRequest request = new CreateVFCMTRequest();
+ // If you crashed here (below) it is because your environment has no Base Monitoring Templates
+ request.setTemplateUuid(baseTemplate.getUuid());
+ Service service = createServiceWithVFiAsSdcDesigner();
+ request.setVfiName(service.getResources().get(0).getResourceInstanceName());
+ request.setServiceUuid(service.getUuid());
+ DcaeRestClient.fillCreateMcRequestMandatoryFields(request);
+
+ RestResponse response = DcaeRestClient.createMc(gson.toJson(request));
+ assertThat(response.getStatusCode())
+ .as("status code")
+ .isEqualTo(200);
+
+ CreateMcResponse mcResponse = gson.fromJson(response.getResponse(), CreateMcResponse.class);
+ String initialUuid = mcResponse.getVfcmt().getUuid();
+
+ response = DcaeRestClient.getLatestMcUuid(request.getContextType(), request.getServiceUuid(), request.getVfiName(), initialUuid);
+ assertThat(response.getStatusCode())
+ .as("status code")
+ .isEqualTo(200);
+ VfcmtData getLatestUuidRes = gson.fromJson(response.getResponse(), VfcmtData.class);
+ assertThat(initialUuid).isEqualTo(getLatestUuidRes.getUuid());
+
+ response = DcaeRestClient.getServiceExternalReferences(service.getUuid(), service.getVersion());
+ assertThat(response.getStatusCode())
+ .as("status code")
+ .isEqualTo(200);
+ Report.log(Status.INFO, "Verify service vfi only references initial mc version");
+ Type typeToken = new TypeToken<Map<String, List<MonitoringComponent>>>(){}.getType();
+ Map<String, List<MonitoringComponent>> monitoringComponents = gson.fromJson(response.getResponse(), typeToken);
+ assertThat(monitoringComponents.get("monitoringComponents").size()).isEqualTo(1);
+ Report.log(Status.INFO, "About to submit the composition");
+ response = DcaeRestClient.submitComposition(request.getServiceUuid(), request.getVfiName(), initialUuid);
+ assertThat(response.getStatusCode())
+ .as("status code")
+ .isEqualTo(200);
+
+ response = DcaeRestClient.getLatestMcUuid(request.getContextType(), request.getServiceUuid(), request.getVfiName(), initialUuid);
+ assertThat(response.getStatusCode())
+ .as("status code")
+ .isEqualTo(200);
+ getLatestUuidRes = gson.fromJson(response.getResponse(), VfcmtData.class);
+ Report.log(Status.INFO, "Verify latest Mc uuid is not the initial one");
+ assertThat(initialUuid).isNotEqualTo(getLatestUuidRes.getUuid());
+ response = DcaeRestClient.getServiceExternalReferences(service.getUuid(), service.getVersion());
+ assertThat(response.getStatusCode())
+ .as("status code")
+ .isEqualTo(200);
+ Report.log(Status.INFO, "Verify service vfi has references to both mc versions");
+
+ monitoringComponents = gson.fromJson(response.getResponse(), typeToken);
+ assertThat(monitoringComponents.get("monitoringComponents").size()).isEqualTo(2);
+
+ }
+
}
diff --git a/src/main/java/org/onap/dcae/ci/api/tests/configuration/ConfigurationControllerApiTest.java b/src/main/java/org/onap/dcae/ci/api/tests/configuration/ConfigurationControllerApiTest.java
new file mode 100644
index 0000000..62e7e6b
--- /dev/null
+++ b/src/main/java/org/onap/dcae/ci/api/tests/configuration/ConfigurationControllerApiTest.java
@@ -0,0 +1,43 @@
+package org.onap.dcae.ci.api.tests.configuration;
+
+import com.aventstack.extentreports.Status;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import org.onap.dcae.ci.api.tests.DcaeRestBaseTest;
+import org.onap.dcae.ci.entities.RestResponse;
+import org.onap.dcae.ci.report.Report;
+import org.onap.dcae.ci.utilities.DcaeRestClient;
+import org.testng.annotations.Test;
+
+import java.io.IOException;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ConfigurationControllerApiTest extends DcaeRestBaseTest {
+
+ @Test
+ public void getFlowTypesAndConfiguredPhases() throws IOException {
+ String entryPhase = "entryPhase";
+ String publishPhase = "publishPhase";
+ RestResponse response = DcaeRestClient.getConfiguredFlowTypes();
+ Report.log(Status.INFO, "get flowTypes response=%s", response);
+ assertThat(response.getStatusCode()).isEqualTo(200);
+ String flowType = gson.fromJson(response.getResponse(),JsonObject.class).get("flowTypes").getAsJsonArray().get(0).getAsString();
+ response = DcaeRestClient.getConfiguredPhasesByFlowType(flowType);
+ Report.log(Status.INFO, "get phases by flowType %s response=%s", flowType, response);
+ assertThat(response.getStatusCode()).isEqualTo(200);
+ JsonObject phases = gson.fromJson(response.getResponse(), JsonObject.class);
+ assertThat(phases.get(entryPhase)).isNotNull();
+ assertThat(phases.get(publishPhase)).isNotNull();
+ assertThat(phases.get(entryPhase).getAsString()).isNotEqualTo("");
+ assertThat(phases.get(publishPhase).getAsString()).isNotEqualTo("");
+ response = DcaeRestClient.getConfiguredPhasesByFlowType("noSuchFlowType");
+ Report.log(Status.INFO, "get phases by none existing flowType response=%s", response);
+ assertThat(response.getStatusCode()).isEqualTo(200);
+ phases = gson.fromJson(response.getResponse(), JsonObject.class);
+ assertThat(phases.get(entryPhase)).isNotNull();
+ assertThat(phases.get(publishPhase)).isNotNull();
+ assertThat(phases.get(entryPhase).getAsString()).isEqualTo("");
+ assertThat(phases.get(publishPhase).getAsString()).isEqualTo("");
+ }
+}
diff --git a/src/main/java/org/onap/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java b/src/main/java/org/onap/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java
index 45de16a..8d91ce7 100644
--- a/src/main/java/org/onap/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java
+++ b/src/main/java/org/onap/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java
@@ -1,353 +1,517 @@
package org.onap.dcae.ci.api.tests.ruleEditor;
-
+import com.aventstack.extentreports.Status;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import org.assertj.core.api.SoftAssertions;
import org.onap.dcae.ci.api.tests.DcaeRestBaseTest;
import org.onap.dcae.ci.entities.RestResponse;
import org.onap.dcae.ci.entities.rule_editor.SaveRuleError;
-import org.onap.dcae.ci.utilities.DcaeRestClient;
import org.onap.dcae.ci.report.Report;
-import org.onap.sdc.dcae.composition.services.Artifact;
-import org.onap.sdc.dcae.composition.vfcmt.Vfcmt;
-import com.aventstack.extentreports.Status;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.JsonObject;
+import org.onap.dcae.ci.utilities.DcaeRestClient;
import org.onap.sdc.dcae.composition.restmodels.ruleeditor.MappingRules;
import org.onap.sdc.dcae.composition.restmodels.ruleeditor.Rule;
-
+import org.onap.sdc.dcae.composition.restmodels.ruleeditor.TranslateRequest;
+import org.onap.sdc.dcae.composition.services.Artifact;
+import org.onap.sdc.dcae.composition.util.DcaeBeConstants;
+import org.onap.sdc.dcae.composition.vfcmt.Vfcmt;
import org.testng.annotations.Test;
-import org.assertj.core.api.SoftAssertions;
+import java.util.Arrays;
+import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.testng.Assert.fail;
-import java.util.List;
-
public class RuleEditorControllerTest extends DcaeRestBaseTest {
- private String ruleRequestBody =
- "{version:4.1,eventType:syslogFields,description:newRule,actions:[{from:{value:fromField,regex:\"\"},target:event.commonEventHeader.target,id:id,actionType:copy},"
- + "{actionType:concat,from:{values:[{value:concat1},{value:_concat2}]},target:concatTargetField},{actionType:copy,from:{value:extractFromHere,regex:\"([^:]*):.*\"},target:regexTargetField},"
- + "{actionType:\"Log Text\",logText:{text:\"some text\",level:WARN}},{actionType:CLear,from:{values:[{value:first_input},{value:second_input}]}},"
- + "{actionType:map,from:{value:fromField},target:mapTargetField,map:{values:[{key:sourceVal1,value:targetVal1},{key:sourceVal2,value:targetVal2}],haveDefault:true,default:'\"\"'}},"
- + "{actionType:\"Date Formatter\",id:98908,from:{value:\"${dateFormatterFrom}\"},target:dateFormatterTarget,dateFormatter:{toTimezone:UVW,fromTimezone:XYZ,fromFormat:inputFormat,toFormat:outputFormat}},"
- + "{actionType:\"Log Event\",id:465456,logEvent:{title:\"some log title\"}},{actionType:\"Replace Text\",from:{value:fromField},replaceText:{find:findText,replace:replacement}}],"
- + "condition:{left:\"${leftOperand}\",operator:contains,right:[rightOperand1,rightOperand2]}}";
+ private String notifyOid = ".1.3.6.1.4.1.26878.200.2";
+ private String ruleRequestBody =
+ "{version:4.1,eventType:syslogFields,notifyId:.1.3.6.1.4.1.26878.200.2,description:newRule,actions:[{from:{state:closed,value:fromField,regex:\"\"},target:event.commonEventHeader.target,id:id,actionType:copy},"
+ + "{actionType:concat,id:id1,from:{state:closed,values:[{value:concat1},{value:_concat2}]},target:concatTargetField},{actionType:copy,id:id2,from:{state:open,value:extractFromHere,regex:\"([^:]*):.*\"},target:regexTargetField},"
+ + "{actionType:\"Log Text\",id:id3,logText:{text:\"some text\",level:WARN}},{actionType:CLear,id:id4,from:{state:closed,values:[{value:first_input},{value:second_input}]}},"
+ + "{actionType:map,id:id5,from:{state:closed,value:fromField},target:mapTargetField,map:{values:[{key:sourceVal1,value:targetVal1},{key:sourceVal2,value:targetVal2}],haveDefault:true,default:'\"\"'}},"
+ + "{actionType:\"Date Formatter\",id:98908,from:{state:closed,value:\"${dateFormatterFrom}\"},target:dateFormatterTarget,dateFormatter:{toTimezone:UVW,fromTimezone:XYZ,fromFormat:inputFormat,toFormat:outputFormat}},"
+ + "{actionType:\"Log Event\",id:465456,logEvent:{title:\"some log title\"}},{actionType:\"Replace Text\",id:id6,from:{state:closed,value:fromField},replaceText:{find:findText,replace:replacement}},"
+ + "{actionType:\"Clear NSF\",id:id6,from:{state:closed,values:[{value:single_input}]}},{actionType:\"hp metric\",id:7776,selectedHpMetric:xxxxxxx},"
+ + "{actionType:\"string Transform\",id:76,target:targetField,stringTransform:{startValue:source,targetCase:same,isTrimString:true}},"
+ + "{actionType:\"Topology Search\",id:76,search:{searchField:sourceToSearch,searchValue:\"${whatever}\",radio:'',searchFilter:{left:leftO,right:[rightO],operator:OneOf},enrich:{fields:[{value:e_field1},{value:e_field2}],prefix:e_prefix}}},"
+ + "{actionType:\"Topology Search\",id:746,search:{searchField:sourceToSearch,searchValue:\"${whatever}\",radio:updates,enrich:{fields:[],prefix:''},updates:[{key:firstKey,value:firstValue},{key:secondKey,value:secondValue}]}}],"
+ + "condition:{id:idc,level:0,name:elvis,left:\"${leftOperand}\",operator:contains,right:[rightOperand1,rightOperand2]}}";
- @Test
- public void saveNewMappingRulesArtifactSuccessTest() throws Exception {
- Report.log(Status.INFO, "test start");
- Vfcmt vfcmt = createVfcmt();
- RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "n.1.map", "param1", ruleRequestBody);
- JsonObject jsonRes = gson.fromJson(res.getResponse(), JsonObject.class);
- assertThat(jsonRes.get("version").getAsString()).isEqualTo("4.1");
- assertThat(jsonRes.get("eventType").getAsString()).isEqualTo("syslogFields");
- assertThat(jsonRes.get("uid")).isNotNull();
- String expectedArtifactName = "map_n.1.map_param1_MappingRules.json";
- Artifact savedArtifact = fetchVfcmtArtifactMetadataByName(vfcmt.getUuid(), expectedArtifactName);
- assertThat(savedArtifact).isNotNull();
- }
+ @Test
+ public void saveNewMappingRulesArtifactSuccessTest() throws Exception {
+ Report.log(Status.INFO, "test start");
+ Vfcmt vfcmt = createVfcmt();
+ RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "n.1.map", "param1", ruleRequestBody);
+ JsonObject jsonRes = gson.fromJson(res.getResponse(), JsonObject.class);
+ assertThat(jsonRes.get("version").getAsString()).isEqualTo("4.1");
+ assertThat(jsonRes.get("eventType").getAsString()).isEqualTo("syslogFields");
+ assertThat(jsonRes.get("uid")).isNotNull();
+ String expectedArtifactName = "map_n.1.map_param1_MappingRules.json";
+ Artifact savedArtifact = fetchVfcmtArtifactMetadataByName(vfcmt.getUuid(), expectedArtifactName);
+ assertThat(savedArtifact).isNotNull();
+ }
+
+ @Test
+ public void translateMappingRuleWithAllActionTypesSuccessTest() throws Exception {
+ String expectedTranslation = "{\"processing\":[{\"phase\":\"foi_map\",\"processors\":[{\"phase\":\"%s\",\"class\":\"RunPhase\"}]},"
+ + "{\"phase\":\"%s\",\"filter\":{\"filters\":[{\"string\":\"${leftOperand}\",\"value\":\"rightOperand1\",\"class\":\"Contains\"},"
+ + "{\"string\":\"${leftOperand}\",\"value\":\"rightOperand2\",\"class\":\"Contains\"}],\"class\":\"Or\"},"
+ + "\"processors\":[{\"updates\":{\"event.commonEventHeader.target\":\"fromField\",\"concatTargetField\":\"concat1_concat2\"},\"class\":\"Set\"},"
+ + "{\"regex\":\"([^:]*):.*\",\"field\":\"regexTargetField\",\"value\":\"extractFromHere\",\"class\":\"ExtractText\"},"
+ + "{\"logLevel\":\"WARN\",\"logText\":\"some text\",\"class\":\"LogText\"},{\"fields\":[\"first_input\",\"second_input\"],\"class\":\"Clear\"},"
+ + "{\"map\":{\"sourceVal1\":\"targetVal1\",\"sourceVal2\":\"targetVal2\"},\"field\":\"fromField\",\"toField\":\"mapTargetField\",\"default\":\"\",\"class\":\"MapAlarmValues\"},"
+ + "{\"fromFormat\":\"inputFormat\",\"fromTz\":\"XYZ\",\"toField\":\"dateFormatterTarget\",\"toFormat\":\"outputFormat\",\"toTz\":\"UVW\",\"value\":\"${dateFormatterFrom}\",\"class\":\"DateFormatter\"},"
+ + "{\"title\":\"some log title\",\"class\":\"LogEvent\"},{\"field\":\"fromField\",\"find\":\"findText\",\"replace\":\"replacement\",\"class\":\"ReplaceText\"},{\"reservedFields\":[\"single_input\"],\"class\":\"ClearNoneStandardFields\"},"
+ + "{\"updates\":{\"parserType\":\"xxxxxxx\"},\"class\":\"Set\"},{\"targetCase\":\"same\",\"trim\":\"true\",\"toField\":\"targetField\",\"class\":\"StringTransform\"},"
+ + "{\"searchField\":\"sourceToSearch\",\"searchValue\":\"${whatever}\",\"searchFilter\":{\"field\":\"leftO\",\"values\":[\"rightO\"],\"class\":\"OneOf\"},\"enrichFields\":[\"e_field1\",\"e_field2\"],\"enrichPrefix\":\"e_prefix\",\"class\":\"TopoSearch\"},"
+ + "{\"searchField\":\"sourceToSearch\",\"searchValue\":\"${whatever}\",\"updates\":{\"firstKey\":\"firstValue\",\"secondKey\":\"secondValue\",\"isEnriched\":true},\"class\":\"TopoSearch\"},{\"phase\":\"map_publish\",\"class\":\"RunPhase\"}]}]}";
+ Vfcmt vfcmt = createVfcmt();
+ String name = vfcmt.getName();
+ saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
+ TranslateRequest request = new TranslateRequest(vfcmt.getUuid(),"map", "map", "param1", null);
+ request.setPublishPhase("map_publish");
+ request.setEntryPhase("foi_map");
+ RestResponse res = DcaeRestClient.translateRules(gson.toJson(request));
+ Report.log(Status.INFO, "translateRules response= "+res);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ assertThat(res.getResponse()).isEqualTo(String.format(expectedTranslation, name, name, name));
+ }
+
+ @Test
+ public void translateSnmpMappingRuleWithAllActionTypesAndNotifyOidSuccessTest() throws Exception {
+ String expectedTranslation = "{\"processing\":[{\"phase\":\"snmp_map\",\"filter\":{\"string\":\"${notify OID}\",\"value\":\".1.3.6.1.4.1.26878.200.2\",\"class\":\"StartsWith\"},"
+ + "\"processors\":[{\"array\":\"varbinds\",\"datacolumn\":\"varbind_value\",\"keycolumn\":\"varbind_oid\",\"class\":\"SnmpConvertor\"},"
+ + "{\"phase\":\"%s\",\"class\":\"RunPhase\"}]},{\"phase\":\"%s\",\"filter\":{\"filters\":[{\"string\":\"${leftOperand}\",\"value\":\"rightOperand1\",\"class\":\"Contains\"},"
+ + "{\"string\":\"${leftOperand}\",\"value\":\"rightOperand2\",\"class\":\"Contains\"}],\"class\":\"Or\"},"
+ + "\"processors\":[{\"updates\":{\"event.commonEventHeader.target\":\"fromField\",\"concatTargetField\":\"concat1_concat2\"},\"class\":\"Set\"},"
+ + "{\"regex\":\"([^:]*):.*\",\"field\":\"regexTargetField\",\"value\":\"extractFromHere\",\"class\":\"ExtractText\"},"
+ + "{\"logLevel\":\"WARN\",\"logText\":\"some text\",\"class\":\"LogText\"},{\"fields\":[\"first_input\",\"second_input\"],\"class\":\"Clear\"},"
+ + "{\"map\":{\"sourceVal1\":\"targetVal1\",\"sourceVal2\":\"targetVal2\"},\"field\":\"fromField\",\"toField\":\"mapTargetField\",\"default\":\"\",\"class\":\"MapAlarmValues\"},"
+ + "{\"fromFormat\":\"inputFormat\",\"fromTz\":\"XYZ\",\"toField\":\"dateFormatterTarget\",\"toFormat\":\"outputFormat\",\"toTz\":\"UVW\",\"value\":\"${dateFormatterFrom}\",\"class\":\"DateFormatter\"},"
+ + "{\"title\":\"some log title\",\"class\":\"LogEvent\"},{\"field\":\"fromField\",\"find\":\"findText\",\"replace\":\"replacement\",\"class\":\"ReplaceText\"},{\"reservedFields\":[\"single_input\"],\"class\":\"ClearNoneStandardFields\"},"
+ + "{\"updates\":{\"parserType\":\"xxxxxxx\"},\"class\":\"Set\"},{\"targetCase\":\"same\",\"trim\":\"true\",\"toField\":\"targetField\",\"class\":\"StringTransform\"},"
+ + "{\"searchField\":\"sourceToSearch\",\"searchValue\":\"${whatever}\",\"searchFilter\":{\"field\":\"leftO\",\"values\":[\"rightO\"],\"class\":\"OneOf\"},\"enrichFields\":[\"e_field1\",\"e_field2\"],\"enrichPrefix\":\"e_prefix\",\"class\":\"TopoSearch\"},"
+ + "{\"searchField\":\"sourceToSearch\",\"searchValue\":\"${whatever}\",\"updates\":{\"firstKey\":\"firstValue\",\"secondKey\":\"secondValue\",\"isEnriched\":true},\"class\":\"TopoSearch\"},{\"phase\":\"snmp_publish\",\"class\":\"RunPhase\"}]}]}";
+ Vfcmt vfcmt = createVfcmt();
+ String name = vfcmt.getName();
+ saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
+ TranslateRequest request = new TranslateRequest(vfcmt.getUuid(), "map", "map", "param1", notifyOid);
+ request.setEntryPhase("snmp_map");
+ request.setPublishPhase("snmp_publish");
+ RestResponse res = DcaeRestClient.translateRules(gson.toJson(request));
+ Report.log(Status.INFO, "translateRules response= "+res);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ assertThat(res.getResponse()).isEqualTo(String.format(expectedTranslation, name, name, name));
+ }
@Test
- public void translateSnmpMappingRuleWithAllActionTypesSuccessTest() throws Exception {
- String expectedTranslation = "{\"processing\":[{\"phase\":\"snmp_map\",\"processors\":[{\"array\":\"varbinds\",\"datacolumn\":\"varbind_value\",\"keycolumn\":\"varbind_oid\",\"class\":\"SnmpConvertor\"},"
- + "{\"phase\":\"%s\",\"class\":\"RunPhase\"}]},{\"phase\":\"%s\",\"filter\":{\"filters\":[{\"string\":\"${leftOperand}\",\"value\":\"rightOperand1\",\"class\":\"Contains\"},"
+ public void saveAndTranslateMappingRuleWithUserDefinedPhasesSuccessTest() throws Exception {
+ String expectedTranslation = "{\"processing\":[{\"phase\":\"foi_map\",\"processors\":[{\"phase\":\"phase_1\",\"class\":\"RunPhase\"}]},"
+ + "{\"phase\":\"phase_1\",\"filter\":{\"filters\":[{\"string\":\"${leftOperand}\",\"value\":\"rightOperand1\",\"class\":\"Contains\"},"
+ "{\"string\":\"${leftOperand}\",\"value\":\"rightOperand2\",\"class\":\"Contains\"}],\"class\":\"Or\"},"
+ "\"processors\":[{\"updates\":{\"event.commonEventHeader.target\":\"fromField\",\"concatTargetField\":\"concat1_concat2\"},\"class\":\"Set\"},"
+ "{\"regex\":\"([^:]*):.*\",\"field\":\"regexTargetField\",\"value\":\"extractFromHere\",\"class\":\"ExtractText\"},"
+ "{\"logLevel\":\"WARN\",\"logText\":\"some text\",\"class\":\"LogText\"},{\"fields\":[\"first_input\",\"second_input\"],\"class\":\"Clear\"},"
+ "{\"map\":{\"sourceVal1\":\"targetVal1\",\"sourceVal2\":\"targetVal2\"},\"field\":\"fromField\",\"toField\":\"mapTargetField\",\"default\":\"\",\"class\":\"MapAlarmValues\"},"
+ "{\"fromFormat\":\"inputFormat\",\"fromTz\":\"XYZ\",\"toField\":\"dateFormatterTarget\",\"toFormat\":\"outputFormat\",\"toTz\":\"UVW\",\"value\":\"${dateFormatterFrom}\",\"class\":\"DateFormatter\"},"
- + "{\"title\":\"some log title\",\"class\":\"LogEvent\"},{\"field\":\"fromField\",\"find\":\"findText\",\"replace\":\"replacement\",\"class\":\"ReplaceText\"}]},"
- + "{\"phase\":\"%s\",\"processors\":[{\"phase\":\"snmp_publish\",\"class\":\"RunPhase\"}]}]}";
+ + "{\"title\":\"some log title\",\"class\":\"LogEvent\"},{\"field\":\"fromField\",\"find\":\"findText\",\"replace\":\"replacement\",\"class\":\"ReplaceText\"},{\"reservedFields\":[\"single_input\"],\"class\":\"ClearNoneStandardFields\"},"
+ + "{\"updates\":{\"parserType\":\"xxxxxxx\"},\"class\":\"Set\"},{\"targetCase\":\"same\",\"trim\":\"true\",\"toField\":\"targetField\",\"class\":\"StringTransform\"},"
+ + "{\"searchField\":\"sourceToSearch\",\"searchValue\":\"${whatever}\",\"searchFilter\":{\"field\":\"leftO\",\"values\":[\"rightO\"],\"class\":\"OneOf\"},\"enrichFields\":[\"e_field1\",\"e_field2\"],\"enrichPrefix\":\"e_prefix\",\"class\":\"TopoSearch\"},"
+ + "{\"searchField\":\"sourceToSearch\",\"searchValue\":\"${whatever}\",\"updates\":{\"firstKey\":\"firstValue\",\"secondKey\":\"secondValue\",\"isEnriched\":true},\"class\":\"TopoSearch\"},"
+ + "{\"phase\":\"phase_2\",\"class\":\"RunPhase\"}]},{\"phase\":\"phase_2\",\"processors\":[{\"targetCase\":\"same\",\"trim\":\"true\",\"toField\":\"targetField\",\"class\":\"StringTransform\"},"
+ + "{\"searchField\":\"sourceToSearch\",\"searchValue\":\"${whatever}\",\"searchFilter\":{\"field\":\"leftO\",\"values\":[\"rightO\"],\"class\":\"OneOf\"},\"enrichFields\":[\"e_field1\",\"e_field2\"],"
+ + "\"enrichPrefix\":\"e_prefix\",\"class\":\"TopoSearch\"}]},{\"phase\":\"phase_1\",\"processors\":[{\"reservedFields\":[\"single_input\"],\"class\":\"ClearNoneStandardFields\"},{\"updates\":{\"parserType\":\"xxxxxx\"},\"class\":\"Set\"},"
+ + "{\"phase\":\"map_publish\",\"class\":\"RunPhase\"}]}]}";
Vfcmt vfcmt = createVfcmt();
- String name = vfcmt.getName();
- saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
- RestResponse res = DcaeRestClient.translateRules(vfcmt.getUuid(),"map", "map", "param1", "SNMP MSE");
+ Rule firstRulePhase1 = gson.fromJson(ruleRequestBody, Rule.class);
+ firstRulePhase1.setPhase("phase_1");
+ firstRulePhase1.setGroupId("group_1");
+ saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", firstRulePhase1.toJson());
+ String secondRulePhase2 = "{groupId:group_2,phase:phase_2,description:newRule,actions:[{actionType:\"string Transform\",id:706,target:targetField,stringTransform:{startValue:source,targetCase:same,isTrimString:true}},"
+ + "{actionType:\"Topology Search\",id:72336,search:{searchField:sourceToSearch,searchValue:\"${whatever}\",radio:'',searchFilter:{left:leftO,right:[rightO],operator:OneOf},enrich:{fields:[{value:e_field1},{value:e_field2}],prefix:e_prefix}}}]}";
+ RestResponse res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", secondRulePhase2);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ String thirdRulePhase1 = "{groupId:group_3,phase:phase_1,description:newRule,actions:[{actionType:\"Clear NSF\",id:id86,from:{state:closed,values:[{value:single_input}]}},{actionType:\"hp metric\",id:7788876,selectedHpMetric:xxxxxx}]}";
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", thirdRulePhase1);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ TranslateRequest request = new TranslateRequest(vfcmt.getUuid(),"map", "map", "param1", null);
+ request.setPublishPhase("map_publish");
+ request.setEntryPhase("foi_map");
+ res = DcaeRestClient.translateRules(gson.toJson(request));
Report.log(Status.INFO, "translateRules response= "+res);
assertThat(res.getStatusCode()).isEqualTo(200);
- assertThat(res.getResponse()).isEqualTo(String.format(expectedTranslation, name, name, name));
+ assertThat(res.getResponse()).isEqualTo(expectedTranslation);
}
- @Test
- public void addNewRuleToExistingArtifact() throws Exception {
- Vfcmt vfcmt = createVfcmt();
- String nid = "n.565663636.0";
- RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", nid, "param1", ruleRequestBody);
- Rule rule1 = gson.fromJson(res.getResponse(), Rule.class);
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", nid, "param1", ruleRequestBody);
- Report.log(Status.INFO, "saveRule response= "+res);
- Rule rule2 = gson.fromJson(res.getResponse(), Rule.class);
- RestResponse responseGetRules = DcaeRestClient.getRules(vfcmt.getUuid(),"map", nid, "param1");
- Report.log(Status.INFO, "getRules response= "+responseGetRules);
- MappingRules rules = gson.fromJson(responseGetRules.getResponse(), MappingRules.class);
- Report.log(Status.INFO, "MappingRules="+responseGetRules.getResponse());
- assertThat(rules.getRules()).hasSize(2);
- assertThat(rules.getRules().keySet()).containsOnly(rule1.getUid(), rule2.getUid());
- }
+ @Test
+ public void addNewRuleToExistingArtifactAndClearNotifyOid() throws Exception {
+ Vfcmt vfcmt = createVfcmt();
+ String nid = "n.565663636.0";
+ RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", nid, "param1", ruleRequestBody);
+ Rule rule1 = gson.fromJson(res.getResponse(), Rule.class);
+ RestResponse responseGetRules = DcaeRestClient.getRules(vfcmt.getUuid(),"map", nid, "param1");
+ Report.log(Status.INFO, "getRules response= "+responseGetRules);
+ MappingRules rules = gson.fromJson(responseGetRules.getResponse(), MappingRules.class);
+ assertThat(rules.getNotifyId()).isEqualTo(notifyOid);
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", nid, "param1", ruleRequestBody.replace(notifyOid,"\"\""));
+ Report.log(Status.INFO, "saveRule response= "+res);
+ Rule rule2 = gson.fromJson(res.getResponse(), Rule.class);
+ responseGetRules = DcaeRestClient.getRules(vfcmt.getUuid(),"map", nid, "param1");
+ Report.log(Status.INFO, "getRules response= "+responseGetRules);
+ rules = gson.fromJson(responseGetRules.getResponse(), MappingRules.class);
+ Report.log(Status.INFO, "MappingRules="+responseGetRules.getResponse());
+ assertThat(rules.getNotifyId()).isEqualTo("");
+ assertThat(rules.getRules()).hasSize(2);
+ assertThat(rules.getRules().keySet()).containsOnly(rule1.getUid(), rule2.getUid());
+ }
- @Test
- public void editExistingRuleInArtifact() throws Exception{
- Vfcmt vfcmt = createVfcmt();
- String updated = "This is an update";
- RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
- Rule rule = gson.fromJson(res.getResponse(), Rule.class);
- Report.log(Status.INFO, "save rule response=%s", res.getResponse());
- res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
- Report.log(Status.INFO, "getRules3 response= "+res);
- MappingRules rules = gson.fromJson(res.getResponse(), MappingRules.class);
- Report.log(Status.INFO, "MappingRules1="+res.getResponse());
- assertThat(rules.getRules().get(rule.getUid()).getDescription()).isEqualTo("newRule");
- assertThat(rules.getRules().keySet()).containsOnly(rule.getUid());
- rule.setDescription(updated);
- DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", rule.toJson());
- Report.log(Status.INFO, "saveRule response= "+res);
- res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
- Report.log(Status.INFO, "getRules2 response= "+res);
- rules = gson.fromJson(res.getResponse(), MappingRules.class);
- Report.log(Status.INFO, "MappingRules2="+res.getResponse());
- assertThat(rules.getRules()).hasSize(1);
- assertThat(rules.getRules().get(rule.getUid()).getDescription()).isEqualTo(updated);
- }
+ @Test
+ public void editExistingRuleInArtifact() throws Exception{
+ Vfcmt vfcmt = createVfcmt();
+ String updated = "This is an update";
+ RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
+ Rule rule = gson.fromJson(res.getResponse(), Rule.class);
+ Report.log(Status.INFO, "save rule response=%s", res.getResponse());
+ res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
+ Report.log(Status.INFO, "getRules3 response= "+res);
+ MappingRules rules = gson.fromJson(res.getResponse(), MappingRules.class);
+ Report.log(Status.INFO, "MappingRules1="+res.getResponse());
+ assertThat(rules.getRules().get(rule.getUid()).getDescription()).isEqualTo("newRule");
+ assertThat(rules.getRules().keySet()).containsOnly(rule.getUid());
+ rule.setDescription(updated);
+ DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", rule.toJson());
+ Report.log(Status.INFO, "saveRule response= "+res);
+ res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
+ Report.log(Status.INFO, "getRules2 response= "+res);
+ rules = gson.fromJson(res.getResponse(), MappingRules.class);
+ Report.log(Status.INFO, "MappingRules2="+res.getResponse());
+ assertThat(rules.getRules()).hasSize(1);
+ assertThat(rules.getRules().get(rule.getUid()).getDescription()).isEqualTo(updated);
+ }
- @Test
- public void editRuleInArtifactNoSuchIdErrorTest() throws Exception {
- String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6036\",\"text\":\"Error - Failed to save rule. Internal persistence error\",\"variables\":[],\"formattedErrorMessage\":\"Error - Failed to save rule. Internal persistence error\"}},\"notes\":\"\"}";
- Vfcmt vfcmt = createVfcmt();
- RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
- Rule rule = gson.fromJson(res.getResponse(), Rule.class);
- Report.log(Status.INFO, "rule="+rule);
- rule.setUid("NoSuchUid");
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", rule.toJson());
- Report.log(Status.INFO, "saveRule response= "+res);
- assertThat(res.getStatusCode()).isEqualTo(409);
- assertThat(res.getResponse()).isEqualTo(expectedError);
- }
+ @Test
+ public void editRuleInArtifactNoSuchIdErrorTest() throws Exception {
+ String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6036\",\"text\":\"Error - Failed to save rule. Internal persistence error\",\"variables\":[],\"formattedErrorMessage\":\"Error - Failed to save rule. Internal persistence error\"}},\"notes\":\"\"}";
+ Vfcmt vfcmt = createVfcmt();
+ RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
+ Rule rule = gson.fromJson(res.getResponse(), Rule.class);
+ Report.log(Status.INFO, "rule="+rule);
+ rule.setUid("NoSuchUid");
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", rule.toJson());
+ Report.log(Status.INFO, "saveRule response= "+res);
+ assertThat(res.getStatusCode()).isEqualTo(409);
+ assertThat(res.getResponse()).isEqualTo(expectedError);
+ }
- @Test
- public void getAllRules() throws Exception{
- Vfcmt vfcmt = createVfcmt();
- RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
- String uid1 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
- //save two more rules
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", ruleRequestBody);
- Report.log(Status.INFO, "saveRule1 response= "+res);
- String uid2 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", ruleRequestBody);
- Report.log(Status.INFO, "saveRule2 response= "+res);
- String uid3 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
- res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
- Report.log(Status.INFO, "getRules response= "+res);
- JsonObject jsonRes = gson.fromJson(res.getResponse(), JsonObject.class);
- Report.log(Status.INFO, "jsonRes="+jsonRes);
- assertThat(jsonRes.get("schema")).isNotNull();
- MappingRules actualRules = gson.fromJson(res.getResponse(), MappingRules.class);
- Report.log(Status.INFO, "MappingRules="+res.getResponse());
- assertThat(actualRules.getRules()).hasSize(3);
- assertThat(actualRules.getRules().keySet()).containsOnly(uid1, uid2, uid3);
- }
+ @Test
+ public void getAllRules() throws Exception{
+ Vfcmt vfcmt = createVfcmt();
+ RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
+ String uid1 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
+ //save two more rules
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", ruleRequestBody);
+ Report.log(Status.INFO, "saveRule1 response= "+res);
+ String uid2 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", ruleRequestBody);
+ Report.log(Status.INFO, "saveRule2 response= "+res);
+ String uid3 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
+ res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
+ Report.log(Status.INFO, "getRules response= "+res);
+ JsonObject jsonRes = gson.fromJson(res.getResponse(), JsonObject.class);
+ Report.log(Status.INFO, "jsonRes="+jsonRes);
+ assertThat(jsonRes.get("schema")).isNotNull();
+ MappingRules actualRules = gson.fromJson(res.getResponse(), MappingRules.class);
+ Report.log(Status.INFO, "MappingRules="+res.getResponse());
+ assertThat(actualRules.getRules()).hasSize(3);
+ assertThat(actualRules.getRules().keySet()).containsOnly(uid1, uid2, uid3);
+ }
+ @Test
+ public void deleteRuleSuccessTest() throws Exception {
+ Vfcmt vfcmt = createVfcmt();
+ //save first rule
+ RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
+ String uid1 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
+ // save second rule
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", ruleRequestBody);
+ Report.log(Status.INFO, "saveRule response= "+res);
+ String uid2 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
+ res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
+ Report.log(Status.INFO, "getRules1 response= "+res);
+ MappingRules actualRules = gson.fromJson(res.getResponse(), MappingRules.class);
+ Report.log(Status.INFO, "MappingRules1="+res.getResponse());
+ // get all rules should return both
+ assertThat(actualRules.getRules()).hasSize(2);
+ assertThat(actualRules.getRules().keySet()).containsOnly(uid1, uid2);
+ // delete a rule
+ res = DcaeRestClient.deleteRule(vfcmt.getUuid(),"map", "map", "param1", uid2);
+ Report.log(Status.INFO, "deleteRule1 response= "+res);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
+ Report.log(Status.INFO, "getRules2 response= "+res);
+ actualRules = gson.fromJson(res.getResponse(), MappingRules.class);
+ Report.log(Status.INFO, "MappingRules2="+res.getResponse());
+ // get rules should return one rule
+ assertThat(actualRules.getRules()).hasSize(1);
+ assertThat(actualRules.getRules().keySet()).containsOnly(uid1);
+ // delete the last rule - artifact should be deleted
+ res = DcaeRestClient.deleteRule(vfcmt.getUuid(),"map", "map", "param1", uid1);
+ Report.log(Status.INFO, "deleteRule2 response= "+res);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ String expectedArtifactName = "map_map_param1_MappingRules.json";
+ Artifact savedArtifact = fetchVfcmtArtifactMetadataByName(vfcmt.getUuid(), expectedArtifactName);
+ Report.log(Status.INFO, "savedArtifact= "+savedArtifact);
+ assertThat(savedArtifact).isNull();
+ // get rules should return empty
+ res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
+ Report.log(Status.INFO, "getRules3 response= "+res);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ assertThat(res.getResponse()).isEqualTo("{}");
+ }
+
@Test
- public void deleteRuleSuccessTest() throws Exception{
+ public void deleteGroupOfRulesSuccessTest() throws Exception{
Vfcmt vfcmt = createVfcmt();
//save first rule
- RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
+ Rule rule = gson.fromJson(ruleRequestBody, Rule.class);
+ rule.setGroupId("group_0");
+ rule.setPhase("phase_0");
+ String rulePayload = rule.toJson();
+ RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", rulePayload);
String uid1 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
// save second rule
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", ruleRequestBody);
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", rulePayload);
Report.log(Status.INFO, "saveRule response= "+res);
String uid2 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString();
res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
- Report.log(Status.INFO, "getRules1 response= "+res);
+ Report.log(Status.INFO, "getRules response= "+res);
MappingRules actualRules = gson.fromJson(res.getResponse(), MappingRules.class);
- Report.log(Status.INFO, "MappingRules1="+res.getResponse());
// get all rules should return both
assertThat(actualRules.getRules()).hasSize(2);
assertThat(actualRules.getRules().keySet()).containsOnly(uid1, uid2);
// delete a rule
- res = DcaeRestClient.deleteRule(vfcmt.getUuid(),"map", "map", "param1", uid2);
- Report.log(Status.INFO, "deleteRule1 response= "+res);
- assertThat(res.getStatusCode()).isEqualTo(200);
- res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
- Report.log(Status.INFO, "getRules2 response= "+res);
- actualRules = gson.fromJson(res.getResponse(), MappingRules.class);
- Report.log(Status.INFO, "MappingRules2="+res.getResponse());
- // get rules should return one rule
- assertThat(actualRules.getRules()).hasSize(1);
- assertThat(actualRules.getRules().keySet()).containsOnly(uid1);
- // delete the last rule - artifact should be deleted
- res = DcaeRestClient.deleteRule(vfcmt.getUuid(),"map", "map", "param1", uid1);
- Report.log(Status.INFO, "deleteRule2 response= "+res);
+ res = DcaeRestClient.deleteGroupOfRules(vfcmt.getUuid(),"map", "map", "param1", "group_0");
+ Report.log(Status.INFO, "deleteGroup response= "+res);
assertThat(res.getStatusCode()).isEqualTo(200);
+ // no more rules - artifact should be deleted
String expectedArtifactName = "map_map_param1_MappingRules.json";
Artifact savedArtifact = fetchVfcmtArtifactMetadataByName(vfcmt.getUuid(), expectedArtifactName);
Report.log(Status.INFO, "savedArtifact= "+savedArtifact);
assertThat(savedArtifact).isNull();
// get rules should return empty
res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1");
- Report.log(Status.INFO, "getRules3 response= "+res);
+ Report.log(Status.INFO, "getRules response= "+res);
assertThat(res.getStatusCode()).isEqualTo(200);
assertThat(res.getResponse()).isEqualTo("{}");
-
}
- @Test
- public void invalidJsonRuleFormatTest() throws Exception{
- String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6035\",\"text\":\"Error - Rule format is invalid: %1.\",\"variables\":[\"java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $\"],\"formattedErrorMessage\":\"Error - Rule format is invalid: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $.\"}},\"notes\":\"\"}";
- RestResponse res = DcaeRestClient.saveRule("someId", "someName", "someNid", "someParam", "gibberish" );
- assertThat(res.getStatusCode()).isEqualTo(400);
- assertThat(res.getResponse()).isEqualTo(expectedError);
- }
+ @Test
+ public void invalidJsonRuleFormatTest() throws Exception{
+ String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6035\",\"text\":\"Error - Rule format is invalid: %1.\",\"variables\":[\"java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $\"],\"formattedErrorMessage\":\"Error - Rule format is invalid: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $.\"}},\"notes\":\"\"}";
+ RestResponse res = DcaeRestClient.saveRule("someId", "someName", "someNid", "someParam", "gibberish" );
+ assertThat(res.getStatusCode()).isEqualTo(400);
+ assertThat(res.getResponse()).isEqualTo(expectedError);
+ }
- @Test
- public void invalidActionTypeTest() throws Exception {
- String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6035\",\"text\":\"Error - Rule format is invalid: %1.\",\"variables\":[\"Undefined action type: gibberish\"],\"formattedErrorMessage\":\"Error - Rule format is invalid: Undefined action type: gibberish.\"}},\"notes\":\"\"}";
- RestResponse res = DcaeRestClient.saveRule("someId", "someName", "someNid", "someParam", "{actions:[{actionType:gibberish}]}");
- assertThat(res.getStatusCode()).isEqualTo(400);
- assertThat(res.getResponse()).isEqualTo(expectedError);
- }
+ @Test
+ public void invalidActionTypeTest() throws Exception {
+ String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6035\",\"text\":\"Error - Rule format is invalid: %1.\",\"variables\":[\"Undefined action type: gibberish\"],\"formattedErrorMessage\":\"Error - Rule format is invalid: Undefined action type: gibberish.\"}},\"notes\":\"\"}";
+ RestResponse res = DcaeRestClient.saveRule("someId", "someName", "someNid", "someParam", "{actions:[{actionType:gibberish}]}");
+ assertThat(res.getStatusCode()).isEqualTo(400);
+ assertThat(res.getResponse()).isEqualTo(expectedError);
+ }
- @Test
- public void conflictingUsersErrorTest() throws Exception {
- Vfcmt vfcmt = createVfcmt();
- RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}");
- assertThat(res.getStatusCode()).isEqualTo(200);
- //check out by other user then try to save rule by current user
- res = DcaeRestClient.checkoutVfcmt(vfcmt.getUuid(), DcaeRestClient.getDesigner2UserId());
- assertThat(res.getStatusCode()).isEqualTo(200);
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "someParam", ruleRequestBody);
- assertThat(res.getStatusCode()).isEqualTo(403);
- }
+ @Test
+ public void conflictingUsersErrorTest() throws Exception {
+ Vfcmt vfcmt = createVfcmt();
+ RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}");
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ //check out by other user then try to save rule by current user
+ res = DcaeRestClient.checkoutVfcmt(vfcmt.getUuid(), DcaeRestClient.getDesigner2UserId());
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "someParam", ruleRequestBody);
+ assertThat(res.getStatusCode()).isEqualTo(403);
+ }
- @Test
- public void uploadArtifactSdcErrorTest() throws Exception {
- String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6036\",\"text\":\"Error - Failed to save rule. Internal persistence error\",\"variables\":[],\"formattedErrorMessage\":\"Error - Failed to save rule. Internal persistence error\"}},\"notes\":\"Error: Invalid content.\"}";
- Vfcmt vfcmt = createVfcmt();
- RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}");
- assertThat(res.getStatusCode()).isEqualTo(200);
- // Generated artifact label would be invalid and should fail when submitted to SDC
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "()someParam", ruleRequestBody);
- assertThat(res.getStatusCode()).isEqualTo(409);
- assertThat(res.getResponse()).isEqualTo(expectedError);
- }
+ @Test
+ public void uploadArtifactSdcErrorTest() throws Exception {
+ String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6036\",\"text\":\"Error - Failed to save rule. Internal persistence error\",\"variables\":[],\"formattedErrorMessage\":\"Error - Failed to save rule. Internal persistence error\"}},\"notes\":\"Error: Invalid content.\"}";
+ Vfcmt vfcmt = createVfcmt();
+ RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}");
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ // Generated artifact label would be invalid and should fail when submitted to SDC
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "()someParam", ruleRequestBody);
+ assertThat(res.getStatusCode()).isEqualTo(409);
+ assertThat(res.getResponse()).isEqualTo(expectedError);
+ }
- @Test
- public void saveMappingRuleNoSuchNidErrorTest() throws Exception {
- String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6114\",\"text\":\"DCAE component %1 not found in composition\",\"variables\":[\"noSuchComponent\"],\"formattedErrorMessage\":\"DCAE component noSuchComponent not found in composition\"}},\"notes\":\"\"}";
- Vfcmt vfcmt = createVfcmt();
- RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}");
- assertThat(res.getStatusCode()).isEqualTo(200);
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), "noSuchComponent", "noSuchComponent", "someParam", ruleRequestBody);
- assertThat(res.getStatusCode()).isEqualTo(400);
- assertThat(res.getResponse()).isEqualTo(expectedError);
- }
+ @Test
+ public void saveMappingRuleNoSuchNidErrorTest() throws Exception {
+ String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6114\",\"text\":\"DCAE component %1 not found in composition\",\"variables\":[\"noSuchComponent\"],\"formattedErrorMessage\":\"DCAE component noSuchComponent not found in composition\"}},\"notes\":\"\"}";
+ Vfcmt vfcmt = createVfcmt();
+ RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}");
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), "noSuchComponent", "noSuchComponent", "someParam", ruleRequestBody);
+ assertThat(res.getStatusCode()).isEqualTo(400);
+ assertThat(res.getResponse()).isEqualTo(expectedError);
+ }
- @Test
- public void deleteRuleNoSuchIdTest() throws Exception {
- String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6115\",\"text\":\"Delete rule failed. Internal persistence error\",\"variables\":[],\"formattedErrorMessage\":\"Delete rule failed. Internal persistence error\"}},\"notes\":\"\"}";
- Vfcmt vfcmt = createVfcmt();
- //save rule
- saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
- RestResponse res = DcaeRestClient.deleteRule(vfcmt.getUuid(),"map", "map", "param1", "noSuchRuleId");
- Report.log(Status.INFO, "deleteRule response=%s", res);
- assertThat(res.getStatusCode()).isEqualTo(409);
- assertThat(res.getResponse()).isEqualTo(expectedError);
- }
-
- // After first rule is saved the mappingRules.json artifact is available for get/delete/edit tests
- private RestResponse saveCompositionAndFirstRuleSuccess(Vfcmt vfcmt, String dcaeCompName, String nid, String configParam, String body) throws Exception {
- // generate and save a composition.yml
- Report.log(Status.INFO, "saveCompositionAndFirstRuleSuccess start");
- RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), String.format("{\"nid\":\"%s\"}", nid));
- Report.log(Status.INFO, "saveComposition response=%s", res);
- assertThat(res.getStatusCode()).isEqualTo(200);
-
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), dcaeCompName, nid, configParam, body);
- Report.log(Status.INFO, "saveRule response=%s", res);
- assertThat(res.getStatusCode()).isEqualTo(200);
- return res;
- }
+ @Test
+ public void deleteRuleNoSuchIdTest() throws Exception {
+ String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6115\",\"text\":\"Delete rule failed. Internal persistence error\",\"variables\":[],\"formattedErrorMessage\":\"Delete rule failed. Internal persistence error\"}},\"notes\":\"\"}";
+ Vfcmt vfcmt = createVfcmt();
+ //save rule
+ saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody);
+ RestResponse res = DcaeRestClient.deleteRule(vfcmt.getUuid(),"map", "map", "param1", "noSuchRuleId");
+ Report.log(Status.INFO, "deleteRule response=%s", res);
+ assertThat(res.getStatusCode()).isEqualTo(409);
+ assertThat(res.getResponse()).isEqualTo(expectedError);
+ }
+ // After first rule is saved the mappingRules.json artifact is available for get/delete/edit tests
+ private RestResponse saveCompositionAndFirstRuleSuccess(Vfcmt vfcmt, String dcaeCompName, String nid, String configParam, String body) throws Exception {
+ // generate and save a composition.yml
+ Report.log(Status.INFO, "saveCompositionAndFirstRuleSuccess start");
+ RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), String.format("{\"nid\":\"%s\"}", nid));
+ Report.log(Status.INFO, "saveComposition response=%s", res);
+ assertThat(res.getStatusCode()).isEqualTo(200);
- @Test
- public void saveMappingRuleNegativeTest_BadResponse() throws Exception {
- // arrange
- Report.log(Status.INFO, "Arrangeing test...");
- ObjectMapper mapper = new ObjectMapper();
- String badRuleRequestBody = "{\"version\":\"5.3\",\"eventType\":\"syslogFields\",\"uid\":\"\",\"description\":\"map rules\","
- + "\"actions\":[{actionType:\"Date Formatter\",from:{value:whatever}},{\"id\":\"22fdded0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"AAA\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"BBB\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"}],\"haveDefault\":true,\"default\":\"\"}},{\"id\":\"2d6fab00-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"DDD\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"}],\"haveDefault\":false,\"default\":\"\"}},{\"id\":\"60bff5a0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"EEE\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"}],\"haveDefault\":false,\"default\":\"\"}},{\"id\":\"75ea0ce0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"FFF\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"GGG\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"},{\"key\":\"\",\"value\":\"\"}],\"haveDefault\":false,\"default\":\"\"}},{\"id\":\"75ea0ce0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"FFF\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"GGG\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"},{\"key\":\"foo\",\"value\":\"not bar\"}],\"haveDefault\":false,\"default\":\"\"}}],\"condition\":null}";
- Vfcmt vfcmt = createVfcmt();
- Report.log(Status.INFO, "Saving composition of a fake cdump...");
- RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}");
- Report.logDebug("saveComposition response", res);
- if (res.getStatusCode() != 200) {
- fail("Unable to arrange test, save composition failed\n" + res.toString());
- }
- // act
- Report.log(Status.INFO, "Executing...");
- Report.logDebug("Request body", badRuleRequestBody);
- RestResponse targetRes = DcaeRestClient.saveRule(vfcmt.getUuid(), "noSuchComponent", "map", "someParam", badRuleRequestBody);
- Report.logDebug("saveRule response", targetRes);
- // assert
- Report.log(Status.INFO, "Asserting...");
- List<String> errors = mapper.readValue(targetRes.getResponse(), SaveRuleError.class).getFormattedErrors(); // parse response
- SoftAssertions.assertSoftly(softly -> {
- softly.assertThat(targetRes.getStatusCode()).isEqualTo(400);
- softly.assertThat(errors).containsExactlyInAnyOrder(
- "Please fill the default value of map action to BBB",
- "Please fill the from field of map action to DDD",
- "Please fill the target field of map action to ",
- "Please fill all key-value pairs of map action to GGG",
- "Error: Duplication in map keys exists, please modify rule configuration",
- "Please fill the target field of Date Formatter action to null",
- "Please fill the to timezone field of Date Formatter action to null",
- "Please fill the from timezone field of Date Formatter action to null",
- "Please fill the from format field of Date Formatter action to null",
- "Please fill the to format field of Date Formatter action to null"
- );
- });
- }
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), dcaeCompName, nid, configParam, body);
+ Report.log(Status.INFO, "saveRule response=%s", res);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ return res;
+ }
+
+
+ @Test
+ public void saveMappingRuleNegativeTest_BadResponse() throws Exception {
+ // arrange
+ Report.log(Status.INFO, "Arranging test...");
+ ObjectMapper mapper = new ObjectMapper();
+ String badRuleRequestBody = "{\"version\":\"5.3\",\"eventType\":\"syslogFields\",\"uid\":\"\",\"description\":\"map rules\","
+ + "\"actions\":[{id:id,actionType:\"Date Formatter\",from:{state:closed,value:whatever}},{\"id\":\"22fdded0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"AAA\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"BBB\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"}],\"haveDefault\":true,\"default\":\"\"}},{\"id\":\"2d6fab00-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"DDD\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"}],\"haveDefault\":false,\"default\":\"\"}},{\"id\":\"60bff5a0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"EEE\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"}],\"haveDefault\":false,\"default\":\"\"}},{\"id\":\"75ea0ce0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"FFF\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"GGG\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"},{\"key\":\"\",\"value\":\"\"}],\"haveDefault\":false,\"default\":\"\"}},{\"id\":\"75ea0ce0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"FFF\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"GGG\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"},{\"key\":\"foo\",\"value\":\"not bar\"}],\"haveDefault\":false,\"default\":\"\"}}],\"condition\":null}";
+ Vfcmt vfcmt = createVfcmt();
+ Report.log(Status.INFO, "Saving composition of a fake cdump...");
+ RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}");
+ Report.logDebug("saveComposition response", res);
+ if (res.getStatusCode() != 200) {
+ fail("Unable to arrange test, save composition failed\n" + res.toString());
+ }
+ // act
+ Report.log(Status.INFO, "Executing...");
+ Report.logDebug("Request body", badRuleRequestBody);
+ RestResponse targetRes = DcaeRestClient.saveRule(vfcmt.getUuid(), "noSuchComponent", "map", "someParam", badRuleRequestBody);
+ Report.logDebug("saveRule response", targetRes);
+ // assert
+ Report.log(Status.INFO, "Asserting...");
+ List<String> errors = mapper.readValue(targetRes.getResponse(), SaveRuleError.class).getFormattedErrors(); // parse response
+ SoftAssertions.assertSoftly(softly -> {
+ softly.assertThat(targetRes.getStatusCode()).isEqualTo(400);
+ softly.assertThat(errors).containsExactlyInAnyOrder(
+ "Please fill the default value of map action to BBB",
+ "Please fill the from field of map action to DDD",
+ "Please fill the target field of map action to ",
+ "Please fill all key-value pairs of map action to GGG",
+ "Error: Duplication in map keys exists, please modify rule configuration",
+ "Please fill the target field of Date Formatter action to null",
+ "Please fill the to timezone field of Date Formatter action to null",
+ "Please fill the from timezone field of Date Formatter action to null",
+ "Please fill the from format field of Date Formatter action to null",
+ "Please fill the to format field of Date Formatter action to null"
+ );
+ });
+ }
+
+ @Test
+ public void translateWithoutPhasesFailureTest() throws Exception {
+ TranslateRequest translateRequest = new TranslateRequest("someId","map", "map", "param1", "xxx");
+ String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6116\",\"text\":\"Translation failed. Reason: %1\",\"variables\":[\"please enter valid request parameters\"],\"formattedErrorMessage\":\"Translation failed. Reason: please enter valid request parameters\"}},\"notes\":\"\"}";
+ RestResponse res = DcaeRestClient.translateRules(gson.toJson(translateRequest));
+ assertThat(res.getStatusCode()).isEqualTo(400);
+ assertThat(res.getResponse()).isEqualTo(expectedError);
+ translateRequest.setPublishPhase("publishPhaseWithoutEntryPhaseIsNotEnough");
+ res = DcaeRestClient.translateRules(gson.toJson(translateRequest));
+ assertThat(res.getStatusCode()).isEqualTo(400);
+ assertThat(res.getResponse()).isEqualTo(expectedError);
+ }
+
+ @Test
+ public void getExistingRuleTargetsTest() throws Exception {
+ String dcaeCompName = "theComponent";
+ String nid = "theNid";
+ String configParam1 = "ConfigParam1";
+ String configParam2 = "ConfigParam2";
+ final String UID = "uid";
+
+ Vfcmt vfcmt = createVfcmt();
+ RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, dcaeCompName, nid, configParam1, ruleRequestBody);
+ gson.fromJson(res.getResponse(), JsonObject.class).get(UID).getAsString();
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), dcaeCompName, nid, configParam2, ruleRequestBody);
+ Report.log(Status.INFO, "saveRule1 response= "+res);
+ gson.fromJson(res.getResponse(), JsonObject.class).get(UID).getAsString();
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), dcaeCompName, nid, configParam1, ruleRequestBody);
+ Report.log(Status.INFO, "saveRule2 response= "+res);
+ gson.fromJson(res.getResponse(), JsonObject.class).get(UID).getAsString();
+ res = DcaeRestClient.saveRule(vfcmt.getUuid(), dcaeCompName, nid, configParam1, ruleRequestBody);
+ Report.log(Status.INFO, "saveRule3 response= "+res);
+
+ res = DcaeRestClient.getExistingRuleTargets(vfcmt.getUuid(),dcaeCompName,nid);
+ if (res.getStatusCode() != 200) {
+ fail("Unable to arrange test, get existing rule targets test failed\n" + res.toString());
+ }
+ String response = res.getResponse();
+ assertThat(response.contains(configParam1));
+ assertThat(response.contains(configParam2));
+ }
@Test
- public void translateInvalidFlowTypeFailureTest() throws Exception {
- String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6116\",\"text\":\"Translation failed. Reason: %s\",\"variables\":[\"%s\"],\"formattedErrorMessage\":\"Translation failed. Reason: %s\"}},\"notes\":\"\"}";
- RestResponse res = DcaeRestClient.translateRules("someId","map", "map", "param1", "noSuchFlowType");
- assertThat(res.getStatusCode()).isEqualTo(400);
- assertThat(res.getResponse()).isEqualTo(String.format(expectedError, "%1", "Flow type noSuchFlowType not found", "Flow type noSuchFlowType not found"));
- res = DcaeRestClient.translateRules("someId","map", "map", "param1", null);
- assertThat(res.getStatusCode()).isEqualTo(400);
- assertThat(res.getResponse()).isEqualTo(String.format(expectedError, "%1", "Flow type null not found", "Flow type null not found"));
+ public void exportRulesArtifactSuccessTest() throws Exception {
+ Report.log(Status.INFO, "test start");
+ Vfcmt vfcmt = createVfcmt();
+ RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "n.1.map", "param1", ruleRequestBody);
+ MappingRules expectedResponse = new MappingRules(gson.fromJson(res.getResponse(), Rule.class));
+ res = DcaeRestClient.exportRules(vfcmt.getUuid(), "map", "n.1.map", "param1");
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ assertThat(gson.fromJson(res.getResponse(), MappingRules.class)).isEqualTo(expectedResponse);
+ String fileNameHeader = "attachment; filename=\""
+ .concat(vfcmt.getName())
+ .concat("_")
+ .concat("map")
+ .concat("_")
+ .concat("param1")
+ .concat(DcaeBeConstants.Composition.fileNames.MAPPING_RULE_POSTFIX)
+ .concat("\"");
+ assertThat(res.getHeaderFields().get("Content-Disposition")).contains(fileNameHeader);
}
@Test
- public void getExistingRuleTargetsTest() throws Exception {
- String dcaeCompName = "theComponent";
- String nid = "theNid";
- String configParam1 = "ConfigParam1";
- String configParam2 = "ConfigParam2";
- final String UID = "uid";
-
+ public void importRulesArtifactSuccessTest() throws Exception {
+ String dcaeCompName = "map";
+ String nid = "n.1.map";
+ String param1 = "param1";
+ String param2 = "param2";
Vfcmt vfcmt = createVfcmt();
- RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, dcaeCompName, nid, configParam1, ruleRequestBody);
- gson.fromJson(res.getResponse(), JsonObject.class).get(UID).getAsString();
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), dcaeCompName, nid, configParam2, ruleRequestBody);
- Report.log(Status.INFO, "saveRule1 response= "+res);
- gson.fromJson(res.getResponse(), JsonObject.class).get(UID).getAsString();
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), dcaeCompName, nid, configParam1, ruleRequestBody);
- Report.log(Status.INFO, "saveRule2 response= "+res);
- gson.fromJson(res.getResponse(), JsonObject.class).get(UID).getAsString();
- res = DcaeRestClient.saveRule(vfcmt.getUuid(), dcaeCompName, nid, configParam1, ruleRequestBody);
- Report.log(Status.INFO, "saveRule3 response= "+res);
-
+ saveCompositionAndFirstRuleSuccess(vfcmt, dcaeCompName, nid, param1, ruleRequestBody);
+ Report.log(Status.INFO, "verifying rule definition exists for 'param1' only");
+ RestResponse res = DcaeRestClient.getExistingRuleTargets(vfcmt.getUuid(),dcaeCompName,nid);
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ String[] existingTargets = gson.fromJson(res.getResponse(), String[].class);
+ assertThat(existingTargets.length).isEqualTo(1);
+ assertThat(existingTargets[0]).isEqualTo(param1);
+ Rule rule = gson.fromJson(ruleRequestBody, Rule.class);
+ MappingRules inputRules = new MappingRules(rule);
+ res = DcaeRestClient.importRules(vfcmt.getUuid(), dcaeCompName, nid, param2, new Gson().toJson(inputRules));
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ Report.log(Status.INFO, "verifying that after import success rule definition exists for both 'param1' and 'param2'");
res = DcaeRestClient.getExistingRuleTargets(vfcmt.getUuid(),dcaeCompName,nid);
- if (res.getStatusCode() != 200) {
- fail("Unable to arrange test, get existing rule targets test failed\n" + res.toString());
- }
- String response = res.getResponse();
- assertThat(response.contains(configParam1));
- assertThat(response.contains(configParam2));
+ assertThat(res.getStatusCode()).isEqualTo(200);
+ existingTargets = gson.fromJson(res.getResponse(), String[].class);
+ assertThat(Arrays.asList(existingTargets)).containsExactlyInAnyOrder(param1, param2);
}
}
diff --git a/src/main/java/org/onap/dcae/ci/config/Configuration.java b/src/main/java/org/onap/dcae/ci/config/Configuration.java
index 0631800..e3d00fd 100644
--- a/src/main/java/org/onap/dcae/ci/config/Configuration.java
+++ b/src/main/java/org/onap/dcae/ci/config/Configuration.java
@@ -12,17 +12,10 @@ import java.nio.file.Paths;
public class Configuration {
private String apiPath;
private String dcaeBeHost;
- private String beHost;
- private String feHost;
- private int bePort;
- private int fePort;
private String dcaeBePort;
+ private String sdcBeHost;
+ private int sdcBePort;
private String url;
- private String remoteTestingMachineIP;
- private int remoteTestingMachinePort;
- private boolean remoteTesting;
- private String browser;
- private String systemUnderDebug;
private String reportDBhost;
private int reportDBport;
private boolean captureTraffic;
@@ -35,7 +28,7 @@ public class Configuration {
private String windowsDownloadDirectory;
private String screenshotFolder;
private String harFilesFolder;
- private String ruleEditorUrl;
+ private String toscaLabUrl;
public Configuration() {
this.basicInit((String) null);
@@ -50,48 +43,30 @@ public class Configuration {
}
private void basicInit(String url) {
- this.remoteTesting = false;
this.captureTraffic = false;
this.useBrowserMobProxy = false;
this.reportFolder = "." + File.separator + "ExtentReport" + File.separator;
this.reportFileName = "UI_Extent_Report.html";
this.screenshotFolder = this.reportFolder + "screenshots" + File.separator;
this.harFilesFolder = this.reportFolder + "har_files" + File.separator;
- this.browser = "firefox";
this.url = url;
this.numOfAttemptsToRefresh = 2;
}
- public String getBeHost() {
- return this.beHost;
+ public String getSdcBeHost() {
+ return this.sdcBeHost;
}
- public void setBeHost(String beHost) {
- this.beHost = beHost;
+ public void setSdcBeHost(String sdcBeHost) {
+ this.sdcBeHost = sdcBeHost;
}
- public String getFeHost() {
- return this.feHost;
+ public int getSdcBePort() {
+ return this.sdcBePort;
}
- public void setFeHost(String feHost) {
- this.feHost = feHost;
- }
-
- public int getBePort() {
- return this.bePort;
- }
-
- public void setBePort(int bePort) {
- this.bePort = bePort;
- }
-
- public int getFePort() {
- return this.fePort;
- }
-
- public void setFePort(int fePort) {
- this.fePort = fePort;
+ public void setSdcBePort(int sdcBePort) {
+ this.sdcBePort = sdcBePort;
}
public String getUrl() {
@@ -102,46 +77,6 @@ public class Configuration {
this.url = url;
}
- public String getRemoteTestingMachineIP() {
- return this.remoteTestingMachineIP;
- }
-
- public void setRemoteTestingMachineIP(String remoteTestingMachineIP) {
- this.remoteTestingMachineIP = remoteTestingMachineIP;
- }
-
- public int getRemoteTestingMachinePort() {
- return this.remoteTestingMachinePort;
- }
-
- public void setRemoteTestingMachinePort(int remoteTestingMachinePort) {
- this.remoteTestingMachinePort = remoteTestingMachinePort;
- }
-
- public boolean isRemoteTesting() {
- return this.remoteTesting;
- }
-
- public void setRemoteTesting(boolean remoteTesting) {
- this.remoteTesting = remoteTesting;
- }
-
- public String getBrowser() {
- return this.browser;
- }
-
- public void setBrowser(String browser) {
- this.browser = browser;
- }
-
- public String getSystemUnderDebug() {
- return this.systemUnderDebug;
- }
-
- public void setSystemUnderDebug(String systemUnderDebug) {
- this.systemUnderDebug = systemUnderDebug;
- }
-
public String getReportDBhost() {
return this.reportDBhost;
}
@@ -262,12 +197,12 @@ public class Configuration {
this.apiPath = apiPath;
}
- public String getRuleEditorUrl() {
- return ruleEditorUrl;
+ public String getToscaLabUrl() {
+ return toscaLabUrl;
}
- public void setRuleEditorUrl(String ruleEditorUrl) {
- this.ruleEditorUrl = ruleEditorUrl;
+ public void setToscaLabUrl(String toscaLabUrl) {
+ this.toscaLabUrl = toscaLabUrl;
}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/items/Artifact.java b/src/main/java/org/onap/dcae/ci/entities/composition/items/Artifact.java
deleted file mode 100644
index eae61ea..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/items/Artifact.java
+++ /dev/null
@@ -1,109 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.items;
-
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Artifact {
-
- @SerializedName("artifactChecksum")
- @Expose
- private String artifactChecksum;
- @SerializedName("artifactType")
- @Expose
- private String artifactType;
- @SerializedName("artifactUUID")
- @Expose
- private String artifactUUID;
- @SerializedName("artifactVersion")
- @Expose
- private String artifactVersion;
- @SerializedName("artifactName")
- @Expose
- private String artifactName;
- @SerializedName("artifactGroupType")
- @Expose
- private String artifactGroupType;
- @SerializedName("artifactURL")
- @Expose
- private String artifactURL;
- @SerializedName("artifactDescription")
- @Expose
- private String artifactDescription;
- @SerializedName("artifactLabel")
- @Expose
- private String artifactLabel;
-
- public String getArtifactChecksum() {
- return artifactChecksum;
- }
-
- public void setArtifactChecksum(String artifactChecksum) {
- this.artifactChecksum = artifactChecksum;
- }
-
- public String getArtifactType() {
- return artifactType;
- }
-
- public void setArtifactType(String artifactType) {
- this.artifactType = artifactType;
- }
-
- public String getArtifactUUID() {
- return artifactUUID;
- }
-
- public void setArtifactUUID(String artifactUUID) {
- this.artifactUUID = artifactUUID;
- }
-
- public String getArtifactVersion() {
- return artifactVersion;
- }
-
- public void setArtifactVersion(String artifactVersion) {
- this.artifactVersion = artifactVersion;
- }
-
- public String getArtifactName() {
- return artifactName;
- }
-
- public void setArtifactName(String artifactName) {
- this.artifactName = artifactName;
- }
-
- public String getArtifactGroupType() {
- return artifactGroupType;
- }
-
- public void setArtifactGroupType(String artifactGroupType) {
- this.artifactGroupType = artifactGroupType;
- }
-
- public String getArtifactURL() {
- return artifactURL;
- }
-
- public void setArtifactURL(String artifactURL) {
- this.artifactURL = artifactURL;
- }
-
- public String getArtifactDescription() {
- return artifactDescription;
- }
-
- public void setArtifactDescription(String artifactDescription) {
- this.artifactDescription = artifactDescription;
- }
-
- public String getArtifactLabel() {
- return artifactLabel;
- }
-
- public void setArtifactLabel(String artifactLabel) {
- this.artifactLabel = artifactLabel;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/items/Data.java b/src/main/java/org/onap/dcae/ci/entities/composition/items/Data.java
deleted file mode 100644
index f7f44d3..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/items/Data.java
+++ /dev/null
@@ -1,21 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.items;
-
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Data {
-
- @SerializedName("element")
- @Expose
- private Element element;
-
- public Element getElement() {
- return element;
- }
-
- public void setElement(Element element) {
- this.element = element;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/items/DcaeComponents.java b/src/main/java/org/onap/dcae/ci/entities/composition/items/DcaeComponents.java
deleted file mode 100644
index c434a0d..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/items/DcaeComponents.java
+++ /dev/null
@@ -1,56 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.items;
-
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-import java.lang.*;
-
-public class DcaeComponents {
-
- @SerializedName("id")
- @Expose
- private Object id;
- @SerializedName("timestamp")
- @Expose
- private Integer timestamp;
- @SerializedName("data")
- @Expose
- private Data data;
- @SerializedName("error")
- @Expose
- private java.lang.Error error;
-
- public Object getId() {
- return id;
- }
-
- public void setId(Object id) {
- this.id = id;
- }
-
- public Integer getTimestamp() {
- return timestamp;
- }
-
- public void setTimestamp(Integer timestamp) {
- this.timestamp = timestamp;
- }
-
- public Data getData() {
- return data;
- }
-
- public void setData(Data data) {
- this.data = data;
- }
-
- public java.lang.Error getError() {
- return error;
- }
-
- public void setError(java.lang.Error error) {
- this.error = error;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/items/Element.java b/src/main/java/org/onap/dcae/ci/entities/composition/items/Element.java
deleted file mode 100644
index 64c6601..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/items/Element.java
+++ /dev/null
@@ -1,55 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.items;
-
-import java.util.List;
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Element {
-
- @SerializedName("itemId")
- @Expose
- private String itemId;
- @SerializedName("name")
- @Expose
- private String name;
- @SerializedName("id")
- @Expose
- private String id;
- @SerializedName("items")
- @Expose
- private List<Item> items = null;
-
- public String getItemId() {
- return itemId;
- }
-
- public void setItemId(String itemId) {
- this.itemId = itemId;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public List<Item> getItems() {
- return items;
- }
-
- public void setItems(List<Item> items) {
- this.items = items;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/items/Error.java b/src/main/java/org/onap/dcae/ci/entities/composition/items/Error.java
deleted file mode 100644
index bad41a1..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/items/Error.java
+++ /dev/null
@@ -1,8 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.items;
-
-
-public class Error {
-
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/items/Item.java b/src/main/java/org/onap/dcae/ci/entities/composition/items/Item.java
deleted file mode 100644
index a184886..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/items/Item.java
+++ /dev/null
@@ -1,220 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.items;
-
-import java.util.List;
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Item {
-
- @SerializedName("lifecycleState")
- @Expose
- private String lifecycleState;
- @SerializedName("models")
- @Expose
- private List<Model> models = null;
- @SerializedName("subCategory")
- @Expose
- private String subCategory;
- @SerializedName("catalog")
- @Expose
- private String catalog;
- @SerializedName("lastUpdaterUserId")
- @Expose
- private String lastUpdaterUserId;
- @SerializedName("description")
- @Expose
- private String description;
- @SerializedName("uuid")
- @Expose
- private String uuid;
- @SerializedName("version")
- @Expose
- private String version;
- @SerializedName("itemId")
- @Expose
- private String itemId;
- @SerializedName("catalogId")
- @Expose
- private Integer catalogId;
- @SerializedName("toscaModelURL")
- @Expose
- private String toscaModelURL;
- @SerializedName("name")
- @Expose
- private String name;
- @SerializedName("invariantUUID")
- @Expose
- private String invariantUUID;
- @SerializedName("id")
- @Expose
- private Integer id;
- @SerializedName("category")
- @Expose
- private String category;
- @SerializedName("lastUpdaterFullName")
- @Expose
- private String lastUpdaterFullName;
- @SerializedName("toscaResourceName")
- @Expose
- private String toscaResourceName;
- @SerializedName("resourceType")
- @Expose
- private String resourceType;
- @SerializedName("artifacts")
- @Expose
- private List<Artifact> artifacts = null;
-
- public String getLifecycleState() {
- return lifecycleState;
- }
-
- public void setLifecycleState(String lifecycleState) {
- this.lifecycleState = lifecycleState;
- }
-
- public List<Model> getModels() {
- return models;
- }
-
- public void setModels(List<Model> models) {
- this.models = models;
- }
-
- public String getSubCategory() {
- return subCategory;
- }
-
- public void setSubCategory(String subCategory) {
- this.subCategory = subCategory;
- }
-
- public String getCatalog() {
- return catalog;
- }
-
- public void setCatalog(String catalog) {
- this.catalog = catalog;
- }
-
- public String getLastUpdaterUserId() {
- return lastUpdaterUserId;
- }
-
- public void setLastUpdaterUserId(String lastUpdaterUserId) {
- this.lastUpdaterUserId = lastUpdaterUserId;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getUuid() {
- return uuid;
- }
-
- public void setUuid(String uuid) {
- this.uuid = uuid;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getItemId() {
- return itemId;
- }
-
- public void setItemId(String itemId) {
- this.itemId = itemId;
- }
-
- public Integer getCatalogId() {
- return catalogId;
- }
-
- public void setCatalogId(Integer catalogId) {
- this.catalogId = catalogId;
- }
-
- public String getToscaModelURL() {
- return toscaModelURL;
- }
-
- public void setToscaModelURL(String toscaModelURL) {
- this.toscaModelURL = toscaModelURL;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getInvariantUUID() {
- return invariantUUID;
- }
-
- public void setInvariantUUID(String invariantUUID) {
- this.invariantUUID = invariantUUID;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getCategory() {
- return category;
- }
-
- public void setCategory(String category) {
- this.category = category;
- }
-
- public String getLastUpdaterFullName() {
- return lastUpdaterFullName;
- }
-
- public void setLastUpdaterFullName(String lastUpdaterFullName) {
- this.lastUpdaterFullName = lastUpdaterFullName;
- }
-
- public String getToscaResourceName() {
- return toscaResourceName;
- }
-
- public void setToscaResourceName(String toscaResourceName) {
- this.toscaResourceName = toscaResourceName;
- }
-
- public String getResourceType() {
- return resourceType;
- }
-
- public void setResourceType(String resourceType) {
- this.resourceType = resourceType;
- }
-
- public List<Artifact> getArtifacts() {
- return artifacts;
- }
-
- public void setArtifacts(List<Artifact> artifacts) {
- this.artifacts = artifacts;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/items/Model.java b/src/main/java/org/onap/dcae/ci/entities/composition/items/Model.java
deleted file mode 100644
index 2b3a85b..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/items/Model.java
+++ /dev/null
@@ -1,65 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.items;
-
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Model {
-
- @SerializedName("itemId")
- @Expose
- private String itemId;
- @SerializedName("name")
- @Expose
- private String name;
- @SerializedName("description")
- @Expose
- private String description;
- @SerializedName("id")
- @Expose
- private String id;
- @SerializedName("version")
- @Expose
- private String version;
-
- public String getItemId() {
- return itemId;
- }
-
- public void setItemId(String itemId) {
- this.itemId = itemId;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Artifact.java b/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Artifact.java
deleted file mode 100644
index 4d095ab..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Artifact.java
+++ /dev/null
@@ -1,109 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.rightMenu.element;
-
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Artifact {
-
- @SerializedName("artifactChecksum")
- @Expose
- private String artifactChecksum;
- @SerializedName("artifactType")
- @Expose
- private String artifactType;
- @SerializedName("artifactUUID")
- @Expose
- private String artifactUUID;
- @SerializedName("artifactVersion")
- @Expose
- private String artifactVersion;
- @SerializedName("artifactName")
- @Expose
- private String artifactName;
- @SerializedName("artifactGroupType")
- @Expose
- private String artifactGroupType;
- @SerializedName("artifactURL")
- @Expose
- private String artifactURL;
- @SerializedName("artifactDescription")
- @Expose
- private String artifactDescription;
- @SerializedName("artifactLabel")
- @Expose
- private String artifactLabel;
-
- public String getArtifactChecksum() {
- return artifactChecksum;
- }
-
- public void setArtifactChecksum(String artifactChecksum) {
- this.artifactChecksum = artifactChecksum;
- }
-
- public String getArtifactType() {
- return artifactType;
- }
-
- public void setArtifactType(String artifactType) {
- this.artifactType = artifactType;
- }
-
- public String getArtifactUUID() {
- return artifactUUID;
- }
-
- public void setArtifactUUID(String artifactUUID) {
- this.artifactUUID = artifactUUID;
- }
-
- public String getArtifactVersion() {
- return artifactVersion;
- }
-
- public void setArtifactVersion(String artifactVersion) {
- this.artifactVersion = artifactVersion;
- }
-
- public String getArtifactName() {
- return artifactName;
- }
-
- public void setArtifactName(String artifactName) {
- this.artifactName = artifactName;
- }
-
- public String getArtifactGroupType() {
- return artifactGroupType;
- }
-
- public void setArtifactGroupType(String artifactGroupType) {
- this.artifactGroupType = artifactGroupType;
- }
-
- public String getArtifactURL() {
- return artifactURL;
- }
-
- public void setArtifactURL(String artifactURL) {
- this.artifactURL = artifactURL;
- }
-
- public String getArtifactDescription() {
- return artifactDescription;
- }
-
- public void setArtifactDescription(String artifactDescription) {
- this.artifactDescription = artifactDescription;
- }
-
- public String getArtifactLabel() {
- return artifactLabel;
- }
-
- public void setArtifactLabel(String artifactLabel) {
- this.artifactLabel = artifactLabel;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Item.java b/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Item.java
deleted file mode 100644
index aa96b43..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Item.java
+++ /dev/null
@@ -1,220 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.rightMenu.element;
-
-import java.util.List;
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Item {
-
- @SerializedName("lifecycleState")
- @Expose
- private String lifecycleState;
- @SerializedName("models")
- @Expose
- private List<Model> models = null;
- @SerializedName("subCategory")
- @Expose
- private String subCategory;
- @SerializedName("catalog")
- @Expose
- private String catalog;
- @SerializedName("lastUpdaterUserId")
- @Expose
- private String lastUpdaterUserId;
- @SerializedName("description")
- @Expose
- private String description;
- @SerializedName("uuid")
- @Expose
- private String uuid;
- @SerializedName("version")
- @Expose
- private String version;
- @SerializedName("itemId")
- @Expose
- private String itemId;
- @SerializedName("catalogId")
- @Expose
- private Integer catalogId;
- @SerializedName("toscaModelURL")
- @Expose
- private String toscaModelURL;
- @SerializedName("name")
- @Expose
- private String name;
- @SerializedName("invariantUUID")
- @Expose
- private String invariantUUID;
- @SerializedName("id")
- @Expose
- private Integer id;
- @SerializedName("category")
- @Expose
- private String category;
- @SerializedName("lastUpdaterFullName")
- @Expose
- private String lastUpdaterFullName;
- @SerializedName("toscaResourceName")
- @Expose
- private String toscaResourceName;
- @SerializedName("resourceType")
- @Expose
- private String resourceType;
- @SerializedName("artifacts")
- @Expose
- private List<Artifact> artifacts = null;
-
- public String getLifecycleState() {
- return lifecycleState;
- }
-
- public void setLifecycleState(String lifecycleState) {
- this.lifecycleState = lifecycleState;
- }
-
- public List<Model> getModels() {
- return models;
- }
-
- public void setModels(List<Model> models) {
- this.models = models;
- }
-
- public String getSubCategory() {
- return subCategory;
- }
-
- public void setSubCategory(String subCategory) {
- this.subCategory = subCategory;
- }
-
- public String getCatalog() {
- return catalog;
- }
-
- public void setCatalog(String catalog) {
- this.catalog = catalog;
- }
-
- public String getLastUpdaterUserId() {
- return lastUpdaterUserId;
- }
-
- public void setLastUpdaterUserId(String lastUpdaterUserId) {
- this.lastUpdaterUserId = lastUpdaterUserId;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getUuid() {
- return uuid;
- }
-
- public void setUuid(String uuid) {
- this.uuid = uuid;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getItemId() {
- return itemId;
- }
-
- public void setItemId(String itemId) {
- this.itemId = itemId;
- }
-
- public Integer getCatalogId() {
- return catalogId;
- }
-
- public void setCatalogId(Integer catalogId) {
- this.catalogId = catalogId;
- }
-
- public String getToscaModelURL() {
- return toscaModelURL;
- }
-
- public void setToscaModelURL(String toscaModelURL) {
- this.toscaModelURL = toscaModelURL;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getInvariantUUID() {
- return invariantUUID;
- }
-
- public void setInvariantUUID(String invariantUUID) {
- this.invariantUUID = invariantUUID;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getCategory() {
- return category;
- }
-
- public void setCategory(String category) {
- this.category = category;
- }
-
- public String getLastUpdaterFullName() {
- return lastUpdaterFullName;
- }
-
- public void setLastUpdaterFullName(String lastUpdaterFullName) {
- this.lastUpdaterFullName = lastUpdaterFullName;
- }
-
- public String getToscaResourceName() {
- return toscaResourceName;
- }
-
- public void setToscaResourceName(String toscaResourceName) {
- this.toscaResourceName = toscaResourceName;
- }
-
- public String getResourceType() {
- return resourceType;
- }
-
- public void setResourceType(String resourceType) {
- this.resourceType = resourceType;
- }
-
- public List<Artifact> getArtifacts() {
- return artifacts;
- }
-
- public void setArtifacts(List<Artifact> artifacts) {
- this.artifacts = artifacts;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/ItemsElement.java b/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/ItemsElement.java
deleted file mode 100644
index d7ed2cb..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/ItemsElement.java
+++ /dev/null
@@ -1,55 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.rightMenu.element;
-
-import java.util.List;
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class ItemsElement {
-
- @SerializedName("itemId")
- @Expose
- private String itemId;
- @SerializedName("name")
- @Expose
- private String name;
- @SerializedName("id")
- @Expose
- private Integer id;
- @SerializedName("items")
- @Expose
- private List<Item> items = null;
-
- public String getItemId() {
- return itemId;
- }
-
- public void setItemId(String itemId) {
- this.itemId = itemId;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public List<Item> getItems() {
- return items;
- }
-
- public void setItems(List<Item> items) {
- this.items = items;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Model.java b/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Model.java
deleted file mode 100644
index 4541aaf..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Model.java
+++ /dev/null
@@ -1,65 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.rightMenu.element;
-
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Model {
-
- @SerializedName("itemId")
- @Expose
- private String itemId;
- @SerializedName("name")
- @Expose
- private String name;
- @SerializedName("description")
- @Expose
- private String description;
- @SerializedName("id")
- @Expose
- private String id;
- @SerializedName("version")
- @Expose
- private String version;
-
- public String getItemId() {
- return itemId;
- }
-
- public void setItemId(String itemId) {
- this.itemId = itemId;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Service.java b/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Service.java
deleted file mode 100644
index 3c33535..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/element/Service.java
+++ /dev/null
@@ -1,21 +0,0 @@
-
-package org.onap.dcae.ci.entities.composition.rightMenu.element;
-
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Service {
-
- @SerializedName("element")
- @Expose
- private ItemsElement element;
-
- public ItemsElement getElement() {
- return element;
- }
-
- public void setElement(ItemsElement element) {
- this.element = element;
- }
-
-}
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/elements/Element.java b/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/elements/Element.java
deleted file mode 100644
index 350a350..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/elements/Element.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.onap.dcae.ci.entities.composition.rightMenu.elements;
-
-import java.util.List;
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Element {
-
-@SerializedName("itemId")
-@Expose
-private String itemId;
-@SerializedName("catalogId")
-@Expose
-private Integer catalogId;
-@SerializedName("catalog")
-@Expose
-private String catalog;
-@SerializedName("name")
-@Expose
-private String name;
-@SerializedName("id")
-@Expose
-private Integer id;
-@SerializedName("labels")
-@Expose
-private List<String> labels = null;
-
-public String getItemId() {
-return itemId;
-}
-
-public void setItemId(String itemId) {
-this.itemId = itemId;
-}
-
-public Integer getCatalogId() {
-return catalogId;
-}
-
-public void setCatalogId(Integer catalogId) {
-this.catalogId = catalogId;
-}
-
-public String getCatalog() {
-return catalog;
-}
-
-public void setCatalog(String catalog) {
-this.catalog = catalog;
-}
-
-public String getName() {
-return name;
-}
-
-public void setName(String name) {
-this.name = name;
-}
-
-public Integer getId() {
-return id;
-}
-
-public void setId(Integer id) {
-this.id = id;
-}
-
-public List<String> getLabels() {
-return labels;
-}
-
-public void setLabels(List<String> labels) {
-this.labels = labels;
-}
-
-} \ No newline at end of file
diff --git a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/elements/Elements.java b/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/elements/Elements.java
deleted file mode 100644
index b5dad46..0000000
--- a/src/main/java/org/onap/dcae/ci/entities/composition/rightMenu/elements/Elements.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.onap.dcae.ci.entities.composition.rightMenu.elements;
-import java.util.List;
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-public class Elements {
- @SerializedName("elements")
- @Expose
- private List<Element> elements = null;
-
- public List<Element> getElements() {
- return elements;
- }
-
- public void setElements(List<Element> elements) {
- this.elements = elements;
- }
-}
diff --git a/src/main/java/org/onap/dcae/ci/report/ExtentManager.java b/src/main/java/org/onap/dcae/ci/report/ExtentManager.java
index cbf28cb..ae6e52d 100644
--- a/src/main/java/org/onap/dcae/ci/report/ExtentManager.java
+++ b/src/main/java/org/onap/dcae/ci/report/ExtentManager.java
@@ -22,11 +22,11 @@ public class ExtentManager {
private static ExtentHtmlReporter htmlReporter;
private static ExtentXReporter extentxReporter;
private static final String icon = "$(document).ready(function() {" + "\n"
- + "$('.brand-logo').html('').prepend(\"<span><img src='data:image/png;base64,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"
+ + "$('.brand-logo').html('').prepend(\"<span><img src='data:image/png;base64,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' style='display: block; margin-left: auto; margin-right: auto; margin-top: 7px; width: 89px;'/></span>\").width(\"120px\").css(\"float\",\"left\").css(\"padding-left\",\"0\");$('.report-name').css(\"font-weight\",\"bold\");"
+ "\n" + "})";
private static String suiteName;
- public synchronized static ExtentReports setReporter(String filepath, String htmlFile, String dbIp, int dbPort, Boolean isAppend) {
+ private static synchronized ExtentReports setReporter(String filepath, String htmlFile, String dbIp, int dbPort, Boolean isAppend) {
if (extent == null) {
extentxReporter = new ExtentXReporter(dbIp, dbPort);
extent = new ExtentReports();
@@ -41,19 +41,20 @@ public class ExtentManager {
return extent;
}
+ private ExtentManager(){}
- public synchronized static void setExtentXReporter(Boolean isAppend) {
+ private static synchronized void setExtentXReporter(Boolean isAppend) {
extentxReporter.setAppendExisting(isAppend);
extent.attachReporter(extentxReporter);
}
- public synchronized static void initAndSetExtentHtmlReporter(String filePath, String htmlFile, Boolean isAppend) {
+ private static synchronized void initAndSetExtentHtmlReporter(String filePath, String htmlFile, Boolean isAppend) {
setHtmlReportConfiguration(filePath, htmlFile);
htmlReporter.setAppendExisting(isAppend);
extent.attachReporter(htmlReporter);
}
- public synchronized static ExtentReports getReporter() {
+ static synchronized ExtentReports getReporter() {
return extent;
}
@@ -114,7 +115,7 @@ public class ExtentManager {
return suiteName;
}
- public synchronized static void setHtmlReportConfiguration(String filePath, String htmlFile) {
+ private static synchronized void setHtmlReportConfiguration(String filePath, String htmlFile) {
htmlReporter = new ExtentHtmlReporter(filePath + htmlFile);
htmlReporter.config().setTheme(Theme.STANDARD);
htmlReporter.config().setEncoding("UTF-8");
@@ -130,7 +131,7 @@ public class ExtentManager {
extent.flush();
}
- public static void setTrafficCaptue(Configuration config) {
+ private static void setTrafficCaptue(Configuration config) {
config.setCaptureTraffic(true);
}
@@ -185,8 +186,8 @@ public class ExtentManager {
computerName = computerName.substring(0,
computerName.indexOf(".")).toUpperCase();
} catch (UnknownHostException e) {
- System.out.println("Uknown hostAddress");
+ System.out.println("Unknown hostAddress");
}
- return computerName != null ? computerName : "Uknown hostAddress";
+ return computerName != null ? computerName : "Unknown hostAddress";
}
}
diff --git a/src/main/java/org/onap/dcae/ci/report/ExtentTestManager.java b/src/main/java/org/onap/dcae/ci/report/ExtentTestManager.java
index 1b98001..b3b07dd 100644
--- a/src/main/java/org/onap/dcae/ci/report/ExtentTestManager.java
+++ b/src/main/java/org/onap/dcae/ci/report/ExtentTestManager.java
@@ -18,6 +18,8 @@ public class ExtentTestManager {
return extentTest;
}
+ private ExtentTestManager(){}
+
public static synchronized void endTest() {
extent.flush();
}
@@ -26,7 +28,7 @@ public class ExtentTestManager {
return startTest(testName, "");
}
- public static synchronized ExtentTest startTest(String testName, String desc) {
+ private static synchronized ExtentTest startTest(String testName, String desc) {
ExtentTest test = extent.createTest(testName, desc);
extentTestMap.put(Thread.currentThread().getId(), test);
return test;
diff --git a/src/main/java/org/onap/dcae/ci/report/Report.java b/src/main/java/org/onap/dcae/ci/report/Report.java
index bd74d49..02632c5 100644
--- a/src/main/java/org/onap/dcae/ci/report/Report.java
+++ b/src/main/java/org/onap/dcae/ci/report/Report.java
@@ -5,8 +5,6 @@ import com.aventstack.extentreports.Status;
import com.aventstack.extentreports.markuputils.ExtentColor;
import com.aventstack.extentreports.markuputils.Markup;
import com.aventstack.extentreports.markuputils.MarkupHelper;
-import org.onap.dcae.ci.report.ExtentManager;
-import org.onap.dcae.ci.report.ExtentTestManager;
import org.onap.dcae.ci.utilities.SetupReport;
import org.testng.ITestResult;
diff --git a/src/main/java/org/onap/dcae/ci/utilities/BaseRestUtils.java b/src/main/java/org/onap/dcae/ci/utilities/BaseRestUtils.java
index def25fd..1246d71 100644
--- a/src/main/java/org/onap/dcae/ci/utilities/BaseRestUtils.java
+++ b/src/main/java/org/onap/dcae/ci/utilities/BaseRestUtils.java
@@ -13,19 +13,19 @@ public class BaseRestUtils {
protected static final String acceptHeaderData = "application/json";
protected static final String contentTypeHeaderData = "application/json";
- public BaseRestUtils() {
+ BaseRestUtils() {
}
- protected static String getApiUrl(String path) {
+ static String getApiUrl(String path) {
Configuration configuration = SetupReport.getConfiguration();
- return String.format("%s:%s/sdc2/rest/v1/catalog/%s", configuration.getBeHost(), configuration.getBePort(), path);
+ return String.format("%s:%s/sdc2/rest/v1/catalog/%s", configuration.getSdcBeHost(), configuration.getSdcBePort(), path);
}
- protected static Map<String, String> prepareHeadersMap(String userId) {
+ private static Map<String, String> prepareHeadersMap(String userId) {
return prepareHeadersMap(userId, acceptHeaderData);
}
- protected static Map<String, String> prepareHeadersMap(String userId, String accept) {
+ private static Map<String, String> prepareHeadersMap(String userId, String accept) {
Map<String, String> headersMap = new HashMap<>();
headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
@@ -41,7 +41,7 @@ public class BaseRestUtils {
return headersMap;
}
- protected static RestResponse sendGet(String url, String userId) throws IOException {
+ static RestResponse sendGet(String url, String userId) throws IOException {
return sendGet(url, userId, (Map) null);
}
@@ -52,45 +52,41 @@ public class BaseRestUtils {
}
HttpRequest http = new HttpRequest();
- RestResponse getResourceResponse = http.httpSendGet(url, headersMap);
- return getResourceResponse;
+ return http.httpSendGet(url, headersMap);
}
- protected static RestResponse sendPut(String url, String userBodyJson, String userId, String cont) throws IOException {
+ static RestResponse sendPut(String url, String userBodyJson, String userId, String cont) throws IOException {
Map<String, String> headersMap = prepareHeadersMap(userId, cont);
HttpRequest http = new HttpRequest();
- RestResponse updateResourceResponse = http.httpSendByMethod(url, "PUT", userBodyJson, headersMap);
- return updateResourceResponse;
+ return http.httpSendByMethod(url, "PUT", userBodyJson, headersMap);
}
- public static RestResponse sendPost(String url, String userBodyJson, String userId, String accept) throws IOException {
+ static RestResponse sendPost(String url, String userBodyJson, String userId, String accept) throws IOException {
return sendPost(url, userBodyJson, userId, accept, (Map) null);
}
- protected static RestResponse sendPost(String url, String userBodyJson, String userId, String accept, Map<String, String> additionalHeaders) throws IOException {
+ private static RestResponse sendPost(String url, String userBodyJson, String userId, String accept, Map<String, String> additionalHeaders) throws IOException {
Map<String, String> headersMap = prepareHeadersMap(userId, accept);
if (additionalHeaders != null) {
headersMap.putAll(additionalHeaders);
}
HttpRequest http = new HttpRequest();
- RestResponse postResourceResponse = http.httpSendPost(url, userBodyJson, headersMap);
- return postResourceResponse;
+ return http.httpSendPost(url, userBodyJson, headersMap);
}
- protected static RestResponse sendDelete(String url, String userId) throws IOException {
+ static RestResponse sendDelete(String url, String userId) throws IOException {
return sendDelete(url, userId, (Map) null);
}
- protected static RestResponse sendDelete(String url, String userId, Map<String, String> additionalHeaders) throws IOException {
+ private static RestResponse sendDelete(String url, String userId, Map<String, String> additionalHeaders) throws IOException {
Map<String, String> headersMap = prepareHeadersMap(userId);
if (additionalHeaders != null) {
headersMap.putAll(additionalHeaders);
}
HttpRequest http = new HttpRequest();
- RestResponse deleteResourceResponse = http.httpSendDelete(url, headersMap);
- return deleteResourceResponse;
+ return http.httpSendDelete(url, headersMap);
}
}
diff --git a/src/main/java/org/onap/dcae/ci/utilities/DcaeRestClient.java b/src/main/java/org/onap/dcae/ci/utilities/DcaeRestClient.java
index 1e45829..687a256 100644
--- a/src/main/java/org/onap/dcae/ci/utilities/DcaeRestClient.java
+++ b/src/main/java/org/onap/dcae/ci/utilities/DcaeRestClient.java
@@ -1,17 +1,17 @@
package org.onap.dcae.ci.utilities;
-
import com.aventstack.extentreports.Status;
import com.google.common.net.UrlEscapers;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
+import org.apache.commons.collections4.map.SingletonMap;
import org.json.simple.JSONObject;
import org.onap.dcae.ci.config.Configuration;
import org.onap.dcae.ci.entities.RestResponse;
+import org.onap.dcae.ci.enums.HttpHeaderEnum;
import org.onap.dcae.ci.report.Report;
import org.onap.sdc.dcae.composition.restmodels.CreateVFCMTRequest;
-
import java.io.IOException;
public class DcaeRestClient extends BaseRestUtils {
@@ -20,6 +20,7 @@ public class DcaeRestClient extends BaseRestUtils {
private static String designer2UserId = "me0009";
private static String adminDefaultId = "jh0003";
private static String testerDefaultId = "jm0007";
+ private static Configuration configuration = ConfigurationReader.getConfiguration();
public static String getDefaultUserId() {
return designerDefaultId;
@@ -38,7 +39,6 @@ public class DcaeRestClient extends BaseRestUtils {
}
protected static String getApiUrl(String path) {
- Configuration configuration = ConfigurationReader.getConfiguration();
String dcaeBePort = configuration.getDcaeBePort();
String dcaeBeHost = configuration.getDcaeBeHost();
@@ -137,12 +137,10 @@ public class DcaeRestClient extends BaseRestUtils {
return sendGet(getApiUrl("/resource/"+ componentId), designerDefaultId);
}
- public static RestResponse getElements() throws IOException{
- return sendGet(getApiUrl("/elements"), designerDefaultId);
- }
- public static RestResponse getItem(String element) throws IOException{
- return sendGet(getApiUrl("/"+ element +"/elements"), designerDefaultId);
- }
+ public static RestResponse getCatalog() throws IOException{
+ return sendGet(getApiUrl("/catalog"), designerDefaultId);
+ }
+
public static RestResponse getItemModel(String elementId) throws IOException{
return sendGet(getApiUrl("/"+ elementId +"/model"), designerDefaultId);
}
@@ -219,15 +217,52 @@ public class DcaeRestClient extends BaseRestUtils {
return sendDelete(getApiUrl(String.format("/rule-editor/rule/%s/%s/%s/%s/%s", vfcmtUid, dcaeCompName, nid, configParam, ruleUid)), designerDefaultId);
}
- public static RestResponse translateRules(String vfcmtUid, String dcaeCompName, String nid, String configParam, String flowType) throws IOException {
- return sendGet(getApiUrl(String.format("/rule-editor/rule/translate/%s/%s/%s/%s?flowType=%s", vfcmtUid, dcaeCompName, nid, configParam, flowType)), designerDefaultId);
- }
+ public static RestResponse deleteGroupOfRules(String vfcmtUid, String dcaeCompName, String nid, String configParam, String groupId) throws IOException {
+ return sendDelete(getApiUrl(String.format("/rule-editor/group/%s/%s/%s/%s/%s", vfcmtUid, dcaeCompName, nid, configParam, groupId)), designerDefaultId);
+ }
+
+ public static RestResponse translateRules(String request) throws IOException {
+ return sendPost(getApiUrl("/rule-editor/rule/translate"), request, designerDefaultId, "application/json");
+ }
public static RestResponse getExistingRuleTargets(String vfcmtUuid, String dcaeCompName, String nid) throws IOException {
String url = getApiUrl(String.format("/rule-editor/getExistingRuleTargets/%s/%s/%s", vfcmtUuid, dcaeCompName, nid));
return sendGet(url, designerDefaultId);
}
+ public static RestResponse exportRules(String vfcmtUuid, String dcaeCompName, String nid, String configParam) throws IOException {
+ String url = getApiUrl(String.format("/rule-editor/export/%s/%s/%s/%s", vfcmtUuid, dcaeCompName, nid, configParam));
+ return sendGet(url, designerDefaultId, new SingletonMap<>(HttpHeaderEnum.ACCEPT.getValue(), "application/octet-stream"));
+ }
+
+ public static RestResponse importRules(String vfcmtUuid, String dcaeCompName, String nid, String configParam, String request) throws IOException {
+ String url = getApiUrl(String.format("/rule-editor/import/%s/%s/%s/%s", vfcmtUuid, dcaeCompName, nid, configParam));
+ return sendPost(url, request, designerDefaultId, "application/json");
+ }
+
+ public static RestResponse getLatestMcUuid(String contextType, String serviceUuid, String vfiName, String vfcmtUuid) throws IOException {
+ return sendGet(getApiUrl(String.format("/%s/%s/%s/%s/getLatestMcUuid", contextType, serviceUuid, UrlEscapers.urlFragmentEscaper().escape(vfiName), vfcmtUuid)), designerDefaultId);
+ }
+
+ // Configuration
+
+ public static RestResponse getConfiguredFlowTypes() throws IOException {
+ return sendGet(getApiUrl("/conf/composition"), designerDefaultId);
+ }
+
+ public static RestResponse getConfiguredPhasesByFlowType(String flowType) throws IOException {
+ return sendGet(getApiUrl(String.format("/conf/getPhases/%s", flowType)), designerDefaultId);
+ }
+
+ // TOSCA LAB //
+
+ public static RestResponse getToscaLabHealthCheck() throws IOException {
+ return new HttpRequest().httpSendGet(configuration.getToscaLabUrl().concat("/healthcheck"), null);
+ }
+
+ public static RestResponse translateModelToBlueprint(String payload) throws IOException {
+ return new HttpRequest().httpSendPost(configuration.getToscaLabUrl().concat("/translate"), payload);
+ }
private static JSONObject newVfcmtJSON(String name, String description) {
JSONObject json = new JSONObject();
diff --git a/src/main/java/org/onap/dcae/ci/utilities/DcaeTestConstants.java b/src/main/java/org/onap/dcae/ci/utilities/DcaeTestConstants.java
index 6bca647..a5538dc 100644
--- a/src/main/java/org/onap/dcae/ci/utilities/DcaeTestConstants.java
+++ b/src/main/java/org/onap/dcae/ci/utilities/DcaeTestConstants.java
@@ -13,7 +13,6 @@ public class DcaeTestConstants {
public static final String NOT_CERTIFIED_CHECKIN = "NOT_CERTIFIED_CHECKIN";
public static final String CONFLICT = "Conflict";
public static final String CERTIFIED = "CERTIFIED";
-
}
}
}
diff --git a/src/main/java/org/onap/dcae/ci/utilities/DcaeUtil.java b/src/main/java/org/onap/dcae/ci/utilities/DcaeUtil.java
index 5d6eff4..c010c26 100644
--- a/src/main/java/org/onap/dcae/ci/utilities/DcaeUtil.java
+++ b/src/main/java/org/onap/dcae/ci/utilities/DcaeUtil.java
@@ -1,146 +1,40 @@
package org.onap.dcae.ci.utilities;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import com.google.gson.*;
-import org.apache.commons.lang3.RandomStringUtils;
-
+import com.aventstack.extentreports.Status;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.json.simple.parser.ParseException;
import org.onap.dcae.ci.entities.RestResponse;
-import org.onap.dcae.ci.entities.composition.items.DcaeComponents;
import org.onap.dcae.ci.report.Report;
-import org.onap.sdc.dcae.composition.util.DcaeBeConstants;
-import org.testng.Assert;
+import org.onap.sdc.dcae.composition.restmodels.canvas.DcaeComponentCatalog;
+import org.onap.sdc.dcae.composition.restmodels.sdc.Resource;
-import org.onap.sdc.dcae.composition.services.Resource;
-import org.onap.sdc.dcae.composition.services.Service;
-import org.onap.sdc.dcae.composition.services.ThinService;
-import org.onap.sdc.dcae.composition.vfcmt.Vfcmt;
-import com.aventstack.extentreports.Status;
+import java.io.IOException;
+import java.util.List;
+import java.util.stream.Collectors;
public class DcaeUtil {
public static Gson gson = new Gson();
- public static class CatalogReources {
- public static Vfcmt[] getAllReourcesFromAsdc() throws IOException{
- RestResponse allResources = DcaeRestClient.getAllVfcmts();
- return gson.fromJson(allResources.getResponse(), Vfcmt[].class);
- }
-
- public static Vfcmt getResourceByName(String resName) throws IOException{
- Vfcmt[] vfcmts = getAllReourcesFromAsdc();
- List<Vfcmt> vfcmtsStr = Arrays.stream(vfcmts).
- filter(item -> item.getName().equals(resName)).
- collect(Collectors.toList());
-
- return vfcmtsStr.get(0);
- }
-
- public static Vfcmt getOneResourceFromList(int index) throws IOException{
- Vfcmt[] vfcmtList = getAllReourcesFromAsdc();
- return vfcmtList[index];
- }
-
- public static String getComponentID(int index) throws IOException{
- Vfcmt vfcmt = getOneResourceFromList(0);
- return vfcmt.getUuid();
- }
-
- public static Resource createNewVfcmtObject() throws IOException{
- Resource res = new Resource();
- res.setResourceInstanceName("LiavNewVFCMT" + RandomStringUtils.randomAlphanumeric(20));
- res.setDescription("This is a test VFCMT");
- return res;
- }
-
- public static Vfcmt notCheckoutVFCMT() throws IOException{ /* TODO: remove this function and use instead in DcaeEntityClient.getCheckedoutVfcmt() */
- Vfcmt[] vfcmtList = getAllReourcesFromAsdc();
- List<Vfcmt> vfcmtsStr = Arrays.stream(vfcmtList).
- filter(item -> (item.getLifecycleState().equals(DcaeTestConstants.Sdc.State.NOT_CERTIFIED_CHECKOUT) == false)).
- collect(Collectors.toList());
-
- return vfcmtsStr.get(0);
- }
-
- public static Vfcmt vfcmtNotUserOwner(String user) throws IOException{
- Vfcmt[] vfcmtList = getAllReourcesFromAsdc();
- List<Vfcmt> vfcmtsStr = Arrays.stream(vfcmtList)
- .filter(item -> (item.getLastUpdaterUserId().equals(user) == false))
- .collect(Collectors.toList());
-
- return vfcmtsStr.get(0);
- }
-
- }
-
- public static class Services{
- public static ThinService[] getServices(String VFCMTId, String userId) throws IOException{
- RestResponse services = null;
- try{
- services = DcaeRestClient.getServices(VFCMTId, userId);
- }catch(Exception e){
- System.err.println("Exception occurred while trying to fetch all resources from SDC: "+e);
- return null;
- }
- Assert.assertTrue(services.getStatusCode().intValue() == 200);
- String response = services.getResponse();
- ThinService[] serviceList = gson.fromJson(response, ThinService[].class);
- return serviceList.length > 0 ? serviceList : null;
- }
-
- public static ThinService getOneService(String VFCMTId,int index, String userId) throws IOException {
- ThinService[] services = getServices(VFCMTId, userId);
- return services[index];
- }
-
-
- public static List<Resource> getVfListInstance(ThinService thinService) throws IOException {
- RestResponse serviceInstancRes = null;
- try{
- serviceInstancRes = DcaeRestClient.getServicesInstance(thinService.getUuid());
- }catch(Exception e){
- System.err.println("Exception occurred while trying to fetch List of VF instances from SDC service ("+thinService+"). Exception: "+e);
- return null;
- }
- Assert.assertTrue(serviceInstancRes.getStatusCode().intValue() == 200);
- String serviceInstancList = serviceInstancRes.getResponse();
- Service service = gson.fromJson(serviceInstancList, Service.class);
- return service.getResources();
- }
-
- public static Resource getOneVfInstance(ThinService thinService,int index) throws IOException {
- List<Resource> resources = getVfListInstance(thinService);
- return resources.get(index);
- }
-
- }
-
-
public static class SdcElementsModelType{
- public static RestResponse getMsElements() throws IOException{
- return DcaeRestClient.getItem(DcaeTestConstants.Composition.Microservice);
+ public static DcaeComponentCatalog.SubCategoryFolder getMsElements() throws IOException{
+ DcaeComponentCatalog getCatalogResponse = gson.fromJson(DcaeRestClient.getCatalog().getResponse(), DcaeComponentCatalog.class);
+ return getCatalogResponse.getElements().stream().filter(p -> DcaeTestConstants.Composition.Microservice.equals(p.getItemId())).findAny().get();
}
-
-
public static JsonArray getSNMPModelItemFromSdc() throws Exception {
- RestResponse resMsElements = getMsElements();
- JsonParser jsonParser = new JsonParser();
- JsonObject responseJson = (JsonObject)jsonParser.parse(resMsElements.getResponse());
- JsonArray itemJsonArray = responseJson.get("data").getAsJsonObject().get("element").getAsJsonObject().get("items").getAsJsonArray();
- Report.logDebug("DCAE Components items", itemJsonArray);
- Service[] services = gson.fromJson(itemJsonArray, Service[].class);
+
+ List<Resource> itemList = getMsElements().getItems();
+ Report.logDebug("DCAE Components items", itemList);
Report.log(Status.DEBUG, "Trying to find a certified VF which its name starts with supplement/map/enrich");
- List<String> collectIds = Arrays.stream(services)
- .filter(x -> DcaeBeConstants.LifecycleStateEnum.CERTIFIED == DcaeBeConstants.LifecycleStateEnum.valueOf(x.getLifecycleState())&& !x.getModels().isEmpty())
+ List<String> collectIds = itemList.stream()
.filter(x -> x.getName().toLowerCase().startsWith("supplement") || x.getName().toLowerCase().startsWith("map") || x.getName().toLowerCase().startsWith("enrich"))
- .map(Service::getUuid)
+ .map(Resource::getUuid)
.collect(Collectors.toList());
if(collectIds.isEmpty()) {
Report.log(Status.WARNING, "Could not find any SNMP DCAE Component");
@@ -160,14 +54,8 @@ public class DcaeUtil {
}
public static String getItemUuid(int itemNumber) throws IOException{
- DcaeComponents dcaeComponents = getDcaeComponents();
- return dcaeComponents.getData().getElement().getItems().get(itemNumber).getUuid();
- }
-
- public static DcaeComponents getDcaeComponents() throws IOException{
- RestResponse services = getMsElements();
- String response = services.getResponse();
- return gson.fromJson(response, DcaeComponents.class);
+ DcaeComponentCatalog.SubCategoryFolder dcaeComponents = getMsElements();
+ return dcaeComponents.getItems().get(itemNumber).getUuid();
}
}
diff --git a/src/main/java/org/onap/dcae/ci/utilities/HttpRequest.java b/src/main/java/org/onap/dcae/ci/utilities/HttpRequest.java
index 3b58109..5b1eff5 100644
--- a/src/main/java/org/onap/dcae/ci/utilities/HttpRequest.java
+++ b/src/main/java/org/onap/dcae/ci/utilities/HttpRequest.java
@@ -5,10 +5,7 @@ import org.onap.dcae.ci.entities.RestResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
@@ -156,7 +153,6 @@ public class HttpRequest {
}
-
public RestResponse httpSendPost(String url, String body, Map<String, String> headers) throws IOException {
return httpSendPost(url, body, headers, "POST");
}
@@ -236,6 +232,59 @@ public class HttpRequest {
}
+ public RestResponse httpSendPost(String url, String body) throws IOException {
+
+ RestResponse restResponse = new RestResponse();
+ URL obj = new URL(url);
+ HttpURLConnection con = (HttpURLConnection) obj.openConnection();
+
+ // Send post request
+ if (body != null) {
+ con.setDoOutput(true);
+ DataOutputStream wr = new DataOutputStream(con.getOutputStream());
+ wr.writeBytes(body);
+ wr.flush();
+ wr.close();
+ }
+ int responseCode = con.getResponseCode();
+ StringBuilder response = new StringBuilder();
+
+ try {
+ response.append(IOUtils.toString(con.getInputStream(), "UTF-8"));
+ } catch (Exception e) {
+ logger.debug("response body is null");
+ }
+
+ String result;
+
+ try {
+
+ result = IOUtils.toString(con.getErrorStream());
+ response.append(result);
+
+ } catch (Exception e2) {
+ result = null;
+ }
+ logger.debug("Response body: {}",response);
+
+ // print result
+
+ restResponse.setStatusCode(responseCode);
+
+ if (response != null) {
+ restResponse.setResponse(response.toString());
+ }
+
+ Map<String, List<String>> headerFields = con.getHeaderFields();
+ restResponse.setHeaderFields(headerFields);
+ String responseMessage = con.getResponseMessage();
+ restResponse.setResponseMessage(responseMessage);
+
+ con.disconnect();
+ return restResponse;
+
+ }
+
public RestResponse httpSendDelete(String url, Map<String, String> headers) throws IOException {
diff --git a/src/main/java/org/onap/dcae/ci/utilities/SdcInternalApiClient.java b/src/main/java/org/onap/dcae/ci/utilities/SdcInternalApiClient.java
index 3010de0..acf7fb7 100644
--- a/src/main/java/org/onap/dcae/ci/utilities/SdcInternalApiClient.java
+++ b/src/main/java/org/onap/dcae/ci/utilities/SdcInternalApiClient.java
@@ -66,13 +66,11 @@ public class SdcInternalApiClient extends BaseRestUtils {
return new Vfi(DcaeUtil.getValueFromJsonResponse(createResourceInstance.getResponse(), "name"), service);
}
-
public static RestResponse changeResourceLifeCycleState(String assetUniqueId, String lifeCycleOperation) throws IOException {
String url = getApiUrl(String.format("resources/%s/lifecycleState/%s", assetUniqueId, lifeCycleOperation));
return sendPost(url, "{\"userRemarks\":\"Ci lifecycle operation\"}", defaultUserId, acceptHeaderData);
}
-
// DELETE - Clean up //
public static RestResponse deleteAssetFromSdc(String context, String uniqueId) throws IOException {
@@ -82,22 +80,21 @@ public class SdcInternalApiClient extends BaseRestUtils {
public static RestResponse deleteMarkedResources() throws IOException {
- String url = String.format("%s:%s/sdc2/rest/v1/inactiveComponents/resource", configuration.getBeHost(), configuration.getBePort());
+ String url = String.format("%s:%s/sdc2/rest/v1/inactiveComponents/resource", configuration.getSdcBeHost(), configuration.getSdcBePort());
return sendDelete(url, adminUserId);
}
public static RestResponse deleteMarkedServices() throws IOException {
- String url = String.format("%s:%s/sdc2/rest/v1/inactiveComponents/service", configuration.getBeHost(), configuration.getBePort());
+ String url = String.format("%s:%s/sdc2/rest/v1/inactiveComponents/service", configuration.getSdcBeHost(), configuration.getSdcBePort());
return sendDelete(url, adminUserId);
}
public static Map<String, List<SdcComponent>> getAssetsByUser(String userId) throws IOException {
- String url = String.format("%s:%s/sdc2/rest/v1/followed", configuration.getBeHost(), configuration.getBePort());
+ String url = String.format("%s:%s/sdc2/rest/v1/followed", configuration.getSdcBeHost(), configuration.getSdcBePort());
RestResponse restResponse = sendGet(url, userId);
return 200 == restResponse.getStatusCode() ? gson.fromJson(restResponse.getResponse(), new TypeToken<Map<String, List<SdcComponent>>>(){}.getType()) : new HashMap<>();
}
-
public static SdcComponentMetadata getAssetMetadata(String context, String uniqueId, String userId) throws IOException {
String url = getApiUrl(String.format("%s/%s/filteredDataByParams?include=metadata", context, uniqueId));
RestResponse restResponse = sendGet(url, userId);
diff --git a/src/main/resources/conf/conf.yaml b/src/main/resources/conf/conf.yaml
index 41a7d82..c3862e2 100644
--- a/src/main/resources/conf/conf.yaml
+++ b/src/main/resources/conf/conf.yaml
@@ -1,19 +1,9 @@
dcaeBeHost: http://localhost
-dcaeBePort: 8080
-#dcaeBePort: 8446 --> [in local PC testing] 8080 --> [in remote CI]
-beHost: https://zldcrdm2sdc4cbe01.3f1a87.rdm2.tci.att.com
-bePort: 8443
-feHost: 127.0.0.1
-fePort: 8181
-ruleEditorUrl: http://localhost:4200
-#apiPath: "/dcae" --> [in local PC testing]
+dcaeBePort: 8446
+sdcBeHost: https://zldcrdm2sdc4cbe01.3f1a87.rdm2.tci.att.com
+sdcBePort: 8443
apiPath: ""
url: https://www.e-access.att.com/DCAE-CIO1/sdc1/portal
-remoteTestingMachineIP: null
-remoteTestingMachinePort: 88
-remoteTesting: false
-browser: null
-systemUnderDebug: null
reportDBhost: null
reportDBport: 88
captureTraffic: false
@@ -25,4 +15,5 @@ numOfAttemptsToRefresh: 22
rerun: false
windowsDownloadDirectory: null
screenshotFolder: ./ExtentReport/screenshots/
-harFilesFolder: ./ExtentReport/har_files/ \ No newline at end of file
+harFilesFolder: ./ExtentReport/har_files/
+toscaLabUrl: http://localhost:8080 \ No newline at end of file
diff --git a/src/main/resources/conf/dcae_tests_conf.yaml.erb b/src/main/resources/conf/dcae_tests_conf.yaml.erb
index 46784ba..1dd9cee 100644
--- a/src/main/resources/conf/dcae_tests_conf.yaml.erb
+++ b/src/main/resources/conf/dcae_tests_conf.yaml.erb
@@ -1,16 +1,9 @@
dcaeBeHost: <%= @protocol %>://<%= @catalogbe_ip %>
dcaeBePort: <%= @catalogbe_port %>
-beHost: <%= @protocol %>://<%= @catalogbe_ip %>
-bePort: <%= @catalogbe_port %>
-feHost: <%= @protocol %>://<%= @catalogfe_ip %>
-fePort: <%= @catalogfe_port %>
+sdcBeHost: <%= @protocol %>://<%= @catalogbe_ip %>
+sdcBePort: 8443
apiPath: "/dcae"
url: <%= @url %>
-remoteTestingMachineIP: null
-remoteTestingMachinePort: 88
-remoteTesting: false
-browser: null
-systemUnderDebug: null
reportDBhost: null
reportDBport: 88
captureTraffic: false
@@ -23,6 +16,4 @@ rerun: false
windowsDownloadDirectory: null
screenshotFolder: ./ExtentReport/screenshots/
harFilesFolder: ./ExtentReport/har_files/
-ruleEditorUrl: <%= @url %>/../../rule_engine
-
-
+toscaLabUrl: http://<%= @catalogbe_ip %>:8085 \ No newline at end of file
diff --git a/src/main/resources/scripts/run.sh b/src/main/resources/scripts/run.sh
index 158f497..48d6935 100644
--- a/src/main/resources/scripts/run.sh
+++ b/src/main/resources/scripts/run.sh
@@ -35,9 +35,9 @@ fi
LOGS_PROP_FILE=file:${FULL_PATH}/conf/log4j.properties
CONF_FILE=${FULL_PATH}/conf/conf.yaml
CREDENTIALS_FILE=${FULL_PATH}/conf/credentials.yaml
+# # # # # MainClass=org.onap.dcae.ci.run.RunTestSuite
MainClass=org.onap.dcae.ci.run.RunTestSuite
-
cmd="java -Dconfig.resource=${CONF_FILE} -Dcredentials.file=${CREDENTIALS_FILE} -Dlog4j.configuration=${LOGS_PROP_FILE} -DtestSuite=${SUITE_FILE} -cp $JAR_FILE ${MainClass} &"
$cmd
diff --git a/src/main/resources/testSuite/testSuite.xml b/src/main/resources/testSuite/testSuite.xml
index da131eb..982193c 100644
--- a/src/main/resources/testSuite/testSuite.xml
+++ b/src/main/resources/testSuite/testSuite.xml
@@ -29,6 +29,8 @@
<class name="org.onap.dcae.ci.api.tests.vfcmt.GetVfcmtsForMigration"></class>
<class name="org.onap.dcae.ci.api.tests.vfcmt.GetAllMonitoringTemplateVfcmts"></class>
<class name="org.onap.dcae.ci.api.tests.deploy_tool.DeployToolTest"></class>
+ <class name="org.onap.dcae.ci.api.tests.blueprint.ToscaLabApiTests"></class>
+ <class name="org.onap.dcae.ci.api.tests.configuration.ConfigurationControllerApiTest"></class>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->