Package org.apache.cassandra.hadoop.hive.metastore

Source Code of org.apache.cassandra.hadoop.hive.metastore.CassandraHiveMetaStoreTest

package org.apache.cassandra.hadoop.hive.metastore;

import static org.junit.Assert.*;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.junit.BeforeClass;
import org.junit.Test;

import org.apache.cassandra.CleanupHelper;
import org.apache.cassandra.EmbeddedServer;
import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.thrift.CfDef;
import org.apache.cassandra.thrift.KsDef;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.metastore.api.*;
import org.apache.thrift.transport.TTransportException;

/**
* Test plumbing of CassandraHiveMetaStore
*
* @author zznate
*/
public class CassandraHiveMetaStoreTest extends MetaStoreTestBase {

    @Test
    public void testSetConf()
    {
        // INIT procedure from HiveMetaStore:
        //empty c-tor
        // setConf
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        metaStore.setConf(buildConfiguration());       
    }
   
    @Test(expected=CassandraHiveMetaStoreException.class)
    public void testSetConfConnectionFail()
    {
        // INIT procedure from HiveMetaStore:
        //empty c-tor
        // setConf
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        // Throw a runtime exception if we can ping cassandra?
        Configuration conf = buildConfiguration();
        conf.setInt("cassandra.connection.port",8181);
        metaStore.setConf(conf);       
    }
   
    @Test
    public void testCreateDeleteDatabaseAndTable() throws Exception
    {
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        metaStore.setConf(buildConfiguration());
        Database database = new Database("db_name", "My Database", "file:///tmp/", new HashMap<String, String>());
        metaStore.createDatabase(database);
        Database foundDatabase = metaStore.getDatabase("db_name");
        assertEquals(database, foundDatabase);
       
        Table table = new Table();
        table.setDbName("db_name");
        table.setTableName("table_name");
        metaStore.createTable(table);
       
        Table foundTable = metaStore.getTable("db_name", "table_name");
        assertEquals(table, foundTable);
       
        assertEquals(1,metaStore.getAllDatabases().size());
        assertEquals(1,metaStore.getAllTables("db_name").size());
       
        metaStore.dropTable("db_name", "table_name");
        assertNull(metaStore.getTable("db_name", "table_name"));
        assertEquals(0,metaStore.getAllTables("db_name").size());
    }
   
    @Test
    public void testFindEmptyPatitionList() throws Exception
    {
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        metaStore.setConf(buildConfiguration());
        Database database = new Database("db_name", "My Database", "file:///tmp/", new HashMap<String, String>());
        metaStore.createDatabase(database);
        Database foundDatabase = metaStore.getDatabase("db_name");
        assertEquals(database, foundDatabase);
       
        Table table = new Table();
        table.setDbName("db_name");
        table.setTableName("table_name");
        metaStore.createTable(table);
       
        List<String> partitionNames = metaStore.listPartitionNames("db_name", "table_name", (short) 100);
        assertEquals(0, partitionNames.size());
        partitionNames = metaStore.listPartitionNames("db_name", "table_name", (short) -1);
        assertEquals(0, partitionNames.size());
    }
   
    @Test
    public void testAlterTable() throws Exception
    {
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        metaStore.setConf(buildConfiguration());
       
        Table table = new Table();
        table.setDbName("alter_table_db_name");
        table.setTableName("orig_table_name");
        metaStore.createTable(table);
       
        Table foundTable = metaStore.getTable("alter_table_db_name", "orig_table_name");
        assertEquals(table, foundTable);
       
        Table altered = new Table();
        altered.setDbName("alter_table_db_name");
        altered.setTableName("new_table_name");
              
        metaStore.alterTable("alter_table_db_name", "orig_table_name", altered);
        assertEquals(1,metaStore.getAllTables("alter_table_db_name").size());
       
    }
   
    @Test
    public void testAlterDatabaseTable() throws Exception
    {
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        metaStore.setConf(buildConfiguration());
        Database database = new Database("alter_db_db_name", "My Database", "file:///tmp/", new HashMap<String, String>());
        metaStore.createDatabase(database);
       
        Table table = new Table();
        table.setDbName("alter_db_db_name");
        table.setTableName("table_name");
        metaStore.createTable(table);
       
        Table foundTable = metaStore.getTable("alter_db_db_name", "table_name");
        assertEquals(table, foundTable);
        Database altered = new Database("alter_db_db_name2", "My Database", "file:///tmp/", new HashMap<String, String>());
        metaStore.alterDatabase("alter_db_db_name", altered);
       
        assertEquals(1,metaStore.getAllTables("alter_db_db_name2").size());
       
    }
   
