aboutsummaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorputhuparambil.aditya <aditya.puthuparambil@bell.ca>2021-05-06 16:12:44 +0100
committerputhuparambil.aditya <aditya.puthuparambil@bell.ca>2021-05-13 11:20:07 +0100
commitd31d8e1cc167abf7835a1771b5ddc8d78aba9ac6 (patch)
tree056a897594706613f71316e87075a93c7d9d6ab7 /src/test
parent26af9368115f5f7296aa4123f38b4e1c81a40b8d (diff)
Implement service and repository layers for storing temporal data
1. Basic structure created 2. Basic tests added 3. lombok.config included for coverage Issue-ID: CPS-194 Signed-off-by: puthuparambil.aditya <aditya.puthuparambil@bell.ca> Change-Id: Icf23c2e647106f7985dff14d9901806f7c4aa55a
Diffstat (limited to 'src/test')
-rw-r--r--src/test/groovy/org/onap/cps/temporal/controller/QueryControllerSpec.groovy (renamed from src/test/groovy/org/onap/cps/temporal/controller/QuerryControllerSpec.groovy)0
-rw-r--r--src/test/groovy/org/onap/cps/temporal/repository/NetworkDataRepositorySpec.groovy70
-rw-r--r--src/test/groovy/org/onap/cps/temporal/service/NetworkDataServiceImplSpec.groovy45
-rw-r--r--src/test/java/org/onap/cps/temporal/ApplicationTest.java43
-rw-r--r--src/test/java/org/onap/cps/temporal/repository/containers/TimescaleContainer.java (renamed from src/test/java/org/onap/cps/temporal/repository/TimescaleContainer.java)2
-rw-r--r--src/test/resources/application.yml13
6 files changed, 129 insertions, 44 deletions
diff --git a/src/test/groovy/org/onap/cps/temporal/controller/QuerryControllerSpec.groovy b/src/test/groovy/org/onap/cps/temporal/controller/QueryControllerSpec.groovy
index f718bf4..f718bf4 100644
--- a/src/test/groovy/org/onap/cps/temporal/controller/QuerryControllerSpec.groovy
+++ b/src/test/groovy/org/onap/cps/temporal/controller/QueryControllerSpec.groovy
diff --git a/src/test/groovy/org/onap/cps/temporal/repository/NetworkDataRepositorySpec.groovy b/src/test/groovy/org/onap/cps/temporal/repository/NetworkDataRepositorySpec.groovy
new file mode 100644
index 0000000..ec976ee
--- /dev/null
+++ b/src/test/groovy/org/onap/cps/temporal/repository/NetworkDataRepositorySpec.groovy
@@ -0,0 +1,70 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (c) 2021 Bell Canada.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.temporal.repository
+
+
+import org.onap.cps.temporal.domain.NetworkData
+import org.onap.cps.temporal.repository.containers.TimescaleContainer
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import org.testcontainers.junit.jupiter.Testcontainers
+import spock.lang.Shared
+import spock.lang.Specification
+
+import java.time.OffsetDateTime
+
+@SpringBootTest
+@Testcontainers
+class NetworkDataRepositorySpec extends Specification {
+
+ def observedTimestamp = OffsetDateTime.now()
+ def dataspaceName = 'TEST_DATASPACE'
+ def schemaSetName = 'TEST_SCHEMA_SET'
+ def anchorName = 'TEST_ANCHOR'
+ def payload = '{ \"message\": \"Hello World!\" }'
+
+ @Autowired
+ NetworkDataRepository networkDataRepository
+
+ def networkData = NetworkData.builder().observedTimestamp(observedTimestamp).dataspace(dataspaceName)
+ .schemaSet(schemaSetName).anchor(anchorName).payload(payload).build()
+
+ @Shared
+ def databaseTestContainer = TimescaleContainer.getInstance()
+
+ def setupSpec() {
+ databaseTestContainer.start()
+ }
+
+ def 'Store latest network data in timeseries database.'() {
+ when: 'a new Network Data is stored'
+ NetworkData savedData = networkDataRepository.save(networkData)
+ then: ' the saved Network Data is returned'
+ savedData.getDataspace() == networkData.getDataspace()
+ savedData.getSchemaSet() == networkData.getSchemaSet()
+ savedData.getAnchor() == networkData.getAnchor()
+ savedData.getPayload() == networkData.getPayload()
+ savedData.getObservedTimestamp() == networkData.getObservedTimestamp()
+ and: ' createdTimestamp is auto populated by db '
+ networkData.getCreatedTimestamp() == null
+ savedData.getCreatedTimestamp() != null
+ and: ' the CreationTimestamp is ahead of ObservedTimestamp'
+ savedData.getCreatedTimestamp() > networkData.getObservedTimestamp()
+ }
+}
diff --git a/src/test/groovy/org/onap/cps/temporal/service/NetworkDataServiceImplSpec.groovy b/src/test/groovy/org/onap/cps/temporal/service/NetworkDataServiceImplSpec.groovy
new file mode 100644
index 0000000..70ac2bc
--- /dev/null
+++ b/src/test/groovy/org/onap/cps/temporal/service/NetworkDataServiceImplSpec.groovy
@@ -0,0 +1,45 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (c) 2021 Bell Canada.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.temporal.service
+
+import java.time.OffsetDateTime
+import org.onap.cps.temporal.domain.NetworkData
+import org.onap.cps.temporal.repository.NetworkDataRepository
+import spock.lang.Specification
+
+class NetworkDataServiceImplSpec extends Specification {
+
+ def objectUnderTest = new NetworkDataServiceImpl()
+
+ def mockNetworkDataRepository = Mock(NetworkDataRepository)
+
+ def networkData = new NetworkData()
+
+ def setup() {
+ objectUnderTest.networkDataRepository = mockNetworkDataRepository
+ }
+
+ def 'Add network data in timeseries database.'() {
+ when: 'a new network data is added'
+ objectUnderTest.addNetworkData(networkData)
+ then: ' repository service is called with the correct parameters'
+ 1 * mockNetworkDataRepository.save(networkData)
+ }
+
+}
diff --git a/src/test/java/org/onap/cps/temporal/ApplicationTest.java b/src/test/java/org/onap/cps/temporal/ApplicationTest.java
deleted file mode 100644
index bae6e65..0000000
--- a/src/test/java/org/onap/cps/temporal/ApplicationTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (c) 2021 Bell Canada.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.cps.temporal;
-
-import org.assertj.core.util.Arrays;
-import org.junit.jupiter.api.Test;
-import org.onap.cps.temporal.repository.TimescaleContainer;
-import org.springframework.boot.test.context.SpringBootTest;
-
-// This test class without any assertion is obviously not really useful.
-// Its only purpose is to be able to cover current code.
-// It should be deleted when more code will be added to the project.
-@SpringBootTest
-class ApplicationTest {
-
- private static final TimescaleContainer TIMESCALE_CONTAINER = TimescaleContainer.getInstance();
-
- static {
- TIMESCALE_CONTAINER.start();
- }
-
- @Test
- void testMain() {
- Application.main(Arrays.array());
- }
-
-}
diff --git a/src/test/java/org/onap/cps/temporal/repository/TimescaleContainer.java b/src/test/java/org/onap/cps/temporal/repository/containers/TimescaleContainer.java
index 73b8c13..a6ad5db 100644
--- a/src/test/java/org/onap/cps/temporal/repository/TimescaleContainer.java
+++ b/src/test/java/org/onap/cps/temporal/repository/containers/TimescaleContainer.java
@@ -16,7 +16,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.temporal.repository;
+package org.onap.cps.temporal.repository.containers;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.utility.DockerImageName;
diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml
index 5f64bd9..afaff6c 100644
--- a/src/test/resources/application.yml
+++ b/src/test/resources/application.yml
@@ -14,6 +14,9 @@
# limitations under the License.
# ============LICENSE_END=========================================================
+server:
+ port: 8080
+
spring:
datasource:
url: ${DB_URL}
@@ -21,3 +24,13 @@ spring:
username: ${DB_USERNAME}
liquibase:
change-log: classpath:/db/changelog/changelog-master.xml
+ jpa:
+ open-in-view: false
+ properties:
+ hibernate:
+ dialect: org.hibernate.dialect.PostgreSQLDialect
+
+logging:
+ level:
+ org:
+ springframework: INFO