public final class

OrchestratorV1Connection

extends TestEventServiceConnectionBase<OrchestratorCallback>

implements TestRunEventService, TestDiscoveryEventService

 java.lang.Object

androidx.test.internal.events.client.TestEventServiceConnectionBase<OrchestratorCallback>

↳androidx.test.orchestrator.callback.OrchestratorV1Connection

Gradle dependencies

compile group: 'androidx.test', name: 'runner', version: '1.6.2'

  • groupId: androidx.test
  • artifactId: runner
  • version: 1.6.2

Artifact androidx.test:runner:1.6.2 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.test:runner com.android.support.test:runner

Overview

Handles the communication with the remote androidx.test.orchestrator.OrchestratorService. The Orchestrator v1 service supports both test discovery notifications and test run event notifications.

Summary

Fields
from TestEventServiceConnectionBase<T>service
Constructors
publicOrchestratorV1Connection(TestEventClientConnectListener listener)

Creates a new OrchestratorV1Connection to handle the communication with the remote androidx.test.orchestrator.OrchestratorService.

Methods
public voidsend(TestDiscoveryEvent event)

public voidsend(TestRunEvent event)

from TestEventServiceConnectionBase<T>connect
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public OrchestratorV1Connection(TestEventClientConnectListener listener)

Creates a new OrchestratorV1Connection to handle the communication with the remote androidx.test.orchestrator.OrchestratorService.

Methods

public void send(TestRunEvent event)

public void send(TestDiscoveryEvent event)

Source

/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * 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 androidx.test.orchestrator.callback;

import static androidx.test.internal.util.Checks.checkNotNull;
import static androidx.test.orchestrator.callback.BundleConverter.getBundleFromTestRunEvent;

import android.os.RemoteException;
import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope;
import androidx.test.internal.events.client.TestDiscoveryEventService;
import androidx.test.internal.events.client.TestEventClientConnectListener;
import androidx.test.internal.events.client.TestEventClientException;
import androidx.test.internal.events.client.TestEventServiceConnectionBase;
import androidx.test.internal.events.client.TestRunEventService;
import androidx.test.services.events.discovery.TestDiscoveryEvent;
import androidx.test.services.events.discovery.TestFoundEvent;
import androidx.test.services.events.run.TestRunEvent;

/**
 * Handles the communication with the remote {@code androidx.test.orchestrator.OrchestratorService}.
 * The Orchestrator v1 service supports both test discovery notifications and test run event
 * notifications.
 *
 * @hide
 */
@RestrictTo(Scope.LIBRARY)
public final class OrchestratorV1Connection
    extends TestEventServiceConnectionBase<OrchestratorCallback>
    implements TestRunEventService, TestDiscoveryEventService {
  // TODO(b/161828929): move this to internal/events/client
  private static final String ORCHESTRATOR_SERVICE =
      "androidx.test.orchestrator/.OrchestratorService";

  /**
   * Creates a new {@code OrchestratorV1Connection} to handle the communication with the remote
   * {@code androidx.test.orchestrator.OrchestratorService}.
   */
  public OrchestratorV1Connection(@NonNull TestEventClientConnectListener listener) {
    super(ORCHESTRATOR_SERVICE, OrchestratorCallback.Stub::asInterface, listener);
  }

  /** {@inheritDoc} */
  @Override
  public void send(@NonNull TestRunEvent event) throws TestEventClientException {
    checkNotNull(event, "event cannot be null");
    if (null == service) {
      throw new TestEventClientException(
          "Unable to send notification, Orchestrator callback is null");
    }
    try {
      service.sendTestNotification(getBundleFromTestRunEvent(event));
    } catch (RemoteException e) {
      throw new TestEventClientException(
          "Unable to send test run event [" + event.getClass() + "]", e);
    }
  }

  /** {@inheritDoc} */
  @Override
  public void send(@NonNull TestDiscoveryEvent event) throws TestEventClientException {
    checkNotNull(event, "event cannot be null");
    if (null == service) {
      throw new TestEventClientException("Unable to add test, Orchestrator callback is null");
    }
    if (event instanceof TestFoundEvent) {
      String testName = ((TestFoundEvent) event).testCase.getClassAndMethodName();
      try {
        service.addTest(testName);
      } catch (RemoteException e) {
        throw new TestEventClientException("Failed to add test [" + testName + "]", e);
      }
    }
  }
}