package org.rakam.analysis; import com.google.common.eventbus.EventBus; import org.rakam.TestingEnvironment; import org.rakam.analysis.datasource.CustomDataSourceService; import org.rakam.analysis.metadata.Metastore; import org.rakam.collection.FieldDependencyBuilder; import org.rakam.config.ProjectConfig; import org.rakam.plugin.EventStore; import org.rakam.postgresql.analysis.PostgresqlEventStore; import org.rakam.postgresql.analysis.PostgresqlMaterializedViewService; import org.rakam.postgresql.analysis.PostgresqlMetastore; import org.rakam.postgresql.report.PostgresqlEventExplorer; 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 TestPostgresqlEventExplorer extends TestEventExplorer { private TestingEnvironment testingPostgresqlServer; private PostgresqlMetastore metastore; private PostgresqlEventStore eventStore; private PostgresqlEventExplorer eventExplorer; @Override @BeforeSuite public void setup() throws Exception { testingPostgresqlServer = new TestingEnvironment(); InMemoryQueryMetadataStore queryMetadataStore = new InMemoryQueryMetadataStore(); JDBCPoolDataSource dataSource = JDBCPoolDataSource.getOrCreateDataSource(testingPostgresqlServer.getPostgresqlConfig(), "set time zone 'UTC'"); FieldDependencyBuilder.FieldDependency build = new FieldDependencyBuilder().build(); EventBus eventBus = new EventBus(); metastore = new PostgresqlMetastore(dataSource, eventBus); PostgresqlQueryExecutor queryExecutor = new PostgresqlQueryExecutor(new ProjectConfig(), dataSource, metastore, new CustomDataSourceService(dataSource), false); QueryExecutorService executorService = new QueryExecutorService(queryExecutor, metastore, new PostgresqlMaterializedViewService(new ProjectConfig(), queryExecutor, queryMetadataStore), Clock.systemUTC(), '"'); PostgresqlPseudoContinuousQueryService continuousQueryService = new PostgresqlPseudoContinuousQueryService(queryMetadataStore, executorService, queryExecutor); eventStore = new PostgresqlEventStore(dataSource, build); PostgresqlMaterializedViewService materializedViewService = new PostgresqlMaterializedViewService(new ProjectConfig(), queryExecutor, queryMetadataStore); eventExplorer = new PostgresqlEventExplorer( new ProjectConfig(), metastore, new QueryExecutorService(queryExecutor, metastore, materializedViewService, Clock.systemUTC(), '"'), materializedViewService, continuousQueryService); super.setup(); } @Override public EventStore getEventStore() { return eventStore; } @Override public Metastore getMetastore() { return metastore; } @Override public EventExplorer getEventExplorer() { return eventExplorer; } }