@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(); } }
@Test public void testTestTuple() throws Exception { Tuple tuple = Testing.testTuple(new Values("james", "bond")); assertThat(tuple.getValues(), is(new Values("james", "bond"))); assertThat(tuple.getSourceStreamId(), is(Utils.DEFAULT_STREAM_ID)); assertThat(tuple.getFields().toList(), is(Arrays.asList("field1", "field2"))); assertThat(tuple.getSourceComponent(), is("component")); }
@Test public void testTestTupleWithMkTupleParam() throws Exception { MkTupleParam mkTupleParam = new MkTupleParam(); mkTupleParam.setStream("test-stream"); mkTupleParam.setComponent("test-component"); mkTupleParam.setFields("fname", "lname"); Tuple tuple = Testing.testTuple(new Values("james", "bond"), mkTupleParam); assertThat(tuple.getValues(), is(new Values("james", "bond"))); assertThat(tuple.getSourceStreamId(), is("test-stream")); assertThat(tuple.getFields().toList(), is(Arrays.asList("fname", "lname"))); assertThat(tuple.getSourceComponent(), is("test-component")); }
protected Result doWrite(Tuple tuple, Generator generator, String parentField) { Fields fields = tuple.getFields(); generator.writeBeginObject(); for (String field : fields) { if (shouldKeep(parentField, field)) { generator.writeFieldName(field); Object value = tuple.getValueByField(field); if (value instanceof Tuple) { Result result = write((Tuple) value, generator); if (!result.isSuccesful()) { return result; } } else { Result result = jdkWriter.write(value, generator); if (!result.isSuccesful()) { return result; } } } } generator.writeEndObject(); return Result.SUCCESFUL(); } }
throw new IOException("Unable to retrieve " + tupleRowKeyField + " from " + tuple + " [ " + Joiner.on(',').join(tuple.getFields()) + " ]", iae);
return metadata; Fields tupleFields = t.getFields(); if(tupleFields == null) { return metadata;
private static Tuple createTuple(Map<String, Object> kafkaFields, String metadata) throws Exception { List<Map.Entry<String, Object>> fields = new ArrayList<>(); for(Map.Entry<String, Object> kv : kafkaFields.entrySet()) { fields.add(kv); } Tuple t = mock(Tuple.class); Fields f = mock(Fields.class); when(f.size()).thenReturn(fields.size()+2); for(int i = 0;i < fields.size();++i) { when(f.get(eq(i + 2))).thenReturn(fields.get(i).getKey()); when(t.getValue(eq(i + 2))).thenReturn(fields.get(i).getValue()); } when(t.getFields()).thenReturn(f); when(t.getBinary(eq(MetadataUtil.KEY_INDEX))).thenReturn(metadata.getBytes()); return t; }
@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(); } }
@Test public void testExecute() { Tuple t = mock(Tuple.class); when(t.getFields()).thenReturn(new Fields("myAttribute")); when(t.getValueByField("myAttribute").thenReturn("my json string to be tested"); MyBolt b = new MyBolt(); b.execute(t, mock(BasicOutputCollector.class)); // put your assertions here }
protected Result doWrite(Tuple tuple, Generator generator, String parentField) { Fields fields = tuple.getFields(); generator.writeBeginObject(); for (String field : fields) { if (shouldKeep(parentField, field)) { generator.writeFieldName(field); Object value = tuple.getValueByField(field); if (value instanceof Tuple) { Result result = write((Tuple) value, generator); if (!result.isSuccesful()) { return result; } } else { Result result = jdkWriter.write(value, generator); if (!result.isSuccesful()) { return result; } } } } generator.writeEndObject(); return Result.SUCCESFUL(); } }