Example #1
0
    def getAndroidPlatforms(self, tempdir, usb_controller):
        platforms = []
        if self.args.device:
            device = None
            device_str = self.args.device
            if device_str[0] == "{":
                device = json.loads(device_str)
                hash = device["hash"]
            else:
                hash = self.args.device
            adb = ADB(hash, tempdir)
            platform = AndroidPlatform(tempdir, adb, self.args, usb_controller)
            platforms.append(platform)
            if device:
                platform.setPlatform(device["kind"])
            return platforms

        if self.devices is None:
            self.devices = self.getDevices()
        if self.args.excluded_devices:
            excluded_devices = set(
                self.args.excluded_devices.strip().split(","))
            self.devices = self.devices.difference(excluded_devices)

        if self.args.devices:
            supported_devices = set(self.args.devices.strip().split(","))
            if supported_devices.issubset(self.devices):
                self.devices = supported_devices

        for device in self.devices:
            adb = ADB(device, tempdir)
            platforms.append(AndroidPlatform(tempdir, adb, self.args))
        return platforms
Example #2
0
    def __init__(self, raw_args=None):
        self.args, self.unknowns = parser.parse_known_args(raw_args)
        self.benchmark_downloader = DownloadBenchmarks(self.args, getLogger())
        self.adb = ADB(None, self.args.android_dir)
        devices = self._getDevices()
        setLoggerLevel(self.args.logger_level)
        if not self.args.benchmark_db_entry:
            assert self.args.server_addr is not None, \
                "Either server_addr or benchmark_db_entry must be specified"
            while self.args.server_addr[-1] == '/':
                self.args.server_addr = self.args.server_addr[:-1]
            self.args.benchmark_db_entry = self.args.server_addr + "/benchmark/"
        self.db = DBDriver(self.args.benchmark_db, self.args.app_id,
                           self.args.token, self.args.benchmark_table,
                           self.args.job_queue, self.args.test,
                           self.args.benchmark_db_entry)

        self.devices = {}
        for k in devices:
            kind = k["kind"]
            hash = k["hash"]
            entry = {
                "kind":
                kind,
                "hash":
                hash,
                "available":
                True,
                "live":
                True,
                "start_time":
                None,
                "done_time":
                None,
                "output_dir":
                None,
                "job":
                None,
                "adb":
                ADB(hash, self.args.android_dir),
                "reboot_time":
                datetime.datetime.now() - datetime.timedelta(hours=8)
            }
            if kind not in self.devices:
                self.devices[kind] = {}
            assert hash not in self.devices[kind], \
                "Device {} ({}) is attached twice.".format(kind, hash)
            self.devices[kind][hash] = entry

        dvs = [
            self.devices[k][h] for k in self.devices for h in self.devices[k]
        ]
        self.db.updateDevices(self.args.claimer_id, getDevicesString(dvs),
                              True)
        if self.args.platform.startswith("host"):
            numProcesses = 2
        else:
            numProcesses = multiprocessing.cpu_count() - 1
        self.pool = multiprocessing.Pool(processes=numProcesses)
Example #3
0
 def getDevices(self, silent=False, retry=1):
     adb = ADB()
     rows = adb.run("devices", "-l", silent=silent, retry=1)
     rows.pop(0)
     devices = set()
     for row in rows:
         items = row.strip().split()
         if len(items) > 2 and "device" in items:
             device_id = items[0].strip()
             devices.add(device_id)
     return devices
Example #4
0
 def getDevices(self):
     adb = ADB()
     rows = adb.run("devices", "-l")
     rows.pop(0)
     devices = set()
     for row in rows:
         items = row.strip().split(' ')
         if len(items) > 2 and "device" in items:
             device_id = items[0].strip()
             devices.add(device_id)
     return devices
Example #5
0
 def _enableDevice(self, device):
     kind = device["kind"]
     hash = device["hash"]
     name = device["name"]
     abi = device["abi"]
     os = device["os"]
     entry = {
         "kind": kind,
         "hash": hash,
         "name": name,
         "abi": abi,
         "os": os,
         "available": True,
         "live": True,
         "start_time": None,
         "done_time": None,
         "output_dir": None,
         "job": None,
         "adb": ADB(hash, self.args.android_dir),
         "reboot_time":
         datetime.datetime.now() - datetime.timedelta(hours=8)
     }
     if kind not in self.lab_devices:
         self.lab_devices[kind] = {}
     self.lab_devices[kind][hash] = entry
     self.db.updateDevices(self.args.claimer_id,
                           getDevicesString([self.lab_devices[kind][hash]]),
                           False)
