@Test public void testFilteringUsingProjectedName() { Tuple query = makeIDTuple(TupleClassifier.Type.QUERY_TUPLE, "42", makeProjectionFilterQuery("mid", singletonList("123"), EQUALS, Pair.of("field", "id"), Pair.of("map_field.id", "mid")), METADATA); bolt.execute(query); BulletRecord record = RecordBox.get().add("field", "b235gf23b").add("timestamp", 92L) .addMap("map_field", Pair.of("id", "123"), Pair.of("bar", "foo")) .getRecord(); Tuple matching = makeRecordTuple(record); bolt.execute(matching); BulletRecord expectedRecord = RecordBox.get().add("id", "b235gf23b").add("mid", "123").getRecord(); Tuple expected = makeDataTuple(TupleClassifier.Type.DATA_TUPLE, "42", expectedRecord); Assert.assertFalse(wasRawRecordEmittedTo(TopologyConstants.DATA_STREAM, expected)); }
@Test public void testProjectionNotLosingFilterColumn() { Tuple query = makeIDTuple(TupleClassifier.Type.QUERY_TUPLE, "42", makeProjectionFilterQuery("timestamp", singletonList("92"), EQUALS, Pair.of("field", "id"), Pair.of("map_field.id", "mid")), METADATA); bolt.execute(query); BulletRecord record = RecordBox.get().add("field", "b235gf23b").add("timestamp", 92L) .addMap("map_field", Pair.of("id", "123"), Pair.of("bar", "foo")) .getRecord(); Tuple matching = makeRecordTuple(record); bolt.execute(matching); BulletRecord expectedRecord = RecordBox.get().add("id", "b235gf23b").add("mid", "123").getRecord(); Tuple expected = makeDataTuple(TupleClassifier.Type.DATA_TUPLE, "42", expectedRecord); Assert.assertTrue(wasRawRecordEmittedTo(TopologyConstants.DATA_STREAM, expected)); }
@Test public void testProjectionAndFiltering() { Tuple query = makeIDTuple(TupleClassifier.Type.QUERY_TUPLE, "42", makeProjectionFilterQuery("map_field.id", singletonList("123"), EQUALS, Pair.of("field", "id"), Pair.of("map_field.id", "mid")), METADATA); bolt.execute(query); BulletRecord record = RecordBox.get().add("field", "b235gf23b").add("timestamp", 92L) .addMap("map_field", Pair.of("id", "123"), Pair.of("bar", "foo")) .getRecord(); Tuple matching = makeRecordTuple(record); bolt.execute(matching); BulletRecord expectedRecord = RecordBox.get().add("id", "b235gf23b").add("mid", "123").getRecord(); Tuple expected = makeDataTuple(TupleClassifier.Type.DATA_TUPLE, "42", expectedRecord); Assert.assertTrue(wasRawRecordEmittedTo(TopologyConstants.DATA_STREAM, 1, expected)); }
@Test public void testProjection() { Tuple query = makeIDTuple(TupleClassifier.Type.QUERY_TUPLE, "42", makeProjectionQuery(Pair.of("field", "id"), Pair.of("map_field.id", "mid")), METADATA); bolt.execute(query); BulletRecord record = RecordBox.get().add("field", "b235gf23b").add("timestamp", 92L) .addMap("map_field", Pair.of("id", "123"), Pair.of("bar", "foo")) .getRecord(); Tuple matching = makeRecordTuple(record); bolt.execute(matching); BulletRecord expectedRecord = RecordBox.get().add("id", "b235gf23b").add("mid", "123").getRecord(); Tuple expected = makeDataTuple(TupleClassifier.Type.DATA_TUPLE, "42", expectedRecord); Assert.assertTrue(wasRawRecordEmittedTo(TopologyConstants.DATA_STREAM, 1, expected)); }