[
https://issues.apache.org/jira/browse/GORA-497?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16138912#comment-16138912
]
ASF GitHub Bot commented on GORA-497:
-------------------------------------
Github user madhawa-gunasekara commented on a diff in the pull request:
https://github.com/apache/gora/pull/110#discussion_r134844996
--- Diff:
gora-cassandra-cql/src/test/java/org/apache/gora/cassandra/store/TestCassandraStoreWithNativeSerialization.java
---
@@ -0,0 +1,305 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.gora.cassandra.store;
+
+import org.apache.gora.cassandra.GoraCassandraTestDriver;
+import
org.apache.gora.cassandra.example.generated.nativeSerialization.ComplexTypes;
+import
org.apache.gora.cassandra.example.generated.nativeSerialization.User;
+import org.apache.gora.cassandra.query.CassandraQuery;
+import org.apache.gora.query.Query;
+import org.apache.gora.query.Result;
+import org.apache.gora.store.DataStore;
+import org.apache.gora.util.GoraException;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Properties;
+import java.util.UUID;
+
+/**
+ * This class tests Cassandra Store functionality with Cassandra Native
Serialization.
+ */
+public class TestCassandraStoreWithNativeSerialization {
+ private static GoraCassandraTestDriver testDriver = new
GoraCassandraTestDriver();
+ private static DataStore<UUID, User> userDataStore;
+ private static Properties parameter;
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ setProperties();
+ testDriver.setParameters(parameter);
+ testDriver.setUpClass();
+ userDataStore = testDriver.createDataStore(UUID.class, User.class);
+ }
+
+ private static void setProperties() {
+ parameter = new Properties();
+ parameter.setProperty(CassandraStoreParameters.CASSANDRA_SERVERS,
"localhost");
+ parameter.setProperty(CassandraStoreParameters.PORT, "9042");
+
parameter.setProperty(CassandraStoreParameters.CASSANDRA_SERIALIZATION_TYPE,
"native");
+ parameter.setProperty(CassandraStoreParameters.PROTOCOL_VERSION, "3");
+ parameter.setProperty(CassandraStoreParameters.CLUSTER_NAME, "Test
Cluster");
+ parameter.setProperty("gora.cassandrastore.mapping.file",
"nativeSerialization/gora-cassandra-mapping.xml");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ testDriver.tearDown();
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ testDriver.tearDownClass();
+ }
+
+ /**
+ * In this test case, put and get behavior of the data store are testing.
+ */
+ @Test
+ public void testSimplePutAndGet() {
+ UUID id = UUID.randomUUID();
+ User user1 = new User(id, "madhawa", Date.from(Instant.now()));
+ // storing data;
+ userDataStore.put(id, user1);
+ // get data;
+ User olduser = userDataStore.get(id);
+ Assert.assertEquals(olduser.getName(), user1.getName());
+ Assert.assertEquals(olduser.getDateOfBirth(), user1.getDateOfBirth());
+ }
+
+ /**
+ * In this test case, put and delete behavior of the data store are
testing.
+ */
+ @Test
+ public void testSimplePutDeleteAndGet() {
+ UUID id = UUID.randomUUID();
+ User user1 = new User(id, "kasun", Date.from(Instant.now()));
+ // storing data;
+ userDataStore.put(id, user1);
+ // get data;
+ User olduser = userDataStore.get(user1.getUserId());
+ Assert.assertEquals(olduser.getName(), user1.getName());
+ Assert.assertEquals(olduser.getDateOfBirth(), user1.getDateOfBirth());
+ // delete data;
+ userDataStore.delete(user1.getUserId());
+ // get data
+ User deletedUser = userDataStore.get(id);
+ Assert.assertNull(deletedUser);
+ }
+
+ /**
+ * In this test case, schema exists method behavior of the data store is
testing.
+ */
+ @Test()
+ public void testSchemaExists() {
+ userDataStore.deleteSchema();
+ Assert.assertFalse(userDataStore.schemaExists());
+ userDataStore.createSchema();
+ Assert.assertTrue(userDataStore.schemaExists());
+ }
+
+ /**
+ * In this test case, schema exists method behavior of the data store is
testing.
+ */
+ @Test
+ public void testTruncateSchema() {
+ if (!userDataStore.schemaExists()) {
+ userDataStore.createSchema();
+ }
+ UUID id = UUID.randomUUID();
+ User user1 = new User(id, "Madhawa Kasun", Date.from(Instant.now()));
+ userDataStore.put(id, user1);
+ User olduser = userDataStore.get(id);
+ Assert.assertEquals(olduser.getName(), user1.getName());
+ Assert.assertEquals(olduser.getDateOfBirth(), user1.getDateOfBirth());
+ userDataStore.truncateSchema();
+ olduser = userDataStore.get(id);
+ Assert.assertNull(olduser);
+ }
+
+ /**
+ * In this test case, get with fields method behavior of the data store
is testing.
+ */
+ @Test
+ public void testGetWithFields() {
+ UUID id = UUID.randomUUID();
+ User user1 = new User(id, "Madhawa Kasun Gunasekara",
Date.from(Instant.now()));
+ userDataStore.put(id, user1);
+ // get data;
+ User olduser = userDataStore.get(user1.getUserId());
+ Assert.assertEquals(olduser.getName(), user1.getName());
+ Assert.assertEquals(olduser.getDateOfBirth(), user1.getDateOfBirth());
+ User olduserWithFields = userDataStore.get(id, new String[]{"name"});
+ Assert.assertNull(olduserWithFields.getDateOfBirth());
+ }
+
+ /**
+ * In this test case, get with fields method behavior of the data store
is testing.
+ */
+ @Test
+ public void testExecute() throws Exception {
+ userDataStore.truncateSchema();
+ Map<UUID, User> users = new HashMap<>();
+ UUID id1 = UUID.randomUUID();
+ User user1 = new User(id1, "user1", Date.from(Instant.now()));
+ users.put(id1, user1);
+ userDataStore.put(id1, user1);
+ UUID id2 = UUID.randomUUID();
+ User user2 = new User(id2, "user2", Date.from(Instant.now()));
+ users.put(id2, user2);
+ userDataStore.put(id2, user2);
+ UUID id3 = UUID.randomUUID();
+ User user3 = new User(id3, "user3", Date.from(Instant.now()));
+ users.put(id3, user3);
+ userDataStore.put(id3, user3);
+ Query<UUID, User> query1 = userDataStore.newQuery();
+ Result<UUID, User> result1 = userDataStore.execute(query1);
+ int i = 0;
+ Assert.assertEquals(result1.getProgress(),0.0,0.0);
+ while (result1.next()) {
+ // check objects values
+ Assert.assertEquals(result1.get().getName(),
users.get(result1.getKey()).getName());
+ Assert.assertEquals(result1.get().getDateOfBirth(),
users.get(result1.getKey()).getDateOfBirth());
+ Assert.assertEquals(result1.get().getUserId(),
users.get(result1.getKey()).getUserId());
+ i++;
+ }
+ Assert.assertEquals(result1.getProgress(),1.0,0.0);
+ Assert.assertEquals(3, i);
+
+ // Check limit query
+ Query<UUID, User> query2 = userDataStore.newQuery();
+ query2.setLimit(2);
+ Result<UUID, User> result2 = userDataStore.execute(query2);
+ i = 0;
+ while (result2.next()) {
+ Assert.assertEquals(result2.get().getName(),
users.get(result2.getKey()).getName());
+ Assert.assertEquals(result2.get().getDateOfBirth(),
users.get(result2.getKey()).getDateOfBirth());
+ Assert.assertEquals(result2.get().getUserId(),
users.get(result2.getKey()).getUserId());
+ i++;
+ }
+ Assert.assertEquals(2, i);
+
+ // check key element
+ Query<UUID, User> query3 = userDataStore.newQuery();
+ query3.setKey(id1);
+
+ Result<UUID, User> result3 = userDataStore.execute(query3);
+ i = 0;
+ while (result3.next()) {
+ Assert.assertEquals(result3.get().getName(),
users.get(result3.getKey()).getName());
+ Assert.assertEquals(result3.get().getDateOfBirth(),
users.get(result3.getKey()).getDateOfBirth());
+ Assert.assertEquals(result3.get().getUserId(),
users.get(result3.getKey()).getUserId());
+ i++;
+ }
+ Assert.assertEquals(1, i);
+ }
+
+ /**
+ * In this test case, delete by query method behavior of the data store
is testing.
+ */
+ @Test
+ public void testDeleteByQuery() throws Exception {
+ userDataStore.truncateSchema();
+ UUID id1 = UUID.randomUUID();
+ User user1 = new User(id1, "user1", Date.from(Instant.now()));
+ userDataStore.put(id1, user1);
+ UUID id2 = UUID.randomUUID();
+ User user2 = new User(id2, "user2", Date.from(Instant.now()));
+ userDataStore.put(id2, user2);
+ Query<UUID, User> query1 = userDataStore.newQuery();
+ query1.setKey(id1);
+ userDataStore.deleteByQuery(query1);
+ User user = userDataStore.get(id1);
+ Assert.assertNull(user);
+
+ //test deleteByFields
+ Query<UUID, User> query2 = userDataStore.newQuery();
+ query2.setKey(id2);
+ query2.setFields("name");
+ userDataStore.deleteByQuery(query2);
+ User partialDeletedUser = userDataStore.get(id2);
+ Assert.assertNull(partialDeletedUser.getName());
+
Assert.assertEquals(partialDeletedUser.getDateOfBirth(),user2.getDateOfBirth());
+ }
+
+ /**
+ * In this test case, update by quert method behavior of the data store
is testing.
+ */
+ @Test
+ public void testUpdateByQuery() {
+ userDataStore.truncateSchema();
+ UUID id1 = UUID.randomUUID();
+ User user1 = new User(id1, "user1", Date.from(Instant.now()));
+ userDataStore.put(id1, user1);
+ UUID id2 = UUID.randomUUID();
+ User user2 = new User(id2, "user2", Date.from(Instant.now()));
+ userDataStore.put(id2, user2);
+ Query<UUID, User> query1 = userDataStore.newQuery();
+ if(query1 instanceof CassandraQuery) {
+ ((CassandraQuery) query1).addUpdateField("name", "madhawa");
+ }
+ query1.setKey(id1);
+ if(userDataStore instanceof CassandraStore) {
+ ((CassandraStore) userDataStore).updateByQuery(query1);
+ }
+ User user = userDataStore.get(id1);
+ Assert.assertEquals(user.getName(),"madhawa");
+ }
+
+ @Test
+ public void testComplexTypes() throws GoraException {
+ DataStore<String, ComplexTypes> documentDataStore =
testDriver.createDataStore(String.class, ComplexTypes.class);
--- End diff --
added
> Migrate CassandraThrift to CQL
> -------------------------------
>
> Key: GORA-497
> URL: https://issues.apache.org/jira/browse/GORA-497
> Project: Apache Gora
> Issue Type: Improvement
> Components: gora-cassandra
> Reporter: Madhawa Gunasekara
> Assignee: Madhawa Gunasekara
> Labels: gsoc2017
> Fix For: 0.8
>
>
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)