    @Test
    public void testAddParition() throws Exception
    {
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        metaStore.setConf(buildConfiguration());
        Database database = new Database("alter_part_db", "My Database", "file:///tmp/", new HashMap<String, String>());
        metaStore.createDatabase(database);
        Database foundDatabase = metaStore.getDatabase("alter_part_db");
        assertEquals(database, foundDatabase);
       
        Table table = new Table();
        table.setDbName("alter_part_db");
        table.setTableName("table_name");
        metaStore.createTable(table);
       
        Partition part = new Partition();       
        part.setDbName("alter_part_db");
        part.setTableName("table_name");
        List<String> partValues = new ArrayList<String>();
        partValues.add("cfs://localhost:9160/user/hive/warehouse/mydb.db/invites/ds=2008-08-08");
        partValues.add("cfs://localhost:9160/user/hive/warehouse/mydb.db/invites/ds=2008-08-15");
        part.setValues(partValues);
        metaStore.addPartition(part);

       
        Partition foundPartition = metaStore.getPartition("alter_part_db", "table_name", partValues);
        assertEquals(part,foundPartition);

    }
   
    @Test
    public void testCreateMultipleDatabases() throws Exception
    {
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        metaStore.setConf(buildConfiguration());
        Database database = new Database("db_1", "My Database", "file:///tmp/", new HashMap<String, String>());
        metaStore.createDatabase(database);
        database.setName("db_2");
        metaStore.createDatabase(database);
        assertTrue(metaStore.getAllDatabases().size() > 1);
    }
   
    @Test
    public void testAddDropReAddDatabase() throws Exception
    {
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        metaStore.setConf(buildConfiguration());
        Database database = new Database("add_drop_readd_db", "My Database", "file:///tmp/", new HashMap<String, String>());
        metaStore.createDatabase(database);
        Database foundDatabase = metaStore.getDatabase("add_drop_readd_db");
        assertEquals(database, foundDatabase);
        metaStore.dropDatabase("add_drop_readd_db");
        try {
            foundDatabase = metaStore.getDatabase("add_drop_readd_db");
            fail();
        } catch (NoSuchObjectException nsoe) {
            foundDatabase = null;
        }
        metaStore.createDatabase(database);
        foundDatabase = metaStore.getDatabase("add_drop_readd_db");
        assertEquals(database, foundDatabase);       
    }
   
    @Test
    public void testCaseInsensitiveNaming() throws Exception
    {
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        metaStore.setConf(buildConfiguration());
        Database database = new Database("CiDbNaMe", "My Database", "file:///tmp/", new HashMap<String, String>());
        metaStore.createDatabase(database);
        Database foundDb = metaStore.getDatabase("cidbname");
        assertNotNull(foundDb);
        Table table = new Table();
        table.setDbName("cidbname");
        table.setTableName("TaBlE");
        metaStore.createTable(table);
       
        Table foundTable = metaStore.getTable("cidBname", "table");       
        assertNotNull(foundTable);
       
    }
   
    @Test
    public void testAutoCreateFromKeyspace() throws Exception
    {
        CassandraHiveMetaStore metaStore = new CassandraHiveMetaStore();
        Configuration conf = buildConfiguration();
        CassandraClientHolder clientHolder = new CassandraClientHolder(conf);
        KsDef ksDef = setupOtherKeyspace(conf,"AutoCreatedFromKeyspace", false);
        clientHolder.getClient().system_add_keyspace(ksDef);
        conf.setBoolean("cassandra.autoCreateHiveSchema", true);
        metaStore.setConf(conf);       
        Database foundDb = metaStore.getDatabase("AutoCreatedFromKeyspace");
        assertNotNull(foundDb);
        CfDef cf = new CfDef("AutoCreatedFromKeyspace","OtherCf2");
        cf.setKey_validation_class("UTF8Type");
        cf.setComparator_type("UTF8Type");
        clientHolder.getClient().set_keyspace("HiveMetaStore");
        clientHolder.getClient().system_add_column_family(cf);
        metaStore.getAllTables("AutoCreatedFromKeyspace");
        assertNotNull(metaStore.getTable("AutoCreatedFromKeyspace", "OtherCf2"));
    }
   
  
}
TOP

Related Classes of org.apache.cassandra.hadoop.hive.metastore.CassandraHiveMetaStoreTest

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.