Skip to content

Commit

Permalink
Added unit tests for hive hooks that work on a single hms
Browse files Browse the repository at this point in the history
  • Loading branch information
yangyx committed Jul 5, 2024
1 parent 62678a8 commit 5c69dfe
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,28 @@
*/
package com.hotels.bdp.waggledance.mapping.model;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import static com.hotels.bdp.waggledance.api.model.AbstractMetaStore.newFederatedInstance;

import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import org.apache.hadoop.hive.metastore.DefaultMetaStoreFilterHookImpl;
import org.apache.hadoop.hive.metastore.MetaStoreFilterHook;
import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
import org.apache.hadoop.hive.metastore.api.Table;
import org.apache.thrift.TException;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
Expand Down Expand Up @@ -64,6 +69,7 @@ public class MetaStoreMappingFactoryImplTest {
new WaggleDanceConfiguration(), new SplitTrafficMetastoreClientFactory());

private MetaStoreMappingFactoryImpl factory;
public @Rule TemporaryFolder temporaryFolder = new TemporaryFolder();

@Before
public void init() {
Expand Down Expand Up @@ -133,13 +139,36 @@ public void unreachableMetastoreClient() {
}
}

@Test
public void loadMetastoreFilterHook(){

}

@Test
public void loadMetastoreFilterHookFromConfig() {
AbstractMetaStore federatedMetaStore = newFederatedInstance("fed1", thrift.getThriftConnectionUri());
federatedMetaStore.setHiveMetastoreFilterHook(PrefixingMetastoreFilter.class.getName());
Map<String,String> metaStoreConfigurationProperties = new HashMap<>();
metaStoreConfigurationProperties.put(PrefixingMetastoreFilter.PREFIX_KEY,"prefix-test-");
federatedMetaStore.setConfigurationProperties(metaStoreConfigurationProperties);

MetaStoreMapping mapping = factory.newInstance(federatedMetaStore);
assertThat(mapping, is(notNullValue()));
assertThat(mapping.getMetastoreFilter(), instanceOf(PrefixingMetastoreFilter.class));

MetaStoreFilterHook filterHook = mapping.getMetastoreFilter();
assertThat(filterHook, instanceOf(PrefixingMetastoreFilter.class));

Table table = new Table();
try {
StorageDescriptor sd = new StorageDescriptor();
File localWarehouseUri = temporaryFolder.newFolder("local-warehouse");
sd.setLocation(new File(localWarehouseUri,"local_database/local_table").toURI().toString());
table.setSd(sd);

String oldLocation=sd.getLocation();
assertThat(filterHook.filterTable(table).getSd().getLocation(), equalTo("prefix-test-" + oldLocation ) );
}catch (Exception e){
}
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,12 @@
* */
public class PrefixingMetastoreFilter implements MetaStoreFilterHook {

public static final String PREFIX = "prefix-";
public static final String PREFIX_KEY = "hive.metastore.hooks.prefix";
public static final String PREFIX_DEFAULT = "prefix-";
private final String prefix;

public PrefixingMetastoreFilter(HiveConf conf) {
prefix = conf.get(PREFIX_KEY,PREFIX_DEFAULT);
}

@Override
Expand Down Expand Up @@ -140,7 +143,7 @@ private void setLocationPrefix(Partition partition) {

private void setLocationPrefix(StorageDescriptor sd) {
String location = sd.getLocation();
sd.setLocation(PREFIX + location);
sd.setLocation(prefix + location);
}

}

0 comments on commit 5c69dfe

Please sign in to comment.