@Override public V getMessageFromTuple(Tuple tuple) { return (V) tuple.getValueByField(boltMessageField); } }
@Override public byte[] format(Tuple tuple) { return (tuple.getValueByField(fieldName).toString() + this.lineDelimiter).getBytes(); } }
public byte[] format(Tuple tuple) { return (tuple.getValueByField(fieldName).toString() + this.lineDelimiter).getBytes(); } }
@Override public byte[] mapRecord(Tuple tuple) { JSONObject obj = new JSONObject(); if (this.columnFields != null) { for (String field : this.columnFields) { obj.put(field, tuple.getValueByField(field)); } } return obj.toJSONString().getBytes(); }
@Override public byte[] mapRecord(Tuple tuple) { StringBuilder builder = new StringBuilder(); if (this.columnFields != null) { for (String field : this.columnFields) { builder.append(tuple.getValueByField(field)); builder.append(fieldDelimiter); } } return builder.toString().getBytes(); }
@Override public byte[] rowKey(Tuple tuple) { Object objVal = tuple.getValueByField(this.rowKeyField); return toBytes(objVal); }
@Override public K getKeyFromTuple(Tuple tuple) { //for backward compatibility, we return null when key is not present. return tuple.contains(boltKeyField) ? (K) tuple.getValueByField(boltKeyField) : null; }
/** * @return The raw inputs extracted from the tuple for all 'active fields' */ @Override public Map<FieldName, Object> extractRawInputs(Tuple tuple) { LOG.debug("Extracting raw inputs from tuple: = [{}]", tuple); final Map<FieldName, Object> rawInputs = new LinkedHashMap<>(); for (FieldName activeField : activeFields) { rawInputs.put(activeField, tuple.getValueByField(activeField.getValue())); } LOG.debug("Raw inputs = [{}]", rawInputs); return rawInputs; }
@Override public byte[] format(Tuple tuple) { StringBuilder sb = new StringBuilder(); Fields fields = this.fields == null ? tuple.getFields() : this.fields; int size = fields.size(); for (int i = 0; i < size; i++) { sb.append(tuple.getValueByField(fields.get(i))); if (i != size - 1) { sb.append(this.fieldDelimiter); } } sb.append(this.recordDelimiter); return sb.toString().getBytes(); } }
@Override public Values apply(Tuple input) { Values values = new Values(); for (String field : fieldNames) { values.add(input.getValueByField(field)); } return values; } }
protected Object lookupField(FieldSelector fieldSelector, Tuple tuple) { // very stream name matches, it stream name was specified if (fieldSelector.streamName != null && !fieldSelector.streamName.equalsIgnoreCase(getStreamSelector(tuple))) { return null; } Object curr = null; for (int i = 0; i < fieldSelector.field.length; i++) { if (i == 0) { if (tuple.contains(fieldSelector.field[i])) { curr = tuple.getValueByField(fieldSelector.field[i]); } else { return null; } } else { curr = ((Map) curr).get(fieldSelector.field[i]); if (curr == null) { return null; } } } return curr; }
@Override public void execute(Tuple input) { sum += ((Number) input.getValueByField("value")).longValue(); LOG.debug("{} sum = {}", name, sum); kvState.put("sum", sum); collector.emit(input, new Values(sum)); collector.ack(input); }
@Override public ColumnList columns(Tuple tuple) { ColumnList cols = new ColumnList(); if (this.columnFields != null) { // TODO timestamps for (String field : this.columnFields) { cols.addColumn(this.columnFamily, field.getBytes(), toBytes(tuple.getValueByField(field))); } } if (this.counterFields != null) { for (String field : this.counterFields) { cols.addCounter(this.columnFamily, field.getBytes(), toLong(tuple.getValueByField(field))); } } return cols; } }
@Override public void execute(Tuple input) { LOG.debug("** EventLoggerBolt got tuple from sourceComponent {}, with values {}", input.getSourceComponent(), input.getValues()); Object msgId = input.getValueByField(FIELD_MESSAGE_ID); EventInfo eventInfo = new EventInfo(input.getLongByField(FIELD_TS), input.getSourceComponent(), input.getSourceTask(), msgId, (List<Object>) input.getValueByField(FIELD_VALUES)); for (IEventLogger eventLogger : eventLoggers) { eventLogger.log(eventInfo); } }
@Test public void testCommitBeforeInitstate() throws Exception { Mockito.when(mockTuple.getSourceStreamId()).thenReturn("default"); Mockito.when(mockCheckpointTuple.getSourceStreamId()).thenReturn(CheckpointSpout.CHECKPOINT_STREAM_ID); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(COMMIT); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(100)); executor.execute(mockCheckpointTuple); Mockito.verify(mockOutputCollector, Mockito.times(1)).ack(mockCheckpointTuple); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(ROLLBACK); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(100)); executor.execute(mockCheckpointTuple); Mockito.verify(mockState, Mockito.times(1)).rollback(); }
@Test public void testRollback() throws Exception { Mockito.when(mockTuple.getSourceStreamId()).thenReturn("default"); executor.execute(mockTuple); Mockito.when(mockCheckpointTuple.getSourceStreamId()).thenReturn(CheckpointSpout.CHECKPOINT_STREAM_ID); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(ROLLBACK); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(0)); Mockito.doNothing().when(mockOutputCollector).ack(mockCheckpointTuple); executor.execute(mockCheckpointTuple); Mockito.verify(mockState, Mockito.times(1)).rollback(); }
@Test public void testCommit() throws Exception { Mockito.when(mockTuple.getSourceStreamId()).thenReturn("default"); executor.execute(mockTuple); Mockito.when(mockCheckpointTuple.getSourceStreamId()).thenReturn(CheckpointSpout.CHECKPOINT_STREAM_ID); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(COMMIT); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(0)); Mockito.doNothing().when(mockOutputCollector).ack(mockCheckpointTuple); executor.execute(mockCheckpointTuple); Mockito.verify(mockBolt, Mockito.times(1)).preCommit(new Long(0)); Mockito.verify(mockState, Mockito.times(1)).commit(new Long(0)); }
@Test public void testHandleTuple() throws Exception { Mockito.when(mockTuple.getSourceStreamId()).thenReturn("default"); executor.execute(mockTuple); Mockito.when(mockCheckpointTuple.getSourceStreamId()).thenReturn(CheckpointSpout.CHECKPOINT_STREAM_ID); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(INITSTATE); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(0)); Mockito.doNothing().when(mockOutputCollector).ack(mockCheckpointTuple); executor.execute(mockCheckpointTuple); Mockito.verify(mockBolt, Mockito.times(1)).execute(mockTuple); Mockito.verify(mockBolt, Mockito.times(1)).initState(Mockito.any(KeyValueState.class)); }
@Test public void testPrepareAndRollbackBeforeInitstate() throws Exception { Mockito.when(mockTuple.getSourceStreamId()).thenReturn("default"); executor.execute(mockTuple); Mockito.when(mockCheckpointTuple.getSourceStreamId()).thenReturn(CheckpointSpout.CHECKPOINT_STREAM_ID); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(PREPARE); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(100)); executor.execute(mockCheckpointTuple); Mockito.verify(mockOutputCollector, Mockito.times(1)).fail(mockCheckpointTuple); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(ROLLBACK); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(100)); Mockito.doNothing().when(mockOutputCollector).ack(mockCheckpointTuple); executor.execute(mockCheckpointTuple); Mockito.verify(mockState, Mockito.times(1)).rollback(); }
@Test public void testPrepareAndCommit() throws Exception { Mockito.when(mockTuple.getSourceStreamId()).thenReturn("default"); Mockito.when(mockCheckpointTuple.getSourceStreamId()).thenReturn(CheckpointSpout.CHECKPOINT_STREAM_ID); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(INITSTATE); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(0)); executor.execute(mockCheckpointTuple); executor.execute(mockTuple); Mockito.when(mockCheckpointTuple.getSourceStreamId()).thenReturn(CheckpointSpout.CHECKPOINT_STREAM_ID); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(PREPARE); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(100)); executor.execute(mockCheckpointTuple); executor.execute(mockTuple); Mockito.when(mockCheckpointTuple.getValueByField(CHECKPOINT_FIELD_ACTION)).thenReturn(COMMIT); Mockito.when(mockCheckpointTuple.getLongByField(CHECKPOINT_FIELD_TXID)).thenReturn(new Long(100)); executor.execute(mockCheckpointTuple); mockOutputCollector.ack(mockTuple); Mockito.verify(mockState, Mockito.times(1)).commit(new Long(100)); Mockito.verify(mockBolt, Mockito.times(2)).execute(mockTuple); Mockito.verify(mockOutputCollector, Mockito.times(1)).ack(mockTuple); } }