/** * Get the {@link Meta} so far. By default, returns an empty one. * * @return The resulting metadata of the data aggregated so far. */ @Override default Meta getMetadata() { return new Meta(); } }
/** * Static construction of Meta with some errors. * * @param errors A non-null list of {@link BulletError} objects. * @return The Meta object with the errors. */ public static Meta of(List<BulletError> errors) { Meta meta = new Meta(); meta.addErrors(errors); return meta; }
/** * Makes this into a {@link Meta} object. * * @return A meta object containing this error. */ public Meta makeMeta() { return new Meta().addErrors(Collections.singletonList(this)); } }
/** * Static construction of Meta with some errors. * * @param errors A non-null {@link List} of {@link BulletError} objects. * @return The Meta object with the errors. */ public static Meta of(BulletError... errors) { Meta meta = new Meta(); meta.addErrors(asList(errors)); return meta; }
/** * Returns the sketch metadata as a {@link Meta} object. * * @param metaKey The key to add the metadata as. * @param conceptKeys If provided, these {@link Concept} names will be added to the metadata. * @return The metadata object or an empty one if no metadata was collected. */ public Meta getMetadata(String metaKey, Map<String, String> conceptKeys) { if (metaKey == null) { return new Meta(); } return new Meta().add(metaKey, addMetadata(conceptKeys)); }
private Meta getResultMetadata() { String metaKey = getMetaKey(); if (metaKey == null) { return null; } Map<String, Object> meta = new HashMap<>(); addIfNonNull(meta, metaKeys, Concept.QUERY_ID, runningQuery::getId); addIfNonNull(meta, metaKeys, Concept.QUERY_BODY, runningQuery::toString); addIfNonNull(meta, metaKeys, Concept.QUERY_RECEIVE_TIME, runningQuery::getStartTime); return new Meta().add(metaKey, meta); }
/** * Return any {@link Meta} for this windowing scheme and the {@link Strategy}. * * @return A non-null Meta object. */ @Override public Meta getMetadata() { Meta meta = new Meta(); if (shouldMeta) { String key = getMetaKey(); if (key != null) { meta.add(key, getMetadata(metadataKeys)); } meta.merge(aggregation.getMetadata()); } return meta; }
@Test public void testQueryIdentifierMetadata() { config = configWithRawMaxAndEmptyMeta(); enableMetadataInConfig(config, Concept.QUERY_METADATA.getName(), "meta"); enableMetadataInConfig(config, Concept.QUERY_ID.getName(), "id"); setup(new JoinBolt(config)); Tuple query = TupleUtils.makeIDTuple(TupleClassifier.Type.QUERY_TUPLE, "42", "{}", EMPTY); bolt.execute(query); List<BulletRecord> sent = sendRawRecordTuplesTo(bolt, "42"); Meta meta = new Meta(); meta.add("meta", singletonMap("id", "42")); Tuple expected = TupleUtils.makeTuple(TupleClassifier.Type.RESULT_TUPLE, "42", Clip.of(sent).add(meta).asJSON(), COMPLETED); Assert.assertTrue(wasResultEmittedTo(TopologyConstants.RESULT_STREAM, expected)); Tuple metadata = TupleUtils.makeTuple(TupleClassifier.Type.FEEDBACK_TUPLE, "42", new Metadata(Metadata.Signal.COMPLETE, null)); Assert.assertTrue(wasMetadataEmittedTo(TopologyConstants.FEEDBACK_STREAM, metadata)); Assert.assertEquals(collector.getAllEmittedTo(TopologyConstants.RESULT_STREAM).count(), 1); Assert.assertEquals(collector.getAllEmittedTo(TopologyConstants.FEEDBACK_STREAM).count(), 1); }
@Test public void testUnknownConceptMetadata() { config = configWithRawMaxAndEmptyMeta(); enableMetadataInConfig(config, Concept.QUERY_METADATA.getName(), "meta"); enableMetadataInConfig(config, Concept.QUERY_ID.getName(), "id"); enableMetadataInConfig(config, "foo", "bar"); setup(new JoinBolt(config)); Tuple query = TupleUtils.makeIDTuple(TupleClassifier.Type.QUERY_TUPLE, "42", "{}", EMPTY); bolt.execute(query); List<BulletRecord> sent = sendRawRecordTuplesTo(bolt, "42"); Meta meta = new Meta(); meta.add("meta", singletonMap("id", "42")); Tuple expected = TupleUtils.makeTuple(TupleClassifier.Type.RESULT_TUPLE, "42", Clip.of(sent).add(meta).asJSON(), COMPLETED); Assert.assertTrue(wasResultEmittedTo(TopologyConstants.RESULT_STREAM, expected)); Tuple metadata = TupleUtils.makeTuple(TupleClassifier.Type.FEEDBACK_TUPLE, "42", new Metadata(Metadata.Signal.COMPLETE, null)); Assert.assertTrue(wasMetadataEmittedTo(TopologyConstants.FEEDBACK_STREAM, metadata)); Assert.assertEquals(collector.getAllEmittedTo(TopologyConstants.RESULT_STREAM).count(), 1); Assert.assertEquals(collector.getAllEmittedTo(TopologyConstants.FEEDBACK_STREAM).count(), 1); }