Package com.twitter.summingbird.storm.javaapi

Source Code of com.twitter.summingbird.storm.javaapi.TestJStorm

package com.twitter.summingbird.storm.javaapi;

import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static scala.collection.JavaConversions.asScalaIterable;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;

import org.junit.Test;

import scala.Tuple2;
import scala.runtime.BoxedUnit;

import com.twitter.summingbird.batch.Timestamp;
import com.twitter.summingbird.javaapi.Function;
import com.twitter.summingbird.javaapi.JProducer;
import com.twitter.summingbird.javaapi.JProducers;
import com.twitter.summingbird.javaapi.Sink;
import com.twitter.summingbird.storm.Storm;
import com.twitter.summingbird.storm.StormSink;
import com.twitter.summingbird.storm.spout.TraversableSpout;
import com.twitter.summingbird.online.option.SourceParallelism;
import com.twitter.util.Future;
import com.twitter.util.Future$;

public class TestJStorm {

  @Test
  public void test() throws Exception {
    final List<String> mapped = new ArrayList<String>();
    final List<String> written = new ArrayList<String>();
    @SuppressWarnings("unchecked")
    List<Tuple2<Timestamp, String>> input = asList(
        new Tuple2<Timestamp, String>(new Timestamp(System.currentTimeMillis()), "foo"),
        new Tuple2<Timestamp, String>(new Timestamp(System.currentTimeMillis()), "bar"),
        new Tuple2<Timestamp, String>(new Timestamp(System.currentTimeMillis()), "baz")
        );
    JStorm storm = JStorm.local();
    JProducer<Storm, String> source = JStorm.source(
        new TraversableSpout<Tuple2<Timestamp, String>>(asScalaIterable(input), "field"),
        JProducers.<SourceParallelism>none());
    Sink<Storm, StormSink<String>, String> sink = JStorm.sink(new Callable<Function<String,Future<BoxedUnit>>>() {
      @Override
      public Function<String, Future<BoxedUnit>> call() throws Exception {
        return new Function<String, Future<BoxedUnit>>() {
          @Override
          public Future<BoxedUnit> apply(String s) {
            written.add(s);
            return Future$.MODULE$.Done();
          }
        };
      }
    });
    storm.run(source.map(new Function<String, String>() {
      @Override
      public String apply(String s) {
        mapped.add(s);
        return s;
      }
    }).write(sink), "myjob");
    assertEquals("mapped: " + mapped, 3, mapped.size());
    //    assertEquals("written: " + written, 3, written.size());
  }

}
TOP

Related Classes of com.twitter.summingbird.storm.javaapi.TestJStorm

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.