diff options
author | Eran (ev672n), Vosk <ev672n@att.com> | 2018-08-06 15:26:20 +0300 |
---|---|---|
committer | Eran (ev672n), Vosk <ev672n@att.com> | 2018-08-06 15:26:20 +0300 |
commit | 98402fb4dc509ce1de0beccb3daefb4c8a755957 (patch) | |
tree | 39de55dd6c4bdcf28a4bee7c323d03e5200e4be6 /src/main | |
parent | aa17bf450180971b442a8b49ae08ba986c44cfb7 (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')
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 --> |