From 020e6b1cbd20daab7fe6fbc13711a1c2a2dad2ee Mon Sep 17 00:00:00 2001 From: Rama-Huawei Date: Mon, 22 Apr 2019 14:41:44 +0530 Subject: Unit test code for datalake seed code Improved Couchbase service code coverage Issue-ID: DCAEGEN2-1309 Change-Id: I1bacbcb3e5c4919a36b02aac68e069c86e04bd02 Signed-off-by: Rama-Huawei --- .../feeder/service/CouchbaseServiceTest.java | 140 +++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100755 components/datalake-handler/feeder/src/test/java/org/onap/datalake/feeder/service/CouchbaseServiceTest.java (limited to 'components/datalake-handler/feeder/src/test/java/org') diff --git a/components/datalake-handler/feeder/src/test/java/org/onap/datalake/feeder/service/CouchbaseServiceTest.java b/components/datalake-handler/feeder/src/test/java/org/onap/datalake/feeder/service/CouchbaseServiceTest.java new file mode 100755 index 00000000..9e40a2b1 --- /dev/null +++ b/components/datalake-handler/feeder/src/test/java/org/onap/datalake/feeder/service/CouchbaseServiceTest.java @@ -0,0 +1,140 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : DATALAKE + * ================================================================================ + * Copyright (C) 2018-2019 Huawei. All rights reserved. + * ================================================================================ + * 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.datalake.feeder.service; + +import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.CouchbaseCluster; +import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; +import com.couchbase.mock.Bucket; +import com.couchbase.mock.BucketConfiguration; +import com.couchbase.mock.CouchbaseMock; +import com.couchbase.mock.client.MockClient; +import org.jetbrains.annotations.NotNull; +import org.json.JSONObject; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnitRunner; +import org.onap.datalake.feeder.domain.Topic; + +import java.util.ArrayList; +import java.util.List; + +@RunWith(MockitoJUnitRunner.class) +public class CouchbaseServiceTest { + protected final BucketConfiguration bucketConfiguration = new BucketConfiguration(); + protected MockClient mockClient; + protected CouchbaseMock couchbaseMock; + protected Cluster cluster; + protected com.couchbase.client.java.Bucket bucket; + protected int carrierPort; + protected int httpPort; + + protected void getPortInfo(String bucket) throws Exception { + httpPort = couchbaseMock.getHttpPort(); + carrierPort = couchbaseMock.getCarrierPort(bucket); + } + + protected void createMock(@NotNull String name, @NotNull String password) throws Exception { + bucketConfiguration.numNodes = 1; + bucketConfiguration.numReplicas = 1; + bucketConfiguration.numVBuckets = 1024; + bucketConfiguration.name = name; + bucketConfiguration.type = Bucket.BucketType.COUCHBASE; + bucketConfiguration.password = password; + ArrayList configList = new ArrayList(); + configList.add(bucketConfiguration); + couchbaseMock = new CouchbaseMock(0, configList); + couchbaseMock.start(); + couchbaseMock.waitForStartup(); + } + + protected void createClient() { + cluster = CouchbaseCluster.create(DefaultCouchbaseEnvironment.builder() + .bootstrapCarrierDirectPort(carrierPort) + .bootstrapHttpDirectPort(httpPort) + .build(), "couchbase://127.0.0.1"); + bucket = cluster.openBucket("default"); + } + + @Before + public void setUp() throws Exception { + createMock("default", ""); + getPortInfo("default"); + createClient(); + } + + @After + public void tearDown() { + if (cluster != null) { + cluster.disconnect(); + } + if (couchbaseMock != null) { + couchbaseMock.stop(); + } + if (mockClient != null) { + mockClient.shutdown(); + } + } + + @Test + public void testSaveJsonsWithTopicId() { + + String text = "{ data: { data2 : { value : 'hello'}}}"; + + JSONObject json = new JSONObject(text); + + Topic topic = new Topic("test getMessageId"); + topic.setMessageIdPath("/data/data2/value"); + List jsons = new ArrayList<>(); + json.put("_ts", 1234); + jsons.add(json); + CouchbaseService couchbaseService = new CouchbaseService(); + couchbaseService.bucket = bucket; + couchbaseService.saveJsons(topic, jsons); + + } + + @Test + public void testSaveJsonsWithOutTopicId() { + + String text = "{ data: { data2 : { value : 'hello'}}}"; + + JSONObject json = new JSONObject(text); + + Topic topic = new Topic("test getMessageId"); + List jsons = new ArrayList<>(); + json.put("_ts", 1234); + jsons.add(json); + CouchbaseService couchbaseService = new CouchbaseService(); + couchbaseService.bucket = bucket; + couchbaseService.saveJsons(topic, jsons); + } + + @Test + public void testCleanupBucket() { + CouchbaseService couchbaseService = new CouchbaseService(); + couchbaseService.bucket = bucket; + couchbaseService.cleanUp(); + } + +} \ No newline at end of file -- cgit 1.2.3-korg