@Override public void execute(Tuple tuple) { // Check if the tuple is any known type, otherwise make it unknown TupleClassifier.Type type = classifier.classify(tuple).orElse(TupleClassifier.Type.UNKNOWN_TUPLE); switch (type) { case TICK_TUPLE: onTick(); break; case METADATA_TUPLE: onMeta(tuple); break; case QUERY_TUPLE: onQuery(tuple); break; case RECORD_TUPLE: onRecord(tuple); updateLatency(tuple); break; default: // May want to throw an error here instead of not acking log.error("Unknown tuple encountered: {}", type); return; } collector.ack(tuple); }
@Override public void execute(Tuple tuple) { // Check if the tuple is any known type, otherwise make it unknown TupleClassifier.Type type = classifier.classify(tuple).orElse(TupleClassifier.Type.UNKNOWN_TUPLE); switch (type) { case TICK_TUPLE: onTick(); break; case METADATA_TUPLE: onMeta(tuple); break; case QUERY_TUPLE: onQuery(tuple); break; case RECORD_TUPLE: onRecord(tuple); updateLatency(tuple); break; default: // May want to throw an error here instead of not acking log.error("Unknown tuple encountered: {}", type); return; } collector.ack(tuple); }
@Test public void testPrepare() { CustomCollector collector = new CustomCollector(); TestQueryBolt bolt = new TestQueryBolt(new BulletStormConfig()); ComponentUtils.prepare(bolt, collector); Assert.assertEquals(collector.getAckedCount(), 0); bolt.getCollector().ack(null); Assert.assertEquals(collector.getAckedCount(), 1); Assert.assertEquals(bolt.getQueries().size(), 0); Assert.assertEquals(bolt.getMetricsMapping(), BulletStormConfig.DEFAULT_TOPOLOGY_METRICS_BUILT_IN_EMIT_INTERVAL_MAPPING); Assert.assertEquals(bolt.isMetricsEnabled(), BulletStormConfig.DEFAULT_TOPOLOGY_METRICS_ENABLE); Tuple tuple = mock(Tuple.class); doReturn(TopologyConstants.RECORD_COMPONENT).when(tuple).getSourceComponent(); Assert.assertEquals(bolt.getClassifier().classify(tuple), Optional.of(Type.RECORD_TUPLE)); }