为测试目的创建backtype.storm.tuple.tuple?

2eafrhcq  于 2021-06-25  发布在  Storm
关注(0)|答案(1)|浏览(411)

我对storm是个新手,正在尝试如何编写一个测试 execute(Tuple tuple) 子类中的方法 BaseRichBolt .
问题是看起来 Tuple 是不可变的,我没有看到任何方法或生成器来创建新元组。我怎样才能创造我自己的 Tuple ,或者如何使用测试输入测试螺栓?
我实际上使用的是scala,而不是java,但答案应该很容易翻译。

mnemlml8

mnemlml81#

模拟tuple对象是StormStarter项目的一个很好的解决方案。很简单:

package storm.starter.tools;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import backtype.storm.Constants;
import backtype.storm.tuple.Tuple;

public final class MockTupleHelpers {

    private MockTupleHelpers() {
    }

    public static Tuple mockTickTuple() {
        return mockTuple(Constants.SYSTEM_COMPONENT_ID, Constants.SYSTEM_TICK_STREAM_ID);
    }

    public static Tuple mockTuple(String componentId, String streamId) {
        Tuple tuple = mock(Tuple.class);
        when(tuple.getSourceComponent()).thenReturn(componentId);
        when(tuple.getSourceStreamId()).thenReturn(streamId);
        return tuple;
    }
}

相关问题