Search in sources :

Example 16 with LocalConfig

use of io.hetu.core.filesystem.LocalConfig 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);
}
Also used : HazelcastStateStore(io.hetu.core.statestore.hazelcast.HazelcastStateStore) LocalConfig(io.hetu.core.filesystem.LocalConfig) StateStore(io.prestosql.spi.statestore.StateStore) HazelcastStateStore(io.hetu.core.statestore.hazelcast.HazelcastStateStore) Properties(java.util.Properties) HazelcastStateStoreBootstrapper(io.hetu.core.statestore.hazelcast.HazelcastStateStoreBootstrapper) URI(java.net.URI) HetuConfig(io.prestosql.utils.HetuConfig) SeedStoreManager(io.prestosql.seedstore.SeedStoreManager) InternalCommunicationConfig(io.prestosql.server.InternalCommunicationConfig) Seed(io.prestosql.spi.seedstore.Seed) SeedStore(io.prestosql.spi.seedstore.SeedStore) HetuLocalFileSystemClient(io.hetu.core.filesystem.HetuLocalFileSystemClient) HttpServerInfo(io.airlift.http.server.HttpServerInfo) HazelcastStateStoreBootstrapper(io.hetu.core.statestore.hazelcast.HazelcastStateStoreBootstrapper) StateStoreBootstrapper(io.prestosql.spi.statestore.StateStoreBootstrapper) HashSet(java.util.HashSet) Test(org.testng.annotations.Test) BeforeTest(org.testng.annotations.BeforeTest) AfterTest(org.testng.annotations.AfterTest)

Example 17 with LocalConfig

use of io.hetu.core.filesystem.LocalConfig in project hetu-core by openlookeng.

the class TestFileBasedSeedStore method setUp.

/**
 * set up before unit test runs
 */
@BeforeMethod
public void setUp() {
    Map<String, String> config = new HashMap<>(0);
    config.put(FileBasedSeedConstants.SEED_STORE_FILESYSTEM_DIR, rootDir);
    filebasedSeedStoreFactory = new FileBasedSeedStoreFactory();
    seedStore = (FileBasedSeedStore) filebasedSeedStoreFactory.create("filebased", SeedStoreSubType.HAZELCAST, new HetuLocalFileSystemClient(new LocalConfig(new Properties()), Paths.get(rootDir)), config);
    seedStore.setName(clusterName);
}
Also used : HashMap(java.util.HashMap) LocalConfig(io.hetu.core.filesystem.LocalConfig) Properties(java.util.Properties) HetuLocalFileSystemClient(io.hetu.core.filesystem.HetuLocalFileSystemClient) BeforeMethod(org.testng.annotations.BeforeMethod)

Example 18 with LocalConfig

use of io.hetu.core.filesystem.LocalConfig 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);
}
Also used : MBeanModule(org.weakref.jmx.guice.MBeanModule) Optional(java.util.Optional) LocalConfig(io.hetu.core.filesystem.LocalConfig) StateStore(io.prestosql.spi.statestore.StateStore) PrestoException(io.prestosql.spi.PrestoException) ImmutableMap(com.google.common.collect.ImmutableMap) PrestoException(io.prestosql.spi.PrestoException) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) HetuMetastore(io.prestosql.spi.metastore.HetuMetastore) Field(java.lang.reflect.Field) MBeanServerModule(io.prestosql.plugin.base.jmx.MBeanServerModule) Injector(com.google.inject.Injector) Bootstrap(io.airlift.bootstrap.Bootstrap) List(java.util.List) HetuLocalFileSystemClient(io.hetu.core.filesystem.HetuLocalFileSystemClient) HetuFsMetastoreModule(io.hetu.core.metastore.hetufilesystem.HetuFsMetastoreModule) BeforeClass(org.testng.annotations.BeforeClass)

Example 19 with LocalConfig

use of io.hetu.core.filesystem.LocalConfig in project hetu-core by openlookeng.

the class TestMemoryMetadata method setUp.

@BeforeMethod
public void setUp() throws IOException {
    TempFolder tmp = new TempFolder().create();
    Runtime.getRuntime().addShutdownHook(new Thread(tmp::close));
    metadata = new MemoryMetadata(new TestingTypeManager(), new TestingNodeManager(), new HetuFsMetastore(new HetuFsMetastoreConfig().setHetuFileSystemMetastorePath(tmp.getRoot().getCanonicalPath()), new HetuLocalFileSystemClient(new LocalConfig(null), Paths.get(tmp.getRoot().getCanonicalPath()))), null, new MemoryConfig());
}
Also used : HetuFsMetastoreConfig(io.hetu.core.metastore.hetufilesystem.HetuFsMetastoreConfig) TempFolder(io.hetu.core.common.filesystem.TempFolder) TestingNodeManager(io.prestosql.testing.TestingNodeManager) LocalConfig(io.hetu.core.filesystem.LocalConfig) HetuFsMetastore(io.hetu.core.metastore.hetufilesystem.HetuFsMetastore) HetuLocalFileSystemClient(io.hetu.core.filesystem.HetuLocalFileSystemClient) TestingTypeManager(io.prestosql.spi.type.testing.TestingTypeManager) BeforeMethod(org.testng.annotations.BeforeMethod)

Aggregations

HetuLocalFileSystemClient (io.hetu.core.filesystem.HetuLocalFileSystemClient)19 LocalConfig (io.hetu.core.filesystem.LocalConfig)19 Properties (java.util.Properties)15 BeforeMethod (org.testng.annotations.BeforeMethod)8 Path (java.nio.file.Path)7 FileSystemClientManager (io.prestosql.filesystem.FileSystemClientManager)6 BeforeClass (org.testng.annotations.BeforeClass)5 Test (org.testng.annotations.Test)5 HetuMetastore (io.prestosql.spi.metastore.HetuMetastore)4 IOException (java.io.IOException)4 ImmutableMap (com.google.common.collect.ImmutableMap)3 Injector (com.google.inject.Injector)3 Bootstrap (io.airlift.bootstrap.Bootstrap)3 MBeanServerModule (io.prestosql.plugin.base.jmx.MBeanServerModule)3 PrestoException (io.prestosql.spi.PrestoException)3 StateStore (io.prestosql.spi.statestore.StateStore)3 MBeanModule (org.weakref.jmx.guice.MBeanModule)3 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)2 TempFolder (io.hetu.core.common.filesystem.TempFolder)2 HetuFsMetastore (io.hetu.core.metastore.hetufilesystem.HetuFsMetastore)2