mirror of https://github.com/apache/druid.git
Validate dataschema datasource (#5785)
* Validate dataschema has a datasource * Fix tests * Use Guava Strings.isNullOrEmpty * Inverse nullempty check, whoops
This commit is contained in:
parent
f2cc6ce4d5
commit
c537ea56f6
|
@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
|
|||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.Sets;
|
||||
import io.druid.data.input.impl.DimensionsSpec;
|
||||
import io.druid.data.input.impl.InputRowParser;
|
||||
|
@ -68,10 +69,12 @@ public class DataSchema
|
|||
)
|
||||
{
|
||||
this.jsonMapper = Preconditions.checkNotNull(jsonMapper, "null ObjectMapper.");
|
||||
this.dataSource = Preconditions.checkNotNull(dataSource, "dataSource cannot be null. Please provide a dataSource.");
|
||||
this.parser = parser;
|
||||
this.transformSpec = transformSpec == null ? TransformSpec.NONE : transformSpec;
|
||||
|
||||
Preconditions.checkArgument(!Strings.isNullOrEmpty(dataSource), "dataSource cannot be null or empty. Please provide a dataSource.");
|
||||
this.dataSource = dataSource;
|
||||
|
||||
if (granularitySpec == null) {
|
||||
log.warn("No granularitySpec has been specified. Using UniformGranularitySpec as default.");
|
||||
this.granularitySpec = new UniformGranularitySpec(null, null, null);
|
||||
|
|
|
@ -285,6 +285,43 @@ public class DataSchemaTest
|
|||
// Jackson creates a default type parser (StringInputRowParser) for an invalid type.
|
||||
schema.getParser();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmptyDatasource() throws Exception
|
||||
{
|
||||
Map<String, Object> parser = jsonMapper.convertValue(
|
||||
new StringInputRowParser(
|
||||
new JSONParseSpec(
|
||||
new TimestampSpec("time", "auto", null),
|
||||
new DimensionsSpec(
|
||||
DimensionsSpec.getDefaultSchemas(ImmutableList.of("time", "dimA", "dimB", "col2")),
|
||||
ImmutableList.of("dimC"),
|
||||
null
|
||||
),
|
||||
null,
|
||||
null
|
||||
),
|
||||
null
|
||||
), JacksonUtils.TYPE_REFERENCE_MAP_STRING_OBJECT
|
||||
);
|
||||
|
||||
expectedException.expect(CoreMatchers.instanceOf(IllegalArgumentException.class));
|
||||
expectedException.expectMessage(
|
||||
"dataSource cannot be null or empty. Please provide a dataSource."
|
||||
);
|
||||
|
||||
DataSchema schema = new DataSchema(
|
||||
"",
|
||||
parser,
|
||||
new AggregatorFactory[]{
|
||||
new DoubleSumAggregatorFactory("metric1", "col1"),
|
||||
new DoubleSumAggregatorFactory("metric2", "col2"),
|
||||
},
|
||||
new ArbitraryGranularitySpec(Granularities.DAY, ImmutableList.of(Intervals.of("2014/2015"))),
|
||||
null,
|
||||
jsonMapper
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerde() throws Exception
|
||||
|
|
Loading…
Reference in New Issue