use of io.prestosql.spi.statestore.StateStore in project hetu-core by openlookeng.
the class TestStateFetcher method stateStoreMockData.
private void stateStoreMockData() {
stateFetcher.registerStateCollection(STATE_COLLECTION_QUERY);
stateStoreFactory = Mockito.mock(StateStoreFactory.class);
when(stateStoreFactory.getName()).then(new Returns(STATE_STORE_HAZELCAST));
stateStore = Mockito.mock(StateStore.class);
when(stateStore.getName()).then(new Returns(STATE_COLLECTION_QUERY));
when(stateStoreFactory.create(any(), any(), any())).then(new Returns(stateStore));
stateCollection = Mockito.mock(StateMap.class);
when(stateStoreProvider.getStateStore()).then(new Returns(stateStore));
}
use of io.prestosql.spi.statestore.StateStore in project hetu-core by openlookeng.
the class TestStateStoreLauncherAndProvider method testGetStateStore.
@Test
public void testGetStateStore() throws Exception {
// stateStore should be empty at initialization
createStateStoreCluster(PORT3);
StateStore stateStore = stateStoreProvider.getStateStore();
assertNull(stateStore);
stateStoreProvider.loadStateStore();
stateStore = stateStoreProvider.getStateStore();
assertNotNull(stateStore);
}
use of io.prestosql.spi.statestore.StateStore in project hetu-core by openlookeng.
the class TestStateStoreLauncherAndProvider method testLaunchAndFailure.
// Test Launcher
@Test
public void testLaunchAndFailure() throws Exception {
Set<Seed> seeds = new HashSet<>();
SeedStore mockSeedStore = mock(SeedStore.class);
Seed mockSeed1 = mock(Seed.class);
Seed mockSeed2 = mock(Seed.class);
seeds.add(mockSeed1);
seeds.add(mockSeed2);
when(mockSeed1.getLocation()).thenReturn(LOCALHOST + ":" + PORT1);
when(mockSeed2.getLocation()).thenReturn(LOCALHOST + ":" + PORT2);
when(mockSeedStore.get()).thenReturn(seeds);
SeedStoreManager mockSeedStoreManager = mock(SeedStoreManager.class);
when(mockSeedStoreManager.getSeedStore(SeedStoreSubType.HAZELCAST)).thenReturn(mockSeedStore);
when(mockSeedStoreManager.addSeed(SeedStoreSubType.HAZELCAST, LOCALHOST, true)).thenReturn(seeds);
when(mockSeedStoreManager.getFileSystemClient()).thenReturn(new HetuLocalFileSystemClient(new LocalConfig(new Properties()), Paths.get("/")));
InternalCommunicationConfig mockInternalCommunicationConfig = mock(InternalCommunicationConfig.class);
HttpServerInfo mockHttpServerInfo = mock(HttpServerInfo.class);
when(mockHttpServerInfo.getHttpsUri()).thenReturn(new URI("https://" + LOCALHOST + ":" + PORT1));
when(mockInternalCommunicationConfig.isHttpsRequired()).thenReturn(true);
EmbeddedStateStoreLauncher launcher = new EmbeddedStateStoreLauncher(mockSeedStoreManager, mockInternalCommunicationConfig, mockHttpServerInfo, new HetuConfig());
StateStoreBootstrapper bootstrapper = new HazelcastStateStoreBootstrapper();
launcher.addStateStoreBootstrapper(bootstrapper);
launcher.launchStateStore();
StateStore second = setupSecondInstance();
// mock "remove" second instance from cluster (delete from seed store)
seeds.remove(mockSeed2);
when(mockSeed1.getLocation()).thenReturn(LOCALHOST + ":" + PORT1);
when(mockSeedStoreManager.addSeed(SeedStoreSubType.HAZELCAST, LOCALHOST, true)).thenReturn(seeds);
((HazelcastStateStore) second).shutdown();
// Allow the first node to handle failure
Thread.sleep(3000L);
}
use of io.prestosql.spi.statestore.StateStore in project hetu-core by openlookeng.
the class TestHetuMetastoreGlobalCache method setUp.
@BeforeClass
public void setUp() throws Throwable {
try {
Map<String, String> config = new ImmutableMap.Builder<String, String>().put("hetu.metastore.hetufilesystem.path", path).put("hetu.metastore.hetufilesystem.profile-name", "local-config-catalog").put("hetu.metastore.cache.size", "10000").put("hetu.metastore.cache.ttl", "10h").build();
LocalConfig localConfig = new LocalConfig(null);
client = new HetuLocalFileSystemClient(localConfig, Paths.get(path));
if (!client.exists(Paths.get(path))) {
client.createDirectories(Paths.get(path));
}
client.deleteRecursively(Paths.get(path));
createStateStoreCluster(PORT3);
stateStoreProvider.loadStateStore();
StateStore stateStore = stateStoreProvider.getStateStore();
String type = GLOBAL;
Bootstrap app = new Bootstrap(new MBeanModule(), new MBeanServerModule(), new HetuFsMetastoreModule(client, stateStore, type));
Injector injector = app.strictConfig().doNotInitializeLogging().setRequiredConfigurationProperties(config).initialize();
metastore = injector.getInstance(HetuMetastore.class);
} catch (Exception ex) {
throwIfUnchecked(ex);
throw new PrestoException(HETU_METASTORE_CODE, "init hetu metastore module failed.");
}
// create default catalog and database
defaultCatalog = CatalogEntity.builder().setCatalogName("hetu1").setOwner("hetu1").build();
metastore.createCatalog(defaultCatalog);
defaultDatabase = DatabaseEntity.builder().setCatalogName(defaultCatalog.getName()).setDatabaseName("db1").build();
metastore.createDatabase(defaultDatabase);
// get metastore catalog cache
Field catalogCacheField = metastore.getClass().getSuperclass().getDeclaredField("catalogCache");
catalogCacheField.setAccessible(true);
catalogCache = (HetuCache<String, Optional<CatalogEntity>>) catalogCacheField.get(metastore);
Field catalogsCacheField = metastore.getClass().getSuperclass().getDeclaredField("catalogsCache");
catalogsCacheField.setAccessible(true);
catalogsCache = (HetuCache<String, List<CatalogEntity>>) catalogsCacheField.get(metastore);
// get metastore database cache
Field databaseCacheField = metastore.getClass().getSuperclass().getDeclaredField("databaseCache");
databaseCacheField.setAccessible(true);
databaseCache = (HetuCache<String, Optional<DatabaseEntity>>) databaseCacheField.get(metastore);
Field databasesCacheField = metastore.getClass().getSuperclass().getDeclaredField("databasesCache");
databasesCacheField.setAccessible(true);
databasesCache = (HetuCache<String, List<DatabaseEntity>>) databasesCacheField.get(metastore);
// get metastore table cache
Field tableCacheField = metastore.getClass().getSuperclass().getDeclaredField("tableCache");
tableCacheField.setAccessible(true);
tableCache = (HetuCache<String, Optional<TableEntity>>) tableCacheField.get(metastore);
Field tablesCacheField = metastore.getClass().getSuperclass().getDeclaredField("tablesCache");
tablesCacheField.setAccessible(true);
tablesCache = (HetuCache<String, List<TableEntity>>) tablesCacheField.get(metastore);
}
use of io.prestosql.spi.statestore.StateStore in project hetu-core by openlookeng.
the class TestDistributedResourceGroup method setup.
@BeforeClass
public void setup() {
statestore = Mockito.mock(StateStore.class);
when(statestore.getLock(anyString())).then(new Returns(new ReentrantLock()));
internalNodeManager = Mockito.mock(InternalNodeManager.class);
}
Aggregations