use of rx.observers.TestSubscriber in project Hystrix by Netflix.
the class HystrixObservableCollapserTest method testTwoRequestsWithValuesForOneArgOnlyAndOnMissingError.
@Test
public void testTwoRequestsWithValuesForOneArgOnlyAndOnMissingError() {
TestCollapserTimer timer = new TestCollapserTimer();
HystrixObservableCollapser<String, String, String, String> collapser1 = new TestCollapserWithMultipleResponses(timer, 1, 0, onMissingError);
HystrixObservableCollapser<String, String, String, String> collapser2 = new TestCollapserWithMultipleResponses(timer, 2, 5, onMissingError);
System.out.println("Starting to observe collapser1");
Observable<String> result1 = collapser1.observe();
Observable<String> result2 = collapser2.observe();
// let time pass that equals the default delay/period
timer.incrementTime(10);
TestSubscriber<String> testSubscriber1 = new TestSubscriber<String>();
result1.subscribe(testSubscriber1);
TestSubscriber<String> testSubscriber2 = new TestSubscriber<String>();
result2.subscribe(testSubscriber2);
testSubscriber1.awaitTerminalEvent();
testSubscriber2.awaitTerminalEvent();
testSubscriber1.assertError(IllegalStateException.class);
testSubscriber1.assertNoValues();
testSubscriber2.assertCompleted();
testSubscriber2.assertNoErrors();
testSubscriber2.assertValues("2:2", "2:4", "2:6", "2:8", "2:10");
}
use of rx.observers.TestSubscriber in project Hystrix by Netflix.
the class HystrixObservableCollapserTest method testTwoRequestsWithErrorInDemultiplex.
@Test
public void testTwoRequestsWithErrorInDemultiplex() {
TestCollapserTimer timer = new TestCollapserTimer();
HystrixObservableCollapser<String, String, String, String> collapser1 = new TestCollapserWithMultipleResponses(timer, 1, 3, false, false, mapWithErrorOn1, onMissingError);
HystrixObservableCollapser<String, String, String, String> collapser2 = new TestCollapserWithMultipleResponses(timer, 2, 3, false, false, mapWithErrorOn1, onMissingError);
System.out.println("Starting to observe collapser1");
Observable<String> result1 = collapser1.observe();
Observable<String> result2 = collapser2.observe();
// let time pass that equals the default delay/period
timer.incrementTime(10);
TestSubscriber<String> testSubscriber1 = new TestSubscriber<String>();
result1.subscribe(testSubscriber1);
TestSubscriber<String> testSubscriber2 = new TestSubscriber<String>();
result2.subscribe(testSubscriber2);
testSubscriber1.awaitTerminalEvent();
testSubscriber2.awaitTerminalEvent();
testSubscriber1.assertError(RuntimeException.class);
testSubscriber1.assertNoValues();
testSubscriber2.assertCompleted();
testSubscriber2.assertNoErrors();
testSubscriber2.assertValues("2:2", "2:4", "2:6");
}
use of rx.observers.TestSubscriber in project feign by OpenFeign.
the class HystrixBuilderTest method rxCompletableWithBody.
@Test
public void rxCompletableWithBody() {
server.enqueue(new MockResponse().setBody("foo"));
TestInterface api = target();
Completable completable = api.completable();
assertThat(completable).isNotNull();
assertThat(server.getRequestCount()).isEqualTo(0);
TestSubscriber<String> testSubscriber = new TestSubscriber<String>();
completable.subscribe(testSubscriber);
testSubscriber.awaitTerminalEvent();
testSubscriber.assertCompleted();
testSubscriber.assertNoErrors();
}
use of rx.observers.TestSubscriber in project nucleus by konmik.
the class DeliverCacheTest method testCache.
@Test
public void testCache() throws Exception {
PublishSubject<Object> view = PublishSubject.create();
final TestSubscriber<Delivery<Object, Integer>> testSubscriber = new TestSubscriber<>();
final ArrayList<Delivery<Object, Integer>> deliveries = new ArrayList<>();
final PublishSubject<Integer> subject = PublishSubject.create();
DeliverLatestCache<Object, Integer> restartable = new DeliverLatestCache<>(view);
Subscription subscription = restartable.call(subject).subscribe(new Action1<Delivery<Object, Integer>>() {
@Override
public void call(Delivery<Object, Integer> delivery) {
delivery.split(new Action2<Object, Integer>() {
@Override
public void call(Object o, Integer integer) {
testSubscriber.onNext(new Delivery<>(o, Notification.createOnNext(integer)));
}
}, new Action2<Object, Throwable>() {
@Override
public void call(Object o, Throwable throwable) {
testSubscriber.onNext(new Delivery<>(o, Notification.<Integer>createOnError(throwable)));
}
});
}
});
// only latest value is delivered
subject.onNext(1);
subject.onNext(2);
subject.onNext(3);
testSubscriber.assertNotCompleted();
testSubscriber.assertNoValues();
view.onNext(100);
deliveries.add(new Delivery<Object, Integer>(100, Notification.createOnNext(3)));
testSubscriber.assertValueCount(1);
testSubscriber.assertNotCompleted();
// no values delivered if a view has been detached
view.onNext(null);
testSubscriber.assertValueCount(1);
testSubscriber.assertNotCompleted();
// the latest value will be delivered to the new view
view.onNext(101);
deliveries.add(new Delivery<Object, Integer>(101, Notification.createOnNext(3)));
testSubscriber.assertValueCount(2);
testSubscriber.assertNotCompleted();
// a throwable will be delivered as well
Throwable throwable = new Throwable();
subject.onError(throwable);
deliveries.add(new Delivery<Object, Integer>(101, Notification.<Integer>createOnError(throwable)));
testSubscriber.assertValueCount(3);
testSubscriber.assertNotCompleted();
// the throwable will be delivered after a new view is attached
view.onNext(102);
deliveries.add(new Delivery<Object, Integer>(102, Notification.<Integer>createOnError(throwable)));
testSubscriber.assertValueCount(4);
testSubscriber.assertNotCompleted();
// final checks
testSubscriber.assertReceivedOnNext(deliveries);
subscription.unsubscribe();
assertFalse(subject.hasObservers());
assertFalse(view.hasObservers());
}
use of rx.observers.TestSubscriber in project nucleus by konmik.
the class DeliverFirstTest method testOnceThrowable.
@Test
public void testOnceThrowable() throws Exception {
PublishSubject<Object> view = PublishSubject.create();
final TestSubscriber<Delivery<Object, Integer>> testSubscriber = new TestSubscriber<>();
final ArrayList<Delivery<Object, Integer>> deliveries = new ArrayList<>();
final PublishSubject<Integer> subject = PublishSubject.create();
DeliverFirst<Object, Integer> restartable = new DeliverFirst<>(view);
Subscription subscription = restartable.call(subject).subscribe(new Action1<Delivery<Object, Integer>>() {
@Override
public void call(Delivery<Object, Integer> delivery) {
delivery.split(new Action2<Object, Integer>() {
@Override
public void call(Object o, Integer integer) {
testSubscriber.onNext(new Delivery<>(o, Notification.createOnNext(integer)));
}
}, new Action2<Object, Throwable>() {
@Override
public void call(Object o, Throwable throwable) {
testSubscriber.onNext(new Delivery<>(o, Notification.<Integer>createOnError(throwable)));
}
});
}
});
// only first value is delivered
Throwable throwable = new Throwable();
subject.onError(throwable);
testSubscriber.assertNotCompleted();
testSubscriber.assertNoValues();
view.onNext(100);
deliveries.add(new Delivery<Object, Integer>(100, Notification.<Integer>createOnError(throwable)));
testSubscriber.assertValueCount(1);
// final checks
testSubscriber.assertReceivedOnNext(deliveries);
subscription.unsubscribe();
assertFalse(subject.hasObservers());
assertFalse(view.hasObservers());
}
Aggregations