Skip to content

Apache Druid Calcite Query Testing: Cannot read field "componentSupplier" because "config" is null #17920

Closed
@paulo-alves-flttr

Description

@paulo-alves-flttr

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions