| /* |
| * Copyright (C) 2016 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 com.android.tradefed; |
| |
| import com.android.tradefed.device.DeviceNotAvailableException; |
| import com.android.tradefed.device.ITestDevice; |
| import com.android.tradefed.invoker.IInvocationContext; |
| import com.android.tradefed.invoker.TestInformation; |
| import com.android.tradefed.log.LogUtil.CLog; |
| import com.android.tradefed.result.ITestInvocationListener; |
| import com.android.tradefed.testtype.IInvocationContextReceiver; |
| import com.android.tradefed.testtype.IRemoteTest; |
| |
| import org.junit.Assert; |
| |
| /** |
| * Hello world example of Multiple Devices support in Trade Federation. We implements the existing |
| * {@link IRemoteTest} interface to be a TradeFed Tests, and you can implement {@link |
| * IInvocationContextReceiver} to get the full invocation metadata. In this example we implement |
| * both but you should only implement one or the other. |
| */ |
| public class HelloWorldMultiDevices implements IRemoteTest { |
| |
| @Override |
| public void run(TestInformation testInfo, ITestInvocationListener listener) |
| throws DeviceNotAvailableException { |
| IInvocationContext context = testInfo.getContext(); |
| // We can also use the IInvocationContext information, which have various functions to |
| // access the ITestDevice or IBuildInfo. |
| for (ITestDevice device : context.getDevices()) { |
| CLog.i( |
| "Hello World! device '%s' from context with build '%s'", |
| device.getSerialNumber(), context.getBuildInfo(device)); |
| } |
| |
| // We can do a look up by the device name in the configuration using the IInvocationContext |
| for (String deviceName : context.getDeviceConfigNames()) { |
| CLog.i( |
| "device '%s' has the name '%s' in the config.", |
| context.getDevice(deviceName).getSerialNumber(), deviceName); |
| } |
| |
| // if the device name is known, doing a direct look up is possible. |
| Assert.assertNotNull(context.getDevice("device1")); |
| CLog.i( |
| "device named device1 direct look up is '%s'", |
| context.getDevice("device1").getSerialNumber()); |
| } |
| } |