package org.rakam.collection;
import com.google.common.eventbus.EventBus;
import org.rakam.TestingEnvironment;
import org.rakam.analysis.ConfigManager;
import org.rakam.analysis.InMemoryEventStore;
import org.rakam.analysis.InMemoryQueryMetadataStore;
import org.rakam.analysis.JDBCPoolDataSource;
import org.rakam.analysis.datasource.CustomDataSourceService;
import org.rakam.analysis.metadata.Metastore;
import org.rakam.config.ProjectConfig;
import org.rakam.plugin.user.AbstractUserService;
import org.rakam.plugin.user.UserPluginConfig;
import org.rakam.postgresql.PostgresqlConfigManager;
import org.rakam.postgresql.analysis.PostgresqlMaterializedViewService;
import org.rakam.postgresql.analysis.PostgresqlMetastore;
import org.rakam.postgresql.plugin.user.PostgresqlUserService;
import org.rakam.postgresql.plugin.user.PostgresqlUserStorage;
import org.rakam.postgresql.report.PostgresqlPseudoContinuousQueryService;
import org.rakam.postgresql.report.PostgresqlQueryExecutor;
import org.rakam.report.QueryExecutorService;
import org.testng.annotations.BeforeSuite;
import java.time.Clock;
public class TestPostgresqlUserStorage
extends TestUserStorage
{
private TestingEnvironment testingPostgresqlServer;
private PostgresqlMetastore metastore;
private PostgresqlUserService userService;
private PostgresqlConfigManager configManager;
@BeforeSuite
@Override
public void setUp()
throws Exception
{
testingPostgresqlServer = new TestingEnvironment();
InMemoryQueryMetadataStore queryMetadataStore = new InMemoryQueryMetadataStore();
JDBCPoolDataSource dataSource = JDBCPoolDataSource.getOrCreateDataSource(testingPostgresqlServer.getPostgresqlConfig(), "set time zone 'UTC'");
EventBus eventBus = new EventBus();
metastore = new PostgresqlMetastore(dataSource, eventBus);
PostgresqlQueryExecutor queryExecutor = new PostgresqlQueryExecutor(new ProjectConfig(), dataSource, metastore, new CustomDataSourceService(dataSource), false);
PostgresqlMaterializedViewService materializedViewService = new PostgresqlMaterializedViewService(new ProjectConfig(), queryExecutor, queryMetadataStore);
QueryExecutorService queryExecutorService = new QueryExecutorService(queryExecutor, metastore, materializedViewService, Clock.systemUTC(), '"');
configManager = new PostgresqlConfigManager(dataSource);
configManager.setup();
PostgresqlUserStorage userStorage = new PostgresqlUserStorage(queryExecutorService, materializedViewService, configManager, queryExecutor);
userService = new PostgresqlUserService(new ProjectConfig(), userStorage, metastore, queryExecutor);
super.setUp();
}
@Override
public AbstractUserService getUserService()
{
return userService;
}
@Override
public ConfigManager getConfigManager()
{
return configManager;
}
@Override
public Metastore getMetastore()
{
return metastore;
}
}