Use a realistic Executor in BinderServerTransportTest (#10979)

This commit is contained in:
John Cormie 2024-03-05 15:24:43 -08:00 committed by GitHub
parent 85e52cd113
commit d894c8385d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 16 additions and 5 deletions

View File

@ -27,6 +27,7 @@ android {
withJavadocJar()
}
}
testFixtures { enable true }
}
repositories {
@ -70,6 +71,8 @@ dependencies {
androidTestImplementation libraries.androidx.lifecycle.service
androidTestImplementation libraries.guava.testlib
androidTestImplementation testFixtures(project(':grpc-core'))
testFixturesImplementation libraries.guava.testlib
}
import net.ltgt.gradle.errorprone.CheckSeverity
@ -123,3 +126,8 @@ publishing {
}
}
}
afterEvaluate {
components.release.withVariantsFromConfiguration(configurations.releaseTestFixturesVariantReleaseApiPublication) { skip() }
components.release.withVariantsFromConfiguration(configurations.releaseTestFixturesVariantReleaseRuntimePublication) { skip() }
}

View File

@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
import static org.robolectric.Shadows.shadowOf;
import io.grpc.binder.internal.MainThreadScheduledExecutorService;
import android.app.Application;
import android.content.ComponentName;
import android.content.Intent;

View File

@ -22,15 +22,17 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
import static org.robolectric.annotation.LooperMode.Mode.PAUSED;
import android.os.IBinder;
import android.os.Looper;
import android.os.Parcel;
import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.testing.TestingExecutors;
import io.grpc.Attributes;
import io.grpc.Metadata;
import io.grpc.Status;
import io.grpc.binder.internal.MainThreadScheduledExecutorService;
import io.grpc.internal.FixedObjectPool;
import io.grpc.internal.ServerStream;
import io.grpc.internal.ServerTransportListener;
@ -56,8 +58,7 @@ public final class BinderServerTransportTest {
@Rule public MockitoRule mocks = MockitoJUnit.rule();
private final ScheduledExecutorService executorService =
TestingExecutors.sameThreadScheduledExecutor();
private final ScheduledExecutorService executorService = new MainThreadScheduledExecutorService();
private final TestTransportListener transportListener = new TestTransportListener();
@Mock IBinder mockBinder;
@ -83,6 +84,7 @@ public final class BinderServerTransportTest {
// Now shut it down.
transport.shutdownNow(Status.UNKNOWN.withDescription("reasons"));
shadowOf(Looper.getMainLooper()).idle();
assertThat(transportListener.terminated).isTrue();
}

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.grpc.binder;
package io.grpc.binder.internal;
import android.os.Handler;
import android.os.Looper;
@ -37,7 +37,7 @@ import java.util.concurrent.TimeoutException;
*
* <p>Use {@link org.robolectric.shadows.ShadowLooper#idle()} to run queued work.
*/
class MainThreadScheduledExecutorService extends AbstractExecutorService
public class MainThreadScheduledExecutorService extends AbstractExecutorService
implements ScheduledExecutorService {
private final Handler handler = new Handler(Looper.getMainLooper());