use of com.oath.cyclops.types.reactive.ReactiveSubscriber in project cyclops by aol.
the class FutureStreamImplTest method subcribeOnce.
public void subcribeOnce() {
AtomicBoolean called1 = new AtomicBoolean(false);
AtomicBoolean called2 = new AtomicBoolean(false);
ReactiveSeq<Integer> initialStream = ReactiveSeq.of(1, 2, 3, 4, 5, 6);
ReactiveSubscriber<Integer> sub1 = Spouts.reactiveSubscriber();
ReactiveSubscriber<Integer> sub2 = Spouts.reactiveSubscriber();
FutureStream<Integer> futureStream = FutureStream.builder().fromStream(initialStream).map(v -> v - 1);
futureStream.subscribe(sub1);
futureStream.subscribe(sub2);
CompletableFuture future1 = CompletableFuture.runAsync(() -> sub1.reactiveStream().peek(a -> called1.set(true)).forEach(v -> System.out.println("1 -> " + v)));
CompletableFuture future2 = CompletableFuture.runAsync(() -> sub2.reactiveStream().peek(a -> called2.set(true)).forEach(v -> System.out.println("2 -> " + v)));
try {
future1.get();
future2.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
assertThat(called1.get(), equalTo(true));
assertThat(called1.get(), equalTo(false));
}
use of com.oath.cyclops.types.reactive.ReactiveSubscriber in project cyclops by aol.
the class FlatMapTest method flatMapAsyncRS2.
@Test
public void flatMapAsyncRS2() {
for (int k = 0; k < 1000; k++) {
System.out.println("********0---------------------K " + k);
ReactiveSubscriber<Integer> sub = Spouts.reactiveSubscriber();
Spouts.of(1, 2, 3).peek(System.out::println).flatMap(i -> nextAsyncRS()).subscribe(sub);
List<Integer> res = sub.reactiveStream().collect(Collectors.toList());
System.out.println(res);
assertThat(res.size(), equalTo(Arrays.asList(1, 2, 1, 2, 1, 2).size()));
assertThat(res, hasItems(1, 2));
int one = 0;
int two = 0;
for (Integer next : res) {
if (next == 1) {
one++;
}
if (next == 2) {
two++;
}
}
assertThat(one, equalTo(3));
assertThat(two, equalTo(3));
}
}
use of com.oath.cyclops.types.reactive.ReactiveSubscriber in project cyclops by aol.
the class FlatMapPublisherTest method flatMapPAsyncRS.
@Test
public void flatMapPAsyncRS() {
for (int k = 0; k < 1000; k++) {
System.out.println("****************************NEXT ITERATION " + k);
System.out.println("****************************NEXT ITERATION " + k);
System.out.println("****************************NEXT ITERATION " + k);
System.out.println("****************************NEXT ITERATION " + k);
System.out.println("****************************NEXT ITERATION " + k);
System.out.println("****************************NEXT ITERATION " + k);
System.out.println("****************************NEXT ITERATION " + k + "*************************!!!!!!!!!!!!!!!!!!!!!!!!!!!");
complete = new AtomicBoolean(false);
count = new AtomicInteger(0);
ReactiveSubscriber<Integer> sub = Spouts.reactiveSubscriber();
Spouts.of(1, 2, 3).peek(System.out::println).mergeMap(i -> nextAsync()).subscribe(new Subscriber<Integer>() {
@Override
public void onSubscribe(Subscription s) {
subs = s;
}
@Override
public void onNext(Integer integer) {
System.out.println("RECIEVED " + integer);
assertThat(integer, Matchers.isOneOf(1, 2));
System.out.println("count " + count.incrementAndGet());
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
complete.set(true);
}
});
subs.request(Long.MAX_VALUE);
while (!complete.get()) {
}
assertThat(count.get(), equalTo(6));
}
}
use of com.oath.cyclops.types.reactive.ReactiveSubscriber in project cyclops by aol.
the class FlatMapTest method flatMapAsyncRS2.
@Test
public void flatMapAsyncRS2() {
for (int k = 0; k < 1000; k++) {
System.out.println("********0---------------------K " + k);
ReactiveSubscriber<Integer> sub = Spouts.reactiveSubscriber();
Spouts.of(1, 2, 3).peek(System.out::println).flatMap(i -> nextAsyncRS()).subscribe(sub);
List<Integer> res = sub.reactiveStream().collect(Collectors.toList());
System.out.println(res);
assertThat(res.size(), equalTo(Arrays.asList(1, 2, 1, 2, 1, 2).size()));
assertThat(res, hasItems(1, 2));
int one = 0;
int two = 0;
for (Integer next : res) {
if (next == 1) {
one++;
}
if (next == 2) {
two++;
}
}
assertThat(one, equalTo(3));
assertThat(two, equalTo(3));
}
}
use of com.oath.cyclops.types.reactive.ReactiveSubscriber in project cyclops by aol.
the class IterableFlatMapTest method flatMapAsyncRS2.
@Test
public void flatMapAsyncRS2() {
for (int k = 0; k < 1000; k++) {
System.out.println("********0---------------------K " + k);
ReactiveSubscriber<Integer> sub = Spouts.reactiveSubscriber();
Spouts.of(1, 2, 3).peek(System.out::println).concatMap(i -> nextAsyncRS()).subscribe(sub);
List<Integer> res = sub.reactiveStream().collect(Collectors.toList());
System.out.println(res);
assertThat(res.size(), equalTo(Arrays.asList(1, 2, 1, 2, 1, 2).size()));
assertThat(res, hasItems(1, 2));
int one = 0;
int two = 0;
for (Integer next : res) {
if (next == 1) {
one++;
}
if (next == 2) {
two++;
}
}
assertThat(one, equalTo(3));
assertThat(two, equalTo(3));
}
}
Aggregations