Package org.cassandraunit.integration

Source Code of org.cassandraunit.integration.ReversedComparatorWithSimpleTypeTest

package org.cassandraunit.integration;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.util.List;

import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.CassandraHostConfigurator;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.beans.OrderedRows;
import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
import me.prettyprint.hector.api.ddl.ComparatorType;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.Mutator;
import me.prettyprint.hector.api.query.QueryResult;
import me.prettyprint.hector.api.query.RangeSlicesQuery;

import org.apache.cassandra.db.marshal.UTF8Type;
import org.cassandraunit.DataLoader;
import org.cassandraunit.dataset.yaml.ClassPathYamlDataSet;
import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
import org.junit.Before;
import org.junit.Test;

public class ReversedComparatorWithSimpleTypeTest {
  private static final String KEYSPACE_NAME = "reversedKeyspace";
  private static final String ROW_KEY = "row1";

  @Before
  public void before() throws Exception {
    EmbeddedCassandraServerHelper.startEmbeddedCassandra();
    DataLoader dataLoader = new DataLoader("TestCluster", "localhost:9171");
    dataLoader.load(new ClassPathYamlDataSet("integration/emptyDataSetWithReversedComparatorOnSimpleType.yaml"));
  }

  @Test
  public void writeAndReadFromCfCreatedUsingCassandraUnit() {
    final Cluster cluster = HFactory.getOrCreateCluster("TestCluster", new CassandraHostConfigurator("localhost:9170"));
    final Keyspace keyspace = HFactory.createKeyspace(KEYSPACE_NAME, cluster);

    final String columnFamily = "columnFamilyWithReversedComparatorOnSimpleType";

    writeDataSet(keyspace, columnFamily);
    final QueryResult<OrderedRows<String, String, String>> results = readDataSet(keyspace, columnFamily);
    assertResultsAreSortedAccordingToComparator(results);
  }

  @Test
  public void writeAndReadFromCfCreatedUsingHector() {
    final Cluster cluster = HFactory.getOrCreateCluster("TestCluster", new CassandraHostConfigurator("localhost:9170"));
    final Keyspace keyspace = HFactory.createKeyspace(KEYSPACE_NAME, cluster);

    final String columnFamily = "manuallyCreated";
    createColumnFamily(cluster, columnFamily);

    writeDataSet(keyspace, columnFamily);
    final QueryResult<OrderedRows<String, String, String>> results = readDataSet(keyspace, columnFamily);
    assertResultsAreSortedAccordingToComparator(results);
  }

  private void createColumnFamily(final Cluster cluster, final String columnFamily) {
    final ColumnFamilyDefinition cfd = HFactory.createColumnFamilyDefinition(KEYSPACE_NAME, columnFamily, ComparatorType.UTF8TYPE);
    cfd.setComparatorTypeAlias("(reversed=true)");
    cfd.setKeyValidationClass(UTF8Type.class.getName());
    cfd.setDefaultValidationClass(UTF8Type.class.getName());
    cluster.addColumnFamily(cfd, true);
  }

  private void writeDataSet(final Keyspace keyspace, final String columnFamily) {
    final Mutator<String> mutator = HFactory.createMutator(keyspace, StringSerializer.get());
    mutator.addInsertion(ROW_KEY, columnFamily, HFactory.createStringColumn("a", "v1"));
    mutator.addInsertion(ROW_KEY, columnFamily, HFactory.createStringColumn("b", "v2"));
    mutator.addInsertion(ROW_KEY, columnFamily, HFactory.createStringColumn("c", "v3"));
    mutator.execute();
  }

  private QueryResult<OrderedRows<String, String, String>> readDataSet(final Keyspace keyspace, final String columnFamily) {
    final StringSerializer ss = StringSerializer.get();
    final RangeSlicesQuery<String, String, String> query = HFactory.createRangeSlicesQuery(keyspace, ss, ss, ss);
    query.setColumnFamily(columnFamily);
    query.setRange(null, null, false, Integer.MAX_VALUE);
    QueryResult<OrderedRows<String, String, String>> results = query.execute();
    return results;
  }

  private void assertResultsAreSortedAccordingToComparator(QueryResult<OrderedRows<String, String, String>> results) {
    assertNotNull(results);
    assertNotNull(results.get());
    assertNotNull(results.get().getList());
    assertEquals(1, results.get().getList().size());
    assertNotNull(results.get().getList().get(0));
    assertEquals(ROW_KEY, results.get().getList().get(0).getKey());
    assertNotNull(results.get().getList().get(0).getColumnSlice());

    final List<HColumn<String, String>> columns = results.get().getList().get(0).getColumnSlice().getColumns();
    assertNotNull(columns);

    assertEquals("c", columns.get(0).getName());
    assertEquals("v3", columns.get(0).getValue());

    assertEquals("b", columns.get(1).getName());
    assertEquals("v2", columns.get(1).getValue());

    assertEquals("a", columns.get(2).getName());
    assertEquals("v1", columns.get(2).getValue());
  }
}
TOP

Related Classes of org.cassandraunit.integration.ReversedComparatorWithSimpleTypeTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.