Home | History | Annotate | Download | only in targetprep
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package com.android.tradefed.targetprep;
     17 
     18 import com.android.tradefed.build.DeviceBuildDescriptor;
     19 import com.android.tradefed.build.IBuildInfo;
     20 import com.android.tradefed.config.Option;
     21 import com.android.tradefed.config.OptionClass;
     22 import com.android.tradefed.device.DeviceNotAvailableException;
     23 import com.android.tradefed.device.ITestDevice;
     24 
     25 /**
     26  * A {@link ITargetPreparer} that inserts {@link DeviceBuildDescriptor} metadata into the {@link
     27  * IBuildInfo}.
     28  *
     29  * <p>Intended to be used for "unbundled" build types that want test reporters to use metadata about
     30  * what device platform test was run on.
     31  */
     32 @OptionClass(alias = "device-build-injector")
     33 public class DeviceBuildInfoInjector extends BaseTargetPreparer {
     34 
     35     @Option(name = "override-device-build-id", description =
     36             "the device buid id to inject.")
     37     private String mOverrideDeviceBuildId = null;
     38 
     39     @Option(name = "override-device-build-alias", description =
     40             "the device buid alias to inject.")
     41     private String mOverrideDeviceBuildAlias = null;
     42 
     43     @Option(name = "override-device-build-flavor", description =
     44             "the device build flavor to inject.")
     45     private String mOverrideDeviceBuildFlavor = null;
     46 
     47     /**
     48      * {@inheritDoc}
     49      */
     50     @Override
     51     public void setUp(ITestDevice device, IBuildInfo buildInfo) throws TargetSetupError,
     52             BuildError, DeviceNotAvailableException {
     53         if (mOverrideDeviceBuildId != null) {
     54             buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_ID,
     55                     mOverrideDeviceBuildId);
     56         } else {
     57             buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_ID, device.getBuildId());
     58         }
     59         if (mOverrideDeviceBuildAlias != null) {
     60             buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_ALIAS,
     61                     mOverrideDeviceBuildAlias);
     62         } else {
     63             buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_ALIAS,
     64                     device.getBuildAlias());
     65         }
     66         if (mOverrideDeviceBuildFlavor != null){
     67             buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_FLAVOR,
     68                     mOverrideDeviceBuildFlavor);
     69         } else {
     70             String buildFlavor = String.format("%s-%s", device.getProperty("ro.product.name"),
     71                     device.getProperty("ro.build.type"));
     72             buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_BUILD_FLAVOR, buildFlavor);
     73         }
     74         buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_DESC,
     75                 DeviceBuildDescriptor.generateDeviceDesc(device));
     76         buildInfo.addBuildAttribute(DeviceBuildDescriptor.DEVICE_PRODUCT,
     77                 DeviceBuildDescriptor.generateDeviceProduct(device));
     78     }
     79 }
     80