Package com.alibaba.wasp.meta

Source Code of com.alibaba.wasp.meta.TestStorageCleanChore

package com.alibaba.wasp.meta;

import com.alibaba.wasp.WaspTestingUtility;
import com.alibaba.wasp.plan.CreateIndexPlan;
import com.alibaba.wasp.plan.CreateTablePlan;
import com.alibaba.wasp.plan.Plan;
import com.alibaba.wasp.plan.parser.ParseContext;
import com.alibaba.wasp.plan.parser.WaspParser;
import com.alibaba.wasp.plan.parser.druid.DruidDDLParser;
import com.alibaba.wasp.plan.parser.druid.DruidDMLParser;
import com.alibaba.wasp.plan.parser.druid.DruidDQLParser;
import com.alibaba.wasp.plan.parser.druid.DruidParserTestUtil;
import junit.framework.Assert;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class TestStorageCleanChore {

  static final Log LOG = LogFactory.getLog(TestStorageCleanChore.class);

  private static final WaspTestingUtility TEST_UTIL = new WaspTestingUtility();
  private static Configuration conf = null;
  private static ParseContext context = new ParseContext();
  private static WaspParser druidParser = null;
  private static FTable[] table = null;

  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
    TableSchemaCacheReader.globalFMetaservice = null;
    WaspTestingUtility.adjustLogLevel();
    TEST_UTIL.startMiniCluster(3);
    conf = TEST_UTIL.getConfiguration();
    context.setGenWholePlan(false);
    DruidDQLParser dqlParser = new DruidDQLParser(conf, null);
    DruidDDLParser ddlParser = new DruidDDLParser(conf);
    DruidDMLParser dmlParser = new DruidDMLParser(conf, null);
    druidParser = new WaspParser(ddlParser, dqlParser, dmlParser);
    TableSchemaCacheReader reader = TableSchemaCacheReader.getInstance(conf);
    reader.clearCache();
    context.setTsr(reader);
    // create table
    table = new FTable[DruidParserTestUtil.SEED.length];
    for (int i = 0; i < DruidParserTestUtil.SEED.length; i++) {
      String createTable = DruidParserTestUtil.SEED[i];
      context.setSql(createTable);
      druidParser.generatePlan(context);
      Plan plan = context.getPlan();
      if (plan instanceof CreateTablePlan) {
        CreateTablePlan createPlan = (CreateTablePlan) plan;
        table[i] = createPlan.getTable();
        TableSchemaCacheReader.getService(conf).createTable(table[i]);
        reader.addSchema(table[i].getTableName(), table[i]);
      }
    }
    for (int i = 0; i < DruidParserTestUtil.INDEX_SEED.length; i++) {
      String createIndex = DruidParserTestUtil.INDEX_SEED[i];
      context.setSql(createIndex);
      druidParser.generatePlan(context);
      Plan plan = context.getPlan();
      if (plan instanceof CreateIndexPlan) {
        CreateIndexPlan createIndexPlan = (CreateIndexPlan) plan;
        Index index = createIndexPlan.getIndex();
        TableSchemaCacheReader.getService(conf).addIndex(
            index.getDependentTableName(), index);
        reader.refreshSchema(index.getDependentTableName());
      }
    }
    for (FTable ftable : table) {
      TableSchemaCacheReader.getInstance(conf).refreshSchema(
          ftable.getTableName());
    }
  }

  @AfterClass
  public static void tearDownAfterClass() throws Exception {
    TableSchemaCacheReader.getInstance(conf, null);
    TEST_UTIL.shutdownMiniCluster();
  }

  @Test
  public void testCleanChore() {
    try {
      FMetaServices fMetaServices = TableSchemaCacheReader.getService(conf);
      StorageCleanChore clean = new StorageCleanChore(1000, null, conf,
          fMetaServices);
      HTableDescriptor[] htables1 = fMetaServices.listStorageTables();
      for (HTableDescriptor h : htables1) {
        LOG.info("HTable : " + h.getNameAsString() + "  ");
      }
      Assert.assertEquals(htables1.length, 5);
      LOG.info("HTable========");
      clean.chore();
      HTableDescriptor[] htables2 = fMetaServices.listStorageTables();
      for (HTableDescriptor h : htables2) {
        LOG.info("HTable : " + h.getNameAsString() + "  ");
      }
      Assert.assertEquals(htables2.length, 5);

      HBaseTestingUtility hbaseTestingUtility = TEST_UTIL
          .getHBaseTestingUtility();
      HBaseAdmin hbaseAdmin = hbaseTestingUtility.getHBaseAdmin();
      String testTableName = "tr";
      String fami = "test";
      // test delete TransactionTable
      String tHTableName = StorageTableNameBuilder
          .buildTransactionTableName(testTableName);
      HTableDescriptor desc = new HTableDescriptor(tHTableName);
      HColumnDescriptor hcolumn = new HColumnDescriptor(fami);
      desc.addFamily(hcolumn);
      hbaseAdmin.createTable(desc);
      HTableDescriptor[] htables3 = fMetaServices.listStorageTables();
      Assert.assertEquals(htables3.length, 6);
      clean.chore();
      HTableDescriptor[] htables4 = fMetaServices.listStorageTables();
      Assert.assertEquals(htables4.length, 5);

      // test delete IndexTable
      Index index = new Index("testIndex", "testTable", null);
      String indexHTableName = StorageTableNameBuilder
          .buildIndexTableName(index);
      HTableDescriptor desc2 = new HTableDescriptor(indexHTableName);
      desc2.addFamily(hcolumn);
      hbaseAdmin.createTable(desc2);
      HTableDescriptor[] htables5 = fMetaServices.listStorageTables();
      Assert.assertEquals(htables5.length, 6);
      clean.chore();
      HTableDescriptor[] htables6 = fMetaServices.listStorageTables();
      Assert.assertEquals(htables6.length, 5);

      // test delete EntityTable
      String eHTableName = StorageTableNameBuilder
          .buildEntityTableName(testTableName);
      HTableDescriptor desc3 = new HTableDescriptor(eHTableName);
      desc3.addFamily(hcolumn);
      hbaseAdmin.createTable(desc3);
      HTableDescriptor[] htables7 = fMetaServices.listStorageTables();
      Assert.assertEquals(htables7.length, 6);
      clean.chore();
      HTableDescriptor[] htables8 = fMetaServices.listStorageTables();
      Assert.assertEquals(htables8.length, 5);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
TOP

Related Classes of com.alibaba.wasp.meta.TestStorageCleanChore

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.