func TestEnableTable(t *testing.T) { testTableName := "test1_" + getTimestampString() t.Log("testTableName=" + testTableName) ac := gohbase.NewAdminClient(*host) crt := hrpc.NewCreateTable(context.Background(), []byte(testTableName), cFamilies) if err := ac.CreateTable(crt); err != nil { t.Errorf("CreateTable returned an error: %v", err) } // disable dit := hrpc.NewDisableTable(context.Background(), []byte(testTableName)) err := ac.DisableTable(dit) if err != nil { t.Errorf("DisableTable returned an error: %v", err) } et := hrpc.NewEnableTable(context.Background(), []byte(testTableName)) err = ac.EnableTable(et) if err != nil { t.Errorf("EnableTable returned an error: %v", err) } delt := hrpc.NewDeleteTable(context.Background(), []byte(testTableName)) err = ac.DeleteTable(delt) if err == nil || !strings.Contains(err.Error(), "TableNotDisabledException") { t.Errorf("DeleteTable should error with TableNotDisabledException, got %s", err) } }
// DeleteTable finds the HBase shell via the HBASE_HOME environment variable, // and disables and drops the given table func DeleteTable(client gohbase.AdminClient, table string) error { dit := hrpc.NewDisableTable(context.Background(), []byte(table)) err := client.DisableTable(dit) if err != nil { if !strings.Contains(err.Error(), "TableNotEnabledException") { return err } } det := hrpc.NewDeleteTable(context.Background(), []byte(table)) err = client.DeleteTable(det) if err != nil { return err } return nil }
// DeleteTable finds the HBase shell via the HBASE_HOME environment variable, // and disables and drops the given table func DeleteTable(host, table string) error { // TODO: We leak this client. ac := gohbase.NewClient(host, gohbase.Admin()) dit := hrpc.NewDisableTable(context.Background(), []byte(table)) _, err := ac.SendRPC(dit) if err != nil { if !strings.Contains(err.Error(), "TableNotEnabledException") { return err } } det := hrpc.NewDeleteTable(context.Background(), []byte(table)) _, err = ac.SendRPC(det) if err != nil { return err } return nil }
func TestDisableDeleteTable(t *testing.T) { testTableName := "test1_" + getTimestampString() t.Log("testTableName=" + testTableName) ac := gohbase.NewAdminClient(*host) crt := hrpc.NewCreateTable(context.Background(), []byte(testTableName), cFamilies) if err := ac.CreateTable(crt); err != nil { t.Errorf("CreateTable returned an error: %v", err) } // disable dit := hrpc.NewDisableTable(context.Background(), []byte(testTableName)) err := ac.DisableTable(dit) if err != nil { t.Errorf("DisableTable returned an error: %v", err) } // HBase protobuf will error if testTableName wasn't disabled before deletion det := hrpc.NewDeleteTable(context.Background(), []byte(testTableName)) err = ac.DeleteTable(det) if err != nil { t.Errorf("DeleteTable returned an error: %v", err) } // check in hbase:meta if there's a region for the table c := gohbase.NewClient(*host) metaKey := testTableName + ",," keyFilter := filter.NewPrefixFilter([]byte(metaKey)) scan, err := hrpc.NewScanStr(context.Background(), metaTableName, hrpc.Filters(keyFilter)) if err != nil { t.Fatalf("Failed to create Scan request: %s", err) } rsp, err := c.Scan(scan) if err != nil { t.Errorf("Scan returned an error: %v", err) } if len(rsp) != 0 { t.Errorf("Meta returned %s rows for prefix '%s' , want 0", len(rsp), metaKey) } }