/** * Create a matcher that matches if the examined {@link DisplayData} contains an item with the * specified key and Float value. */ public static Matcher<DisplayData> hasDisplayItem(String key, double value) { return hasDisplayItem(key, DisplayData.Type.FLOAT, value); }
/** * Create a matcher that matches if the examined {@link DisplayData} contains an item with the * specified key and Boolean value. */ public static Matcher<DisplayData> hasDisplayItem(String key, Boolean value) { return hasDisplayItem(key, DisplayData.Type.BOOLEAN, value); }
/** * Create a matcher that matches if the examined {@link DisplayData} contains an item with the * specified key and Integer value. */ public static Matcher<DisplayData> hasDisplayItem(String key, long value) { return hasDisplayItem(key, DisplayData.Type.INTEGER, value); }
@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() { 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 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 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)); }
@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 testHasDisplayItem() { Matcher<DisplayData> matcher = hasDisplayItem(); assertFalse(matcher.matches(DisplayData.none())); assertThat(createDisplayDataWithItem("foo", "bar"), matcher); }
@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 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 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 testDisplayDataExcludesValuesAccessedButNeverSet() { HasDefaults options = PipelineOptionsFactory.as(HasDefaults.class); assertEquals("bar", options.getFoo()); DisplayData data = DisplayData.from(options); assertThat(data, not(hasDisplayItem("foo"))); }
@Test public void testHasValue() { Matcher<DisplayData> matcher = hasDisplayItem(hasValue("bar")); assertFalse(matcher.matches(createDisplayDataWithItem("foo", "baz"))); assertThat(createDisplayDataWithItem("foo", "bar"), matcher); }
@Test public void testSourceTransform() { PTransform<? super PBegin, ? extends POutput> myTransform = TextIO.read().from("foo.*"); DisplayDataEvaluator evaluator = DisplayDataEvaluator.create(); Set<DisplayData> displayData = evaluator.displayDataForPrimitiveSourceTransforms(myTransform); assertThat(displayData, hasItem(hasDisplayItem("filePattern", "foo.*"))); } }
@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 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 testWriteDisplayDataValidateThenFooter() { TextIO.Write write = TextIO.write().to("foo").withFooter("myFooter"); DisplayData displayData = DisplayData.from(write); assertThat(displayData, hasDisplayItem("fileFooter", "myFooter")); }
@Test @Category(ValidatesRunner.class) public void testPrimitiveReadDisplayData() { DisplayDataEvaluator evaluator = DisplayDataEvaluator.create(); TextIO.Read read = TextIO.read().from("foobar"); Set<DisplayData> displayData = evaluator.displayDataForPrimitiveSourceTransforms(read); assertThat( "TextIO.Read should include the file prefix in its primitive display data", displayData, hasItem(hasDisplayItem(hasValue(startsWith("foobar"))))); }