From ebca2ac158bf4c7cb94268dd749133a4aa573b3d Mon Sep 17 00:00:00 2001 From: JimmyLiuJia <91264074+JimmyLiuJia@users.noreply.github.com> Date: Sun, 11 Oct 2026 17:44:59 +0800 Subject: [PATCH] Isolate Maybe takeUntil race tests Related #8075 --- .../maybe/MaybeTakeUntilIsolatedTest.java | 79 +++++++++++++++++++ .../MaybeTakeUntilPublisherIsolatedTest.java | 79 +++++++++++++++++++ .../maybe/MaybeTakeUntilPublisherTest.java | 49 ------------ .../operators/maybe/MaybeTakeUntilTest.java | 52 ------------ 4 files changed, 158 insertions(+), 101 deletions(-) create mode 100644 src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilIsolatedTest.java create mode 100644 src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilPublisherIsolatedTest.java diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilIsolatedTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilIsolatedTest.java new file mode 100644 index 0000000000..119c13932b --- /dev/null +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilIsolatedTest.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2016-present, RxJava Contributors. + * + * Licensed 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 io.reactivex.rxjava4.internal.operators.maybe; + +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Isolated; + +import io.reactivex.rxjava4.core.RxJavaTest; +import io.reactivex.rxjava4.exceptions.TestException; +import io.reactivex.rxjava4.observers.TestObserver; +import io.reactivex.rxjava4.plugins.RxJavaPlugins; +import io.reactivex.rxjava4.processors.PublishProcessor; +import io.reactivex.rxjava4.testsupport.TestHelper; + +@Isolated +public class MaybeTakeUntilIsolatedTest extends RxJavaTest { + + @Test + public void onErrorRace() { + for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { + final PublishProcessor pp1 = PublishProcessor.create(); + final PublishProcessor pp2 = PublishProcessor.create(); + + TestObserver to = pp1.singleElement().takeUntil(pp2.singleElement()).test(); + + final TestException ex1 = new TestException(); + final TestException ex2 = new TestException(); + + List errors = TestHelper.trackPluginErrors(); + try { + + Runnable r1 = () -> pp1.onError(ex1); + Runnable r2 = () -> pp2.onError(ex2); + + TestHelper.race(r1, r2); + + to.assertFailure(TestException.class); + + if (!errors.isEmpty()) { + TestHelper.assertUndeliverable(errors, 0, TestException.class); + } + + } finally { + RxJavaPlugins.reset(); + } + + } + } + + @Test + public void onCompleteRace() { + for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { + final PublishProcessor pp1 = PublishProcessor.create(); + final PublishProcessor pp2 = PublishProcessor.create(); + + TestObserver to = pp1.singleElement().takeUntil(pp2.singleElement()).test(); + + Runnable r1 = pp1::onComplete; + Runnable r2 = pp2::onComplete; + + TestHelper.race(r1, r2); + + to.assertResult(); + } + } +} diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilPublisherIsolatedTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilPublisherIsolatedTest.java new file mode 100644 index 0000000000..6b3f90d0e4 --- /dev/null +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilPublisherIsolatedTest.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2016-present, RxJava Contributors. + * + * Licensed 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 io.reactivex.rxjava4.internal.operators.maybe; + +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Isolated; + +import io.reactivex.rxjava4.core.RxJavaTest; +import io.reactivex.rxjava4.exceptions.TestException; +import io.reactivex.rxjava4.observers.TestObserver; +import io.reactivex.rxjava4.plugins.RxJavaPlugins; +import io.reactivex.rxjava4.processors.PublishProcessor; +import io.reactivex.rxjava4.testsupport.TestHelper; + +@Isolated +public class MaybeTakeUntilPublisherIsolatedTest extends RxJavaTest { + + @Test + public void onErrorRace() { + for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { + final PublishProcessor pp1 = PublishProcessor.create(); + final PublishProcessor pp2 = PublishProcessor.create(); + + TestObserver to = pp1.singleElement().takeUntil(pp2).test(); + + final TestException ex1 = new TestException(); + final TestException ex2 = new TestException(); + + List errors = TestHelper.trackPluginErrors(); + try { + + Runnable r1 = () -> pp1.onError(ex1); + Runnable r2 = () -> pp2.onError(ex2); + + TestHelper.race(r1, r2); + + to.assertFailure(TestException.class); + + if (!errors.isEmpty()) { + TestHelper.assertUndeliverable(errors, 0, TestException.class); + } + + } finally { + RxJavaPlugins.reset(); + } + + } + } + + @Test + public void onCompleteRace() { + for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { + final PublishProcessor pp1 = PublishProcessor.create(); + final PublishProcessor pp2 = PublishProcessor.create(); + + TestObserver to = pp1.singleElement().takeUntil(pp2).test(); + + Runnable r1 = pp1::onComplete; + Runnable r2 = pp2::onComplete; + + TestHelper.race(r1, r2); + + to.assertResult(); + } + } +} diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilPublisherTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilPublisherTest.java index 81b6c17d07..9e472a5a62 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilPublisherTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilPublisherTest.java @@ -110,55 +110,6 @@ public void otherCompletes() { to.assertResult(); } - @Test - public void onErrorRace() { - for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { - final PublishProcessor pp1 = PublishProcessor.create(); - final PublishProcessor pp2 = PublishProcessor.create(); - - TestObserver to = pp1.singleElement().takeUntil(pp2).test(); - - final TestException ex1 = new TestException(); - final TestException ex2 = new TestException(); - - List errors = TestHelper.trackPluginErrors(); - try { - - Runnable r1 = () -> pp1.onError(ex1); - Runnable r2 = () -> pp2.onError(ex2); - - TestHelper.race(r1, r2); - - to.assertFailure(TestException.class); - - if (!errors.isEmpty()) { - TestHelper.assertUndeliverable(errors, 0, TestException.class); - } - - } finally { - RxJavaPlugins.reset(); - } - - } - } - - @Test - public void onCompleteRace() { - for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { - final PublishProcessor pp1 = PublishProcessor.create(); - final PublishProcessor pp2 = PublishProcessor.create(); - - TestObserver to = pp1.singleElement().takeUntil(pp2).test(); - - Runnable r1 = pp1::onComplete; - Runnable r2 = pp2::onComplete; - - TestHelper.race(r1, r2); - - to.assertResult(); - } - } - @Test public void otherSignalsAndCompletes() { List errors = TestHelper.trackPluginErrors(); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilTest.java index 9750093c33..e80dddaed3 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/maybe/MaybeTakeUntilTest.java @@ -15,14 +15,11 @@ import static org.junit.jupiter.api.Assertions.*; -import java.util.List; - import org.junit.jupiter.api.Test; import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.exceptions.TestException; import io.reactivex.rxjava4.observers.TestObserver; -import io.reactivex.rxjava4.plugins.RxJavaPlugins; import io.reactivex.rxjava4.processors.PublishProcessor; import io.reactivex.rxjava4.subjects.MaybeSubject; import io.reactivex.rxjava4.testsupport.TestHelper; @@ -139,55 +136,6 @@ public void otherCompletes() { to.assertResult(); } - @Test - public void onErrorRace() { - for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { - final PublishProcessor pp1 = PublishProcessor.create(); - final PublishProcessor pp2 = PublishProcessor.create(); - - TestObserver to = pp1.singleElement().takeUntil(pp2.singleElement()).test(); - - final TestException ex1 = new TestException(); - final TestException ex2 = new TestException(); - - List errors = TestHelper.trackPluginErrors(); - try { - - Runnable r1 = () -> pp1.onError(ex1); - Runnable r2 = () -> pp2.onError(ex2); - - TestHelper.race(r1, r2); - - to.assertFailure(TestException.class); - - if (!errors.isEmpty()) { - TestHelper.assertUndeliverable(errors, 0, TestException.class); - } - - } finally { - RxJavaPlugins.reset(); - } - - } - } - - @Test - public void onCompleteRace() { - for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { - final PublishProcessor pp1 = PublishProcessor.create(); - final PublishProcessor pp2 = PublishProcessor.create(); - - TestObserver to = pp1.singleElement().takeUntil(pp2.singleElement()).test(); - - Runnable r1 = pp1::onComplete; - Runnable r2 = pp2::onComplete; - - TestHelper.race(r1, r2); - - to.assertResult(); - } - } - @Test public void untilMaybeMainSuccess() { MaybeSubject main = MaybeSubject.create();