/* * 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.cyclop.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.time.LocalDateTime; import java.util.List; import java.util.UUID; import javax.inject.Inject; import org.cyclop.service.cassandra.QueryService; import org.cyclop.service.completion.CompletionService; import org.cyclop.test.AbstractTestCase; import org.junit.Test; import com.datastax.driver.core.DataType; import com.datastax.driver.core.DataType.Name; import com.google.common.collect.ImmutableList; import com.google.common.testing.EqualsTester; public class TestBeans extends AbstractTestCase { @Inject private QueryService qs; @Inject private CompletionService cs; @Test public void testSerialize_CqlDataType() throws Exception { CqlDataType obj = new CqlDataType(Name.ASCII, String.class, List.class, false); execSerializeEquals(obj, CqlDataType.class); } @Test public void testSerialize_CqlRowMetadata() throws Exception { ImmutableList.Builder<CqlExtendedColumnName> extendedColumnBuild = ImmutableList.builder(); extendedColumnBuild.add(new CqlExtendedColumnName(CqlColumnType.COMPACT_VALUE, CqlDataType.create(DataType .bigint()), "col")); extendedColumnBuild.add(new CqlExtendedColumnName(CqlColumnType.PARTITION_KEY, CqlDataType.create(DataType .inet()), "col 2")); CqlRowMetadata obj = new CqlRowMetadata(extendedColumnBuild.build(), CqlPartitionKey.fromColumn(new CqlExtendedColumnName(CqlColumnType.PARTITION_KEY, CqlDataType .create(DataType.inet()), "col 4"))); CqlRowMetadata des = execSerialize(obj, CqlRowMetadata.class); assertEquals(obj.columns, des.columns); assertNotNull(obj.partitionKey); assertNull(des.partitionKey); } @Test public void testSerialize_CqlColumnValue() throws Exception { CqlColumnValue obj = new CqlColumnValue(Long.class, new Long(11), new CqlExtendedColumnName( CqlColumnType.CLUSTERING_KEY, CqlDataType.TEXT, "testcol")); execSerializeEquals(obj, CqlColumnValue.class); } @Test public void testSerialize_CqlExtendedColumnName() throws Exception { CqlExtendedColumnName obj = new CqlExtendedColumnName(CqlColumnType.REGULAR, CqlDataType.TEXT, "testcol"); execSerializeEquals(obj, CqlExtendedColumnName.class); } @Test public void testSerialize_CqlIndex() throws Exception { CqlIndex obj = new CqlIndex("idx1"); execSerializeEquals(obj, CqlIndex.class); } @Test public void testSerialize_UserIdentifier() throws Exception { UserIdentifier obj = new UserIdentifier(UUID.randomUUID()); execSerializeEquals(obj, UserIdentifier.class); } @Test public void testSerialize_UserPreferences() throws Exception { UserPreferences obj = new UserPreferences(); obj.setShowCqlCompletionHint(true); execSerializeEquals(obj, UserPreferences.class); } @Test public void testSerialize_QueryFavourites() throws Exception { QueryFavourites obj = new QueryFavourites(); obj.addWithSizeCheck(new QueryEntry(new CqlQuery(CqlQueryType.ALTER_TABLE, "alter cqldemo.mybooks ...."), LocalDateTime.now(), 2312)); obj.addWithSizeCheck(new QueryEntry(new CqlQuery(CqlQueryType.ALTER_KEYSPACE, "alter sapce cqldemo.mybooks ...."), LocalDateTime.now(), 234)); obj.addWithSizeCheck(new QueryEntry(new CqlQuery(CqlQueryType.SELECT, "select * from cqldemo.mybooks"), LocalDateTime.now(), 345)); byte[] serialized = serialize(obj); QueryFavourites des = deserialize(serialized, QueryFavourites.class); assertTrue(des.copyAsSortedSet().containsAll(obj.copyAsSortedSet())); // check whether lock has been deserialized des.addWithSizeCheck(new QueryEntry(new CqlQuery(CqlQueryType.SELECT, "select * from cqldemo.mybooks"), LocalDateTime.now(), 542)); } @Test public void testSerialize_QueryHistory() throws Exception { QueryHistory obj = new QueryHistory(); obj.add(new QueryEntry(new CqlQuery(CqlQueryType.ALTER_TABLE, "alter cqldemo.mybooks ...."), LocalDateTime .now(), 23)); obj.add(new QueryEntry(new CqlQuery(CqlQueryType.ALTER_KEYSPACE, "alter sapce cqldemo.mybooks ...."), LocalDateTime.now(), 7654)); obj.add(new QueryEntry(new CqlQuery(CqlQueryType.SELECT, "select * from cqldemo.mybooks"), LocalDateTime.now(), 987656)); byte[] serialized = serialize(obj); QueryHistory des = deserialize(serialized, QueryHistory.class); assertTrue(des.copyAsList().containsAll(obj.copyAsList())); } @Test public void testSerialize_QueryEntry() throws Exception { QueryEntry obj = new QueryEntry(new CqlQuery(CqlQueryType.ALTER_TABLE, "alter cqldemo.mybooks ...."), LocalDateTime.now(), 1231); execSerializeEquals(obj, QueryEntry.class); } @Test public void testSerialize_CqlTable() throws Exception { { CqlTable obj = new CqlTable("mytable"); execSerializeEquals(obj, CqlTable.class); } { CqlTable obj = new CqlTable("space", "mytable"); execSerializeEquals(obj, CqlTable.class); } } @Test public void testSerialize_CqlKeySpace() throws Exception { CqlKeySpace obj = new CqlKeySpace("testSpace"); execSerializeEquals(obj, CqlKeySpace.class); } @Test public void testSerialize_CqlKeyword() throws Exception { CqlKeyword obj = CqlKeyword.Def.ALLOW_FILTERING.value; execSerializeEquals(obj, CqlKeyword.class); } @Test public void testSerialize_CqlKeywordValue() throws Exception { CqlKeywordValue obj = CqlKeywordValue.Def.NETWORK_TOPOLOGY_STRATEGY.value; execSerializeEquals(obj, CqlKeywordValue.class); } @Test public void testSerialize_CqlNotSupported() throws Exception { CqlNotSupported obj = new CqlNotSupported("abx....."); execSerializeEquals(obj, CqlNotSupported.class); } @Test public void testSerialize_CqlPart() throws Exception { CqlPart obj = new CqlPart("abx....."); execSerializeEquals(obj, CqlPart.class); } @Test public void testSerialize_ContextCqlCompletion() throws Exception { ContextCqlCompletion obj = cs.findInitialCompletion(); execSerializeEquals(obj, ContextCqlCompletion.class); } @Test public void testSerialize_CqlQuery() throws Exception { CqlQuery obj = new CqlQuery(CqlQueryType.SELECT, "select * from cqldemo.mybooks"); execSerializeEquals(obj, CqlQuery.class); } @Test public void testSerialize_CqlSelectResult() throws Exception { CqlQueryResult res = qs.execute(new CqlQuery(CqlQueryType.SELECT, "select * from cqldemo.mybooks")); assertNotNull(res); assertNotNull(res.iterator()); assertNotNull(res.rowMetadata.columns); assertTrue(res.iterator().hasNext()); assertTrue(res.rowMetadata.columns.size() > 0); byte[] serBytes = serialize(res); CqlQueryResult des = deserialize(serBytes, CqlQueryResult.class); assertNotNull(des); assertNotNull(des.iterator()); assertNotNull(des.rowMetadata.columns); assertFalse(des.iterator().hasNext()); assertTrue(des.rowMetadata.columns.size() > 0); assertTrue(res.rowMetadata.columns.containsAll(des.rowMetadata.columns)); } @Test public void testSerialize_CqlColumnName() throws Exception { CqlColumnName obj = new CqlColumnName(CqlDataType.TEXT, "myColumn"); execSerializeEquals(obj, CqlColumnName.class); } @Test public void testSerialize_CqlPartitionKey() throws Exception { CqlPartitionKey obj = new CqlPartitionKey(CqlDataType.create(DataType.cfloat()), "myColumn"); execSerializeEquals(obj, CqlPartitionKey.class); } @Test public void testSerialize_CqlPartitionKeyValue() throws Exception { CqlPartitionKeyValue obj = new CqlPartitionKeyValue(Long.class, new Long(11), new CqlPartitionKey( CqlDataType.TEXT, "abc")); execSerializeEquals(obj, CqlPartitionKeyValue.class); } @Test public void testEquals() { EqualsTester et = new EqualsTester(); et.addEqualityGroup(new CqlColumnName(CqlDataType.TEXT, "mybooks")); et.addEqualityGroup(new CqlColumnName(CqlDataType.TEXT, "cqldemo")); et.addEqualityGroup(new CqlColumnName(CqlDataType.TEXT, "cqldemo.mybooks")); et.addEqualityGroup(new CqlColumnName(CqlDataType.create(DataType.ascii()), "cqldemo.mybooks")); et.addEqualityGroup(); et.addEqualityGroup(new CqlExtendedColumnName(CqlColumnType.PARTITION_KEY, CqlDataType.TEXT, "cqldemo.mybooks")); et.addEqualityGroup(new CqlExtendedColumnName(CqlColumnType.CLUSTERING_KEY, CqlDataType.TEXT, "cqldemo.mybooks")); et.addEqualityGroup(new CqlExtendedColumnName(CqlColumnType.CLUSTERING_KEY, CqlDataType.create(DataType.ascii()), "cqldemo.mybooks")); et.addEqualityGroup(new CqlIndex("cqldemo")); et.addEqualityGroup(new CqlIndex("cqldemo.mybooks")); et.addEqualityGroup(new CqlKeySpace("cqldemo")); et.addEqualityGroup(new CqlKeySpace("cqldemo.mybooks")); et.addEqualityGroup(new CqlKeyword("cqldemo")); et.addEqualityGroup(new CqlKeyword("cqldemo.mybooks")); et.addEqualityGroup(CqlKeyword.Def.ALLOW_FILTERING.value); et.addEqualityGroup(new CqlKeywordValue("cqldemo")); et.addEqualityGroup(new CqlKeywordValue("cqldemo.mybooks")); et.addEqualityGroup(CqlKeywordValue.Def.DURABLE_WRITES.value); et.addEqualityGroup(new CqlPart("cqldemo")); et.addEqualityGroup(new CqlPart("cqldemo.mybooks")); et.addEqualityGroup(new CqlPartitionKey(CqlDataType.TEXT, "cqldemo.mybooks"), CqlPartitionKey.fromColumn(new CqlExtendedColumnName(CqlColumnType.PARTITION_KEY, CqlDataType.TEXT, "cqldemo.mybooks"))); et.addEqualityGroup(new CqlPartitionKey(CqlDataType.TEXT, "cqldemo")); et.addEqualityGroup(new CqlPartitionKey(CqlDataType.create(DataType.counter()), "cqldemo.mybooks")); et.addEqualityGroup(new CqlQuery(CqlQueryType.ALTER_KEYSPACE, "cqldemo.mybooks")); et.addEqualityGroup(new CqlQuery(CqlQueryType.SELECT, "cqldemo.mybooks")); et.addEqualityGroup(new CqlTable("cqldemo", "mybooks")); et.addEqualityGroup(new CqlTable("cqldemo.mybooks")); et.addEqualityGroup(new CqlTable("cqldemo")); et.addEqualityGroup(new CqlTable("mybooks")); et.addEqualityGroup(new QueryEntry(new CqlQuery(CqlQueryType.ALTER_KEYSPACE, "cqldemo.mybooks"), 34523), new QueryEntry(new CqlQuery(CqlQueryType.ALTER_KEYSPACE, "cqldemo.mybooks"), LocalDateTime.now(), 2465245)); et.addEqualityGroup(new QueryEntry(new CqlQuery(CqlQueryType.CREATE_INDEX, "cqldemo.mybooks"), 345)); et.addEqualityGroup(new QueryEntry(new CqlQuery(CqlQueryType.ALTER_KEYSPACE, "cqldemo"), 3452)); et.addEqualityGroup(new UserIdentifier(UUID.randomUUID())); et.addEqualityGroup(new UserIdentifier(UUID.randomUUID())); et.addEqualityGroup(new UserIdentifier()); UserPreferences userPreferences = new UserPreferences(); userPreferences.setShowCqlCompletionHint(true); userPreferences.setShowCqlHelp(false); et.addEqualityGroup(userPreferences); userPreferences = new UserPreferences(); userPreferences.setShowCqlCompletionHint(false); userPreferences.setShowCqlHelp(true); et.addEqualityGroup(userPreferences); userPreferences = new UserPreferences(); userPreferences.setShowCqlCompletionHint(true); userPreferences.setShowCqlHelp(true); et.addEqualityGroup(new UserPreferences(), userPreferences); et.addEqualityGroup(new CqlColumnValue(Long.class, new Long(11), new CqlExtendedColumnName( CqlColumnType.CLUSTERING_KEY, CqlDataType.TEXT, "testcol")), new CqlColumnValue(Long.class, 11L, new CqlExtendedColumnName(CqlColumnType.CLUSTERING_KEY, CqlDataType.TEXT, "testcol"))); et.testEquals(); } private <T> T execSerializeEquals(T obj, Class<T> clazz) throws Exception { T ddt = execSerialize(obj, clazz); assertEquals(obj, ddt); return ddt; } private <T> T execSerialize(T obj, Class<T> clazz) throws Exception { byte[] serialized = serialize(obj); T ddt = deserialize(serialized, clazz); return ddt; } }