Unit test code for datalake seed code 56/85956/1
authorRama-Huawei <rama.subba.reddy.s@huawei.com>
Mon, 22 Apr 2019 09:11:44 +0000 (14:41 +0530)
committerRama-Huawei <rama.subba.reddy.s@huawei.com>
Mon, 22 Apr 2019 09:11:44 +0000 (14:41 +0530)
Improved Couchbase service code coverage

Issue-ID: DCAEGEN2-1309

Change-Id: I1bacbcb3e5c4919a36b02aac68e069c86e04bd02
Signed-off-by: Rama-Huawei <rama.subba.reddy.s@huawei.com>
components/datalake-handler/feeder/src/test/java/org/onap/datalake/feeder/service/CouchbaseServiceTest.java [new file with mode: 0755]

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 (executable)
index 0000000..9e40a2b
--- /dev/null
@@ -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<BucketConfiguration> configList = new ArrayList<BucketConfiguration>();
+        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<JSONObject> 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<JSONObject> 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