@Test public void testAcceptsNullOptionalValues() { DisplayData.from( new HasDisplayData() { @Override public void populateDisplayData(Builder builder) { builder.add(DisplayData.item("key", "value").withLabel(null).withLinkUrl(null)); } }); // Should not throw }
@Test public void testDisplayData() { assertThat(DisplayData.from(Filter.lessThan(123)), hasDisplayItem("predicate", "x < 123")); assertThat(DisplayData.from(Filter.lessThanEq(234)), hasDisplayItem("predicate", "x ≤ 234")); assertThat(DisplayData.from(Filter.greaterThan(345)), hasDisplayItem("predicate", "x > 345")); assertThat(DisplayData.from(Filter.greaterThanEq(456)), hasDisplayItem("predicate", "x ≥ 456")); assertThat(DisplayData.from(Filter.equal(567)), hasDisplayItem("predicate", "x == 567")); }
@Test public void testDefaultPopulateDisplayDataImplementation() { DoFn<String, String> fn = new DoFn<String, String>() {}; DisplayData displayData = DisplayData.from(fn); assertThat(displayData.items(), empty()); } }
@Test public void testDisplayData() { Top.Natural<Integer> comparer = new Top.Natural<>(); PTransform<?, ?> approxQuanitiles = ApproximateQuantiles.globally(20, comparer); DisplayData displayData = DisplayData.from(approxQuanitiles); assertThat(displayData, hasDisplayItem("numQuantiles", 20)); assertThat(displayData, hasDisplayItem("comparer", comparer.getClass())); }
@Test public void testDisplayData() { GroupByKey<String, String> groupByKey = GroupByKey.create(); GroupByKey<String, String> groupByFewKeys = GroupByKey.createWithFewKeys(); DisplayData gbkDisplayData = DisplayData.from(groupByKey); DisplayData fewKeysDisplayData = DisplayData.from(groupByFewKeys); assertThat(gbkDisplayData.items(), empty()); assertThat(fewKeysDisplayData, hasDisplayItem("fewKeys", true)); }
@Test public void testDuplicateKeyThrowsException() { thrown.expectCause(isA(IllegalArgumentException.class)); DisplayData.from( new HasDisplayData() { @Override public void populateDisplayData(DisplayData.Builder builder) { builder.add(DisplayData.item("foo", "bar")).add(DisplayData.item("foo", "baz")); } }); }
@Test public void testSimpleFunctionClassDisplayData() { SimpleFunction<?, ?> simpleFn = new SimpleFunction<Integer, Integer>() { @Override public Integer apply(Integer input) { return input; } }; MapElements<?, ?> simpleMap = MapElements.via(simpleFn); assertThat(DisplayData.from(simpleMap), hasDisplayItem("class", simpleFn.getClass())); }
@Test public void testIncludeEmptyPath() { thrown.expectCause(isA(IllegalArgumentException.class)); DisplayData.from( new HasDisplayData() { @Override public void populateDisplayData(Builder builder) { builder.include("", new NoopDisplayData()); } }); }
@Test public void testDisplayDataExcludesValuesAccessedButNeverSet() { HasDefaults options = PipelineOptionsFactory.as(HasDefaults.class); assertEquals("bar", options.getFoo()); DisplayData data = DisplayData.from(options); assertThat(data, not(hasDisplayItem("foo"))); }
@Test public void testAutoValue() { DisplayData data = DisplayData.from(new AutoValue_DisplayDataTest_Foo()); Item item = Iterables.getOnlyElement(data.asMap().values()); assertEquals(Foo.class, item.getNamespace()); }
@Test public void testIncludesComponentsAtSamePath() { HasDisplayData component = new HasDisplayData() { @Override public void populateDisplayData(Builder builder) { builder.include("p", new NoopDisplayData()).include("p", new NoopDisplayData()); } }; thrown.expectCause(isA(IllegalArgumentException.class)); DisplayData.from(component); }
@Test public void testReadDisplayData() { AvroIO.Read<String> read = AvroIO.read(String.class).from("/foo.*"); DisplayData displayData = DisplayData.from(read); assertThat(displayData, hasDisplayItem("filePattern", "/foo.*")); }
@Test public void testRuntimeOptionsNotCalledInApplyInputQuery() { BigQueryIO.Read read = BigQueryIO.read().fromQuery(p.newProvider("")).withoutValidation(); // Test that this doesn't throw. DisplayData.from(read); }
@Test public void testWriteDisplayDataValidateThenFooter() { TextIO.Write write = TextIO.write().to("foo").withFooter("myFooter"); DisplayData displayData = DisplayData.from(write); assertThat(displayData, hasDisplayItem("fileFooter", "myFooter")); }
@Test public void testDisplayDataExcludesDefaults() { Window<?> window = Window.into(new GlobalWindows()) .triggering(DefaultTrigger.of()) .withAllowedLateness(Duration.millis(BoundedWindow.TIMESTAMP_MAX_VALUE.getMillis())); DisplayData data = DisplayData.from(window); assertThat(data, not(hasDisplayItem("trigger"))); assertThat(data, not(hasDisplayItem("allowedLateness"))); }
@Test public void testUnboundedDisplayData() { Duration maxReadTime = Duration.standardHours(5); SerializableFunction<Long, Instant> timestampFn = input -> Instant.now(); PTransform<?, ?> input = GenerateSequence.from(0).to(1234).withMaxReadTime(maxReadTime).withTimestampFn(timestampFn); DisplayData displayData = DisplayData.from(input); assertThat(displayData, hasDisplayItem("maxReadTime", maxReadTime)); assertThat(displayData, hasDisplayItem("timestampFn", timestampFn.getClass())); }
@Test public void testDisplayData() { AvroSource<Bird> source = AvroSource.from("foobar.txt").withSchema(Bird.class).withMinBundleSize(1234); DisplayData displayData = DisplayData.from(source); assertThat(displayData, hasDisplayItem("filePattern", "foobar.txt")); assertThat(displayData, hasDisplayItem("minBundleSize", 1234)); }
@Test public void testDisplayData() { Duration offset = Duration.standardSeconds(1234); Duration size = Duration.standardSeconds(2345); FixedWindows fixedWindows = FixedWindows.of(size).withOffset(offset); DisplayData displayData = DisplayData.from(fixedWindows); assertThat(displayData, hasDisplayItem("size", size)); assertThat(displayData, hasDisplayItem("offset", offset)); } }
@Test public void testReadDisplayData() { TextIO.Read read = TextIO.read().from("foo.*").withCompression(BZIP2); DisplayData displayData = DisplayData.from(read); assertThat(displayData, hasDisplayItem("filePattern", "foo.*")); assertThat(displayData, hasDisplayItem("compressionType", BZIP2.toString())); }
@Test public void testReadDisplayData() { TFRecordIO.Read read = TFRecordIO.read().from("foo.*").withCompression(GZIP).withoutValidation(); DisplayData displayData = DisplayData.from(read); assertThat(displayData, hasDisplayItem("filePattern", "foo.*")); assertThat(displayData, hasDisplayItem("compressionType", GZIP.toString())); assertThat(displayData, hasDisplayItem("validation", false)); }