Merge "Use PollingConditions to improve intermittent test failure"
[cps.git] / cps-ncmp-service / src / test / groovy / org / onap / cps / ncmp / init / AbstractModelLoaderSpec.groovy
index 28eae8d..a9f2466 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  ============LICENSE_START=======================================================
- *  Copyright (C) 2023 Nordix Foundation
+ *  Copyright (C) 2023-2024 Nordix Foundation
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -23,7 +23,8 @@ package org.onap.cps.ncmp.init
 import ch.qos.logback.classic.Level
 import ch.qos.logback.classic.Logger
 import ch.qos.logback.core.read.ListAppender
-import org.onap.cps.api.CpsAdminService
+import org.onap.cps.api.CpsDataspaceService
+import org.onap.cps.api.CpsAnchorService
 import org.onap.cps.api.CpsDataService
 import org.onap.cps.api.CpsModuleService
 import org.onap.cps.ncmp.api.impl.exception.NcmpStartUpException
@@ -37,10 +38,11 @@ import spock.lang.Specification
 
 class AbstractModelLoaderSpec extends Specification {
 
-    def mockCpsAdminService = Mock(CpsAdminService)
+    def mockCpsDataspaceService = Mock(CpsDataspaceService)
     def mockCpsModuleService = Mock(CpsModuleService)
     def mockCpsDataService = Mock(CpsDataService)
-    def objectUnderTest = Spy(new TestModelLoader(mockCpsAdminService, mockCpsModuleService, mockCpsDataService))
+    def mockCpsAnchorService = Mock(CpsAnchorService)
+    def objectUnderTest = Spy(new TestModelLoader(mockCpsDataspaceService, mockCpsModuleService, mockCpsAnchorService, mockCpsDataService))
 
     def applicationContext = new AnnotationConfigApplicationContext()
 
@@ -49,7 +51,7 @@ class AbstractModelLoaderSpec extends Specification {
     def loggingListAppender
 
     void setup() {
-        yangResourceToContentMap = objectUnderTest.createYangResourceToContentMap('subscription.yang')
+        yangResourceToContentMap = objectUnderTest.createYangResourcesToContentMap('cm-data-subscriptions@2023-11-13.yang')
         logger.setLevel(Level.DEBUG)
         loggingListAppender = new ListAppender()
         logger.addAppender(loggingListAppender)
@@ -58,7 +60,7 @@ class AbstractModelLoaderSpec extends Specification {
     }
 
     void cleanup() {
-        ((Logger) LoggerFactory.getLogger(SubscriptionModelLoader.class)).detachAndStopAllAppenders()
+        ((Logger) LoggerFactory.getLogger(CmDataSubscriptionModelLoader.class)).detachAndStopAllAppenders()
         applicationContext.close()
     }
 
@@ -89,7 +91,7 @@ class AbstractModelLoaderSpec extends Specification {
 
     def 'Create schema set.'() {
         when: 'creating a schema set'
-            objectUnderTest.createSchemaSet('some dataspace','new name','subscription.yang')
+            objectUnderTest.createSchemaSet('some dataspace','new name','cm-data-subscriptions@2023-11-13.yang')
         then: 'the operation is delegated to the admin service'
             1 * mockCpsModuleService.createSchemaSet('some dataspace','new name',_)
     }
@@ -98,7 +100,7 @@ class AbstractModelLoaderSpec extends Specification {
         given: 'the module service throws an already defined exception'
             mockCpsModuleService.createSchemaSet(*_) >>  { throw AlreadyDefinedException.forSchemaSet('name','context',null) }
         when: 'attempt to create a schema set'
-            objectUnderTest.createSchemaSet('some dataspace','new name','subscription.yang')
+            objectUnderTest.createSchemaSet('some dataspace','new name','cm-data-subscriptions@2023-11-13.yang')
         then: 'the exception is ignored i.e. no exception thrown up'
             noExceptionThrown()
         and: 'the exception message is logged'
@@ -141,12 +143,12 @@ class AbstractModelLoaderSpec extends Specification {
         when: 'creating an anchor'
             objectUnderTest.createAnchor('some dataspace','some schema set','new name')
         then: 'the operation is delegated to the admin service'
-            1 * mockCpsAdminService.createAnchor('some dataspace','some schema set', 'new name')
+            1 * mockCpsAnchorService.createAnchor('some dataspace','some schema set', 'new name')
     }
 
     def 'Create anchor with already defined exception.'() {
         given: 'the admin service throws an already defined exception'
-            mockCpsAdminService.createAnchor(*_)>>  { throw AlreadyDefinedException.forAnchor('name','context',null) }
+            mockCpsAnchorService.createAnchor(*_)>>  { throw AlreadyDefinedException.forAnchor('name','context',null) }
         when: 'attempt to create anchor'
             objectUnderTest.createAnchor('some dataspace','some schema set','new name')
         then: 'the exception is ignored i.e. no exception thrown up'
@@ -158,7 +160,7 @@ class AbstractModelLoaderSpec extends Specification {
 
     def 'Create anchor with any other exception.'() {
         given: 'the admin service throws a exception'
-            mockCpsAdminService.createAnchor(*_)>>  { throw new RuntimeException('test message') }
+            mockCpsAnchorService.createAnchor(*_)>>  { throw new RuntimeException('test message') }
         when: 'attempt to create anchor'
             objectUnderTest.createAnchor('some dataspace','some schema set','new name')
         then: 'a startup exception with correct message and details is thrown'
@@ -201,12 +203,12 @@ class AbstractModelLoaderSpec extends Specification {
         when: 'a schema set for an anchor is updated'
             objectUnderTest.updateAnchorSchemaSet('some dataspace', 'anchor', 'new schema set')
         then: 'the request is delegated to the admin service'
-            1 * mockCpsAdminService.updateAnchorSchemaSet('some dataspace', 'anchor', 'new schema set')
+            1 * mockCpsAnchorService.updateAnchorSchemaSet('some dataspace', 'anchor', 'new schema set')
     }
 
     def 'Update anchor schema set with exception.'() {
         given: 'the admin service throws an exception'
-            mockCpsAdminService.updateAnchorSchemaSet(*_) >> { throw new RuntimeException('test message') }
+            mockCpsAnchorService.updateAnchorSchemaSet(*_) >> { throw new RuntimeException('test message') }
         when: 'a schema set for an anchor is updated'
             objectUnderTest.updateAnchorSchemaSet('some dataspace', 'anchor', 'new schema set')
         then: 'a startup exception with correct message and details is thrown'
@@ -217,10 +219,11 @@ class AbstractModelLoaderSpec extends Specification {
 
     class TestModelLoader extends AbstractModelLoader {
 
-        TestModelLoader(final CpsAdminService cpsAdminService,
+        TestModelLoader(final CpsDataspaceService cpsDataspaceService,
                         final CpsModuleService cpsModuleService,
+                        final CpsAnchorService cpsAnchorService,
                         final CpsDataService cpsDataService) {
-            super(cpsAdminService, cpsModuleService, cpsDataService)
+            super(cpsDataspaceService, cpsModuleService, cpsAnchorService, cpsDataService)
             super.maximumAttemptCount = 2
             super.retryTimeMs = 1
         }