Example #6
0
    def __init__(self, raw_args=None):
        self.args, self.unknowns = parser.parse_known_args(raw_args)
        os.environ["CLAIMER"] = self.args.claimer_id
        self.benchmark_downloader = DownloadBenchmarks(self.args, getLogger())
        self.adb = ADB(None, self.args.android_dir)
        setLoggerLevel(self.args.logger_level)
        if not self.args.benchmark_db_entry:
            assert (
                self.args.server_addr is not None
            ), "Either server_addr or benchmark_db_entry must be specified"
            while self.args.server_addr[-1] == "/":
                self.args.server_addr = self.args.server_addr[:-1]
            self.args.benchmark_db_entry = self.args.server_addr + "/benchmark/"
        self.db = DBDriver(
            self.args.benchmark_db,
            self.args.app_id,
            self.args.token,
            self.args.benchmark_table,
            self.args.job_queue,
            self.args.test,
            self.args.benchmark_db_entry,
        )
        self.device_manager = DeviceManager(self.args, self.db)
        self.devices = self.device_manager.getLabDevices()

        if self.args.platform.startswith("host"):
            numProcesses = 2
        else:
            numProcesses = multiprocessing.cpu_count() - 1
        self.pool = Pool(max_workers=numProcesses, initializer=hookSignals)
Example #7
0
def reboot():
    parse()
    device = getArgs().device
    platform = getArgs().platform
    if platform.startswith("ios"):
        util = IDB(device)
    elif platform.startswith("android"):
        util = ADB(device)
    else:
        assert False, "Platform {} not recognized".format(platform)
    util.reboot()
    print("Reboot Success")
Example #8
0
def reboot(**kwargs):
    raw_args = kwargs.get("raw_args", None)
    args, _ = parser.parse_known_args(raw_args)
    device = args.device
    platform = args.platform
    if platform.startswith("ios"):
        util = IDB(device)
    elif platform.startswith("android"):
        util = ADB(device, args.android_dir)
    else:
        raise AssertionError("Platform {} not recognized".format(platform))
    util.reboot()
    print("Reboot Success")
Example #9
0
    def getAndroidPlatforms(self, tempdir):
        platforms = []
        if getArgs().device:
            adb = ADB(getArgs().device)
            platforms.append(AndroidPlatform(tempdir, adb))
            return platforms

        if self.devices is None:
            self.devices = self.getDevices()
        if getArgs().excluded_devices:
            excluded_devices = \
                set(getArgs().excluded_devices.strip().split(','))
            self.devices = self.devices.difference(excluded_devices)

        if getArgs().devices:
            supported_devices = set(getArgs().devices.strip().split(','))
            if supported_devices.issubset(self.devices):
                self.devices = supported_devices

        for device in self.devices:
            adb = ADB(device)
            platforms.append(AndroidPlatform(tempdir, adb))
        return platforms
Example #10
0
 def _initializeDevices(self):
     """Create device meta data used by lab instance, and update devices in db."""
     self.online_devices = self._getDevices()
     for k in self.online_devices:
         kind = k["kind"]
         hash = k["hash"]
         name = k["name"]
         abi = k["abi"]
         os = k["os"]
         entry = {
             "kind":
             kind,
             "hash":
             hash,
             "name":
             name,
             "abi":
             abi,
             "os":
             os,
             "available":
             True,
             "live":
             True,
             "start_time":
             None,
             "done_time":
             None,
             "output_dir":
             None,
             "job":
             None,
             "adb":
             ADB(hash, self.args.android_dir),
             "reboot_time":
             datetime.datetime.now() - datetime.timedelta(hours=8),
             "usb_hub": {},
         }
         if kind not in self.lab_devices:
             self.lab_devices[kind] = {}
         self.lab_devices[kind][hash] = entry
     dvs = [
         self.lab_devices[k][h] for k in self.lab_devices
         for h in self.lab_devices[k]
     ]
     self.db.updateDevices(self.args.claimer_id, getDevicesString(dvs),
                           True)