use of org.apache.storm.redis.trident.state.RedisState in project storm by apache.
the class TestRedisDataSourcesProvider method testRedisSink.
@SuppressWarnings("unchecked")
@Test
public void testRedisSink() {
ISqlTridentDataSource ds = DataSourcesRegistry.constructTridentDataSource(URI.create("redis://:foobared@localhost:6380/2"), null, null, TBL_PROPERTIES, FIELDS);
Assert.assertNotNull(ds);
ISqlTridentDataSource.SqlTridentConsumer consumer = ds.getConsumer();
Assert.assertEquals(RedisState.Factory.class, consumer.getStateFactory().getClass());
Assert.assertEquals(RedisStateUpdater.class, consumer.getStateUpdater().getClass());
RedisState state = (RedisState) consumer.getStateFactory().makeState(Collections.emptyMap(), null, 0, 1);
StateUpdater stateUpdater = consumer.getStateUpdater();
JedisPool mockJedisPool = mock(JedisPool.class);
Jedis mockJedis = mock(Jedis.class);
Pipeline mockPipeline = mock(Pipeline.class);
Whitebox.setInternalState(state, "jedisPool", mockJedisPool);
when(mockJedisPool.getResource()).thenReturn(mockJedis);
when(mockJedis.pipelined()).thenReturn(mockPipeline);
List<TridentTuple> tupleList = mockTupleList();
stateUpdater.updateState(state, tupleList, null);
for (TridentTuple t : tupleList) {
// PK goes to the key
String id = String.valueOf(t.getValueByField("ID"));
String serializedValue = new String(SERIALIZER.write(t.getValues(), null).array());
verify(mockPipeline).hset(eq(ADDITIONAL_KEY), eq(id), eq(serializedValue));
}
verify(mockPipeline).sync();
verify(mockJedis).close();
}
Aggregations