Github user HeartSaVioR commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2443#discussion_r155653625
  
    --- Diff: 
sql/storm-sql-runtime/src/test/org/apache/storm/sql/TestUtils.java ---
    @@ -190,363 +191,213 @@ public void open(ChannelContext ctx) {
         }
       }
     
    -  public static class MockState implements State {
    -    /**
    -     * Collect all values in a static variable as the instance will go 
through serialization and deserialization.
    -     * NOTE: This should be cleared before or after running each test.
    -     */
    -    private transient static final List<List<Object> > VALUES = new 
ArrayList<>();
    +  public static class MockSpout extends BaseRichSpout {
     
    -    public static List<List<Object>> getCollectedValues() {
    -      return VALUES;
    +    private final List<Values> records;
    +    private final Fields outputFields;
    +    private boolean emitted = false;
    +    private SpoutOutputCollector collector;
    +
    +    public MockSpout(List<Values> records, Fields outputFields) {
    +      this.records = records;
    +      this.outputFields = outputFields;
         }
     
         @Override
    -    public void beginCommit(Long txid) {
    -      // NOOP
    +    public void open(Map<String, Object> conf, TopologyContext context, 
SpoutOutputCollector collector) {
    +      this.collector = collector;
         }
     
         @Override
    -    public void commit(Long txid) {
    -      // NOOP
    -    }
    +    public void nextTuple() {
    +      if (emitted) {
    +        return;
    +      }
     
    -    public void updateState(List<TridentTuple> tuples, TridentCollector 
collector) {
    -      for (TridentTuple tuple : tuples) {
    -        VALUES.add(tuple.getValues());
    +      for (Values r : records) {
    +        collector.emit(r);
           }
    -    }
    -  }
     
    -  public static class MockStateFactory implements StateFactory {
    +      emitted = true;
    +    }
     
         @Override
    -    public State makeState(Map<String, Object> conf, IMetricsContext 
metrics, int partitionIndex, int numPartitions) {
    -      return new MockState();
    +    public void declareOutputFields(OutputFieldsDeclarer declarer) {
    +      declarer.declare(outputFields);
         }
       }
     
    -  public static class MockStateUpdater implements StateUpdater<MockState> {
    +  public static class MockBolt extends BaseRichBolt {
    --- End diff --
    
    Thanks for the information. I'll try to apply on that.


---

Reply via email to