Closed
Description
I have an druid extension project that adds new user defined function to Druid SQL, but I have been facing some problems when implementing tests. I have used this example as reference but it is broken, since configureGuice method no longer exists as Druid 32.
I have tried the following by reading the source code from Druid:
@ComponentSupplier(MyComponentSupplier.class)
public class CustomSqlAggregatorTest extends BaseCalciteQueryTest {
@Test
public void testCustomAggSql() {
cannotVectorize();
testBuilder()
.sql("select CUSTOM_AGG(m1) from foo")
.expectedQueries(
List.of(
Druids.newTimeseriesQueryBuilder()
.dataSource(CalciteTests.DATASOURCE1)
.intervals(querySegmentSpec(Filtration.eternity()))
.granularity(Granularities.ALL)
.aggregators(aggregators(getAggFactory()))
.context(QUERY_CONTEXT_DEFAULT)
.build()
)
)
.expectedResults(ImmutableList.of(new Object[]{21.0F}))
.run();
}
...
}
But I get the following error:
Caused by: java.lang.NullPointerException: Cannot read field "componentSupplier" because "config" is null
at org.apache.druid.sql.calcite.SqlTestFrameworkConfig$ConfigurationInstance.<init>(SqlTestFrameworkConfig.java:378)
at org.apache.druid.sql.calcite.SqlTestFrameworkConfig$SqlTestFrameworkConfigStore.getConfigurationInstance(SqlTestFrameworkConfig.java:253)
at org.apache.druid.sql.calcite.SqlTestFrameworkConfig$Rule.get(SqlTestFrameworkConfig.java:344)
at org.apache.druid.sql.calcite.BaseCalciteQueryTest.queryFramework(BaseCalciteQueryTest.java:535)
... 34 more
My component supplier code looks like the following:
public class MyComponentSupplier extends SqlTestFramework.StandardComponentSupplier {
public MyComponentSupplier(TempDirProducer tempDirProducer) {
super(tempDirProducer);
}
@Override
public DruidModule getCoreModule() {
return DruidModuleCollection.of(
super.getCoreModule(),
new MyExtensionModule()
);
}
}
Any suggestions?
Metadata
Metadata
Assignees
Labels
No labels