X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=integration-test%2Fsrc%2Ftest%2Fgroovy%2Forg%2Fonap%2Fcps%2Fintegration%2Fbase%2FCpsIntegrationSpecBase.groovy;h=23504e49cd1e9580ac6b5db6e90b6e5e3ea6c332;hb=0fb4ac94a17741b5418416a4f1e1c6e97d94a804;hp=ecf7d67d2d6694cb2ada411dab27a01424dc949b;hpb=fc00c0c590a2885dbf4bbea453124046d93fd1ec;p=cps.git diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy index ecf7d67d2..23504e49c 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy @@ -30,6 +30,10 @@ import org.onap.cps.integration.DatabaseTestContainer import org.onap.cps.ncmp.api.NetworkCmProxyCmHandleQueryService import org.onap.cps.ncmp.api.NetworkCmProxyDataService import org.onap.cps.ncmp.api.NetworkCmProxyQueryService +import org.onap.cps.ncmp.api.impl.inventory.CmHandleState +import org.onap.cps.ncmp.api.impl.inventory.sync.ModuleSyncWatchdog +import org.onap.cps.ncmp.api.models.DmiPluginRegistration +import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle import org.onap.cps.spi.exceptions.DataspaceNotFoundException import org.onap.cps.spi.model.DataNode import org.onap.cps.spi.repository.DataspaceRepository @@ -40,10 +44,17 @@ import org.springframework.boot.autoconfigure.domain.EntityScan import org.springframework.boot.test.context.SpringBootTest import org.springframework.context.annotation.ComponentScan import org.springframework.data.jpa.repository.config.EnableJpaRepositories +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.test.web.client.MockRestServiceServer import org.springframework.web.client.RestTemplate import org.testcontainers.spock.Testcontainers import spock.lang.Shared import spock.lang.Specification +import spock.util.concurrent.PollingConditions + +import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo +import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus @SpringBootTest(classes = [CpsDataspaceService]) @Testcontainers @@ -74,9 +85,6 @@ abstract class CpsIntegrationSpecBase extends Specification { @Autowired SessionManager sessionManager - @Autowired - RestTemplate restTemplate - @Autowired NetworkCmProxyCmHandleQueryService networkCmProxyCmHandleQueryService @@ -86,6 +94,16 @@ abstract class CpsIntegrationSpecBase extends Specification { @Autowired NetworkCmProxyQueryService networkCmProxyQueryService + @Autowired + RestTemplate restTemplate + + @Autowired + ModuleSyncWatchdog moduleSyncWatchdog + + MockRestServiceServer mockDmiServer = null + + static final DMI_URL = 'http://mock-dmi-server' + def static GENERAL_TEST_DATASPACE = 'generalTestDataspace' def static BOOKSTORE_SCHEMA_SET = 'bookstoreSchemaSet' @@ -98,8 +116,19 @@ abstract class CpsIntegrationSpecBase extends Specification { createStandardBookStoreSchemaSet(GENERAL_TEST_DATASPACE) initialized = true } + mockDmiServer = MockRestServiceServer.createServer(restTemplate) + } + + def cleanup() { + mockDmiServer.reset() } + def static readResourceDataFile(filename) { + return new File('src/test/resources/data/' + filename).text + } + + // *** CPS Integration Test Utilities *** + def static countDataNodesInTree(DataNode dataNode) { return 1 + countDataNodesInTree(dataNode.getChildDataNodes()) } @@ -112,10 +141,6 @@ abstract class CpsIntegrationSpecBase extends Specification { return nodeCount } - def static readResourceDataFile(filename) { - return new File('src/test/resources/data/' + filename).text - } - def getBookstoreYangResourcesNameToContentMap() { def bookstoreModelFileContent = readResourceDataFile('bookstore/bookstore.yang') def bookstoreTypesFileContent = readResourceDataFile('bookstore/bookstore-types.yang') @@ -158,4 +183,35 @@ abstract class CpsIntegrationSpecBase extends Specification { return '"' + name + '":[' + innerJson + ']' } + // *** NCMP Integration Test Utilities *** + + def registerCmHandle(dmiPlugin, cmHandleId, moduleSetTag, dmiModuleReferencesResponse, dmiModuleResourcesResponse) { + def cmHandleToCreate = new NcmpServiceCmHandle(cmHandleId: cmHandleId, moduleSetTag: moduleSetTag) + networkCmProxyDataService.updateDmiRegistrationAndSyncModule(new DmiPluginRegistration(dmiPlugin: dmiPlugin, createdCmHandles: [cmHandleToCreate])) + mockDmiResponsesForRegistration(dmiPlugin, cmHandleId, dmiModuleReferencesResponse, dmiModuleResourcesResponse) + moduleSyncWatchdog.moduleSyncAdvisedCmHandles() + new PollingConditions().within(3, () -> { + CmHandleState.READY == networkCmProxyDataService.getCmHandleCompositeState(cmHandleId).cmHandleState + }) + mockDmiServer.reset() + } + + def deregisterCmHandle(dmiPlugin, cmHandleId) { + deregisterCmHandles(dmiPlugin, [cmHandleId]) + } + + def deregisterCmHandles(dmiPlugin, cmHandleIds) { + networkCmProxyDataService.updateDmiRegistrationAndSyncModule(new DmiPluginRegistration(dmiPlugin: dmiPlugin, removedCmHandles: cmHandleIds)) + } + + def mockDmiResponsesForRegistration(dmiPlugin, cmHandleId, dmiModuleReferencesResponse, dmiModuleResourcesResponse) { + if (dmiModuleReferencesResponse != null) { + mockDmiServer.expect(requestTo("${dmiPlugin}/dmi/v1/ch/${cmHandleId}/modules")) + .andRespond(withStatus(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(dmiModuleReferencesResponse)) + } + if (dmiModuleResourcesResponse != null) { + mockDmiServer.expect(requestTo("${dmiPlugin}/dmi/v1/ch/${cmHandleId}/moduleResources")) + .andRespond(withStatus(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(dmiModuleResourcesResponse)) + } + } }