validate non-empty String baseDataSource in MaterializedViewSupervisorSpec, added tests (#6075)

This commit is contained in:
chengchengpei 2018-08-07 20:23:10 -04:00 committed by Jihoon Son
parent 577632f5c1
commit c3b7704b50
2 changed files with 98 additions and 4 deletions

View File

@ -26,6 +26,7 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.common.base.Strings;
import io.druid.data.input.impl.DimensionSchema; import io.druid.data.input.impl.DimensionSchema;
import io.druid.data.input.impl.DimensionsSpec; import io.druid.data.input.impl.DimensionsSpec;
import io.druid.indexer.HadoopIOConfig; import io.druid.indexer.HadoopIOConfig;
@ -102,10 +103,9 @@ public class MaterializedViewSupervisorSpec implements SupervisorSpec
@JacksonInject ChatHandlerProvider chatHandlerProvider @JacksonInject ChatHandlerProvider chatHandlerProvider
) )
{ {
this.baseDataSource = Preconditions.checkNotNull( Preconditions.checkArgument(!Strings.isNullOrEmpty(baseDataSource), "baseDataSource cannot be null or empty. Please provide a baseDataSource.");
baseDataSource, this.baseDataSource = baseDataSource;
"baseDataSource cannot be null. Please provide a baseDataSource."
);
this.dimensionsSpec = Preconditions.checkNotNull( this.dimensionsSpec = Preconditions.checkNotNull(
dimensionsSpec, dimensionsSpec,
"dimensionsSpec cannot be null. Please provide a dimensionsSpec" "dimensionsSpec cannot be null. Please provide a dimensionsSpec"

View File

@ -44,11 +44,17 @@ import static org.easymock.EasyMock.createMock;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.hamcrest.CoreMatchers;
import org.junit.Rule;
import org.junit.rules.ExpectedException;
import java.io.IOException; import java.io.IOException;
public class MaterializedViewSupervisorSpecTest public class MaterializedViewSupervisorSpecTest
{ {
@Rule
public ExpectedException expectedException = ExpectedException.none();
private ObjectMapper objectMapper = TestHelper.makeJsonMapper(); private ObjectMapper objectMapper = TestHelper.makeJsonMapper();
@Before @Before
@ -143,4 +149,92 @@ public class MaterializedViewSupervisorSpecTest
Assert.assertEquals(expected.getDimensions(), spec.getDimensions()); Assert.assertEquals(expected.getDimensions(), spec.getDimensions());
Assert.assertEquals(expected.getMetrics(), spec.getMetrics()); Assert.assertEquals(expected.getMetrics(), spec.getMetrics());
} }
@Test
public void testEmptyBaseDataSource() throws Exception
{
expectedException.expect(CoreMatchers.instanceOf(IllegalArgumentException.class));
expectedException.expectMessage(
"baseDataSource cannot be null or empty. Please provide a baseDataSource."
);
MaterializedViewSupervisorSpec materializedViewSupervisorSpec = new MaterializedViewSupervisorSpec(
"",
new DimensionsSpec(
Lists.newArrayList(
new StringDimensionSchema("isUnpatrolled"),
new StringDimensionSchema("metroCode"),
new StringDimensionSchema("namespace"),
new StringDimensionSchema("page"),
new StringDimensionSchema("regionIsoCode"),
new StringDimensionSchema("regionName"),
new StringDimensionSchema("user")
),
null,
null
),
new AggregatorFactory[]{
new CountAggregatorFactory("count"),
new LongSumAggregatorFactory("added", "added")
},
HadoopTuningConfig.makeDefaultTuningConfig(),
null,
null,
null,
null,
null,
objectMapper,
null,
null,
null,
null,
null,
new MaterializedViewTaskConfig(),
createMock(AuthorizerMapper.class),
new NoopChatHandlerProvider()
);
}
@Test
public void testNullBaseDataSource() throws Exception
{
expectedException.expect(CoreMatchers.instanceOf(IllegalArgumentException.class));
expectedException.expectMessage(
"baseDataSource cannot be null or empty. Please provide a baseDataSource."
);
MaterializedViewSupervisorSpec materializedViewSupervisorSpec = new MaterializedViewSupervisorSpec(
null,
new DimensionsSpec(
Lists.newArrayList(
new StringDimensionSchema("isUnpatrolled"),
new StringDimensionSchema("metroCode"),
new StringDimensionSchema("namespace"),
new StringDimensionSchema("page"),
new StringDimensionSchema("regionIsoCode"),
new StringDimensionSchema("regionName"),
new StringDimensionSchema("user")
),
null,
null
),
new AggregatorFactory[]{
new CountAggregatorFactory("count"),
new LongSumAggregatorFactory("added", "added")
},
HadoopTuningConfig.makeDefaultTuningConfig(),
null,
null,
null,
null,
null,
objectMapper,
null,
null,
null,
null,
null,
new MaterializedViewTaskConfig(),
createMock(AuthorizerMapper.class),
new NoopChatHandlerProvider()
);
}
} }