Merge branch 'two-dot-o-dev' of https://git-wip-us.apache.org/repos/asf/incubator-usergrid into two-dot-o-dev
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/28a8590c Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/28a8590c Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/28a8590c Branch: refs/heads/USERGRID-593 Commit: 28a8590cd3c9db202a858df2b5605d7d48dc29f4 Parents: 5f99ee2 f2aa403 Author: Todd Nine <tn...@apigee.com> Authored: Tue Apr 21 14:15:25 2015 -0600 Committer: Todd Nine <tn...@apigee.com> Committed: Tue Apr 21 14:15:25 2015 -0600 ---------------------------------------------------------------------- .../apache/usergrid/corepersistence/index/PublishRxTest.java | 7 +++++++ .../apache/usergrid/corepersistence/index/PublishRxtest.java | 4 +--- 2 files changed, 8 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/28a8590c/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/PublishRxtest.java ---------------------------------------------------------------------- diff --cc stack/core/src/test/java/org/apache/usergrid/corepersistence/index/PublishRxtest.java index 84d3ef7,0000000..6a49e80 mode 100644,000000..100644 --- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/PublishRxtest.java +++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/PublishRxtest.java @@@ -1,96 -1,0 +1,94 @@@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ - +package org.apache.usergrid.corepersistence.index; + + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import org.junit.Ignore; +import org.junit.Test; + +import rx.Observable; +import rx.Subscription; +import rx.observables.ConnectableObservable; +import rx.schedulers.Schedulers; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + + +/** - * Validates the Rx scheduler works as expected with publish ++ * Test to test some assumptions about RX behaviors + */ +public class PublishRxTest { + + @Test + public void testPublish() throws InterruptedException { + + final int count = 10; + + final CountDownLatch latch = new CountDownLatch( count ); + + final Subscription connectedObservable = + Observable.range( 0, count ).doOnNext( integer -> latch.countDown() ).subscribeOn( Schedulers.io() ) + .subscribe(); + + + final boolean completed = latch.await( 5, TimeUnit.SECONDS ); + + assertTrue( "publish1 behaves as expected", completed ); + + final boolean completedSubscription = connectedObservable.isUnsubscribed(); - ; + + assertTrue( "Subscription complete", completedSubscription ); + } + + + @Test + @Ignore("This seems like it should work, yet blocks forever") + public void testConnectableObserver() throws InterruptedException { + + final int count = 10; + + final CountDownLatch latch = new CountDownLatch( count ); + + final ConnectableObservable<Integer> connectedObservable = Observable.range( 0, count ).publish(); + + + //connect to our latch, which should run on it's own subscription + //start our latch running + connectedObservable.doOnNext( integer -> latch.countDown() ).subscribeOn( Schedulers.io() ).subscribe(); + + + final Observable<Integer> countObservable = connectedObservable.subscribeOn( Schedulers.io() ).count(); + + //start the sequence + connectedObservable.connect(); + + + final boolean completed = latch.await( 5, TimeUnit.SECONDS ); + + assertTrue( "publish1 behaves as expected", completed ); + + final int returnedCount = countObservable.toBlocking().last(); + + assertEquals( "Counts the same", count, returnedCount ); + } +}