package camelinaction;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import io.reactivex.Flowable;
import junit.framework.TestCase;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class NumbersTest extends TestCase {
private static final Logger LOG = LoggerFactory.getLogger(NumbersTest.class);
@Test
public void testNumbers() throws Exception {
LOG.info("Starting RX-Java2 Flowable numbers");
// use stream engine to subscribe from a timer interval that runs a continued
// stream with data once per second
Flowable.interval(1, TimeUnit.SECONDS)
// map the message to a random number between 0..9
.map(i -> new Random().nextInt(10))
// filter out to only include big numbers, eg 6..9
.filter(n -> n > 5)
// log the big number
.doOnNext(c -> LOG.info("Streaming big number {}", c))
// start the subscriber so it runs
.subscribe();
// let it run for 10 seconds
Thread.sleep(10000);
}
}