[BUG] Make failed async task report failure on Kafka topic
[cps.git] / cps-ncmp-rest / src / test / groovy / org / onap / cps / ncmp / rest / executor / CpsNcmpTaskExecutorSpec.groovy
index 010eda9..4c8c40f 100644 (file)
@@ -33,6 +33,7 @@ class CpsNcmpTaskExecutorSpec extends Specification {
     def objectUnderTest = new CpsNcmpTaskExecutor()
     def logger = Spy(ListAppender<ILoggingEvent>)
     def enoughTime = 100
+    def notEnoughTime = 10
 
     void setup() {
         ((Logger) LoggerFactory.getLogger(CpsNcmpTaskExecutor.class)).addAppender(logger)
@@ -67,6 +68,18 @@ class CpsNcmpTaskExecutorSpec extends Specification {
             assert loggingEvent.formattedMessage.contains('original exception message')
     }
 
+    def 'Task times out.'() {
+        when: 'task is executed without enough time to complete'
+            objectUnderTest.executeTask(taskSupplierForLongRunningTask(), notEnoughTime)
+        then: 'an event is logged with level ERROR'
+            new PollingConditions().within(1) {
+                def loggingEvent = getLoggingEvent()
+                assert loggingEvent.level == Level.ERROR
+            }
+        and: 'a timeout error message is logged'
+            assert loggingEvent.formattedMessage.contains('java.util.concurrent.TimeoutException')
+    }
+
     def taskSupplier() {
         return () -> 'hello world'
     }
@@ -75,6 +88,10 @@ class CpsNcmpTaskExecutorSpec extends Specification {
         return () -> { throw new RuntimeException('original exception message') }
     }
 
+    def taskSupplierForLongRunningTask() {
+        return () -> { sleep(enoughTime) }
+    }
+
     def getLoggingEvent() {
         return logger.list[0]
     }