benchmarking/get_connected_devices.py (79 lines of code) (raw):
#!/usr/bin/env python
##############################################################################
# Copyright 2017-present, Facebook, Inc.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.
##############################################################################
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
import argparse
import json
import logging
from platforms.platforms import getPlatforms
from utils.custom_logger import getLogger
parser = argparse.ArgumentParser()
parser.add_argument(
"--android_dir",
default="/data/local/tmp/",
help="The directory in the android device all files are pushed to.",
)
parser.add_argument(
"-d",
"--devices",
help="Specify the devices to run the benchmark, in a comma separated "
"list. The value is the device or device_hash field of the meta info.",
)
parser.add_argument("--device", help="The single device to run this benchmark on")
parser.add_argument(
"--excluded_devices",
help="Specify the devices that skip the benchmark, in a comma separated "
"list. The value is the device or device_hash field of the meta info.",
)
parser.add_argument(
"--ios_dir",
default="/tmp",
help="The directory in the ios device all files are pushed to.",
)
parser.add_argument(
"--set_freq",
help="On rooted android phones, set the frequency of the cores. "
"The supported values are: "
"max: set all cores to the maximum frquency. "
"min: set all cores to the minimum frequency. "
"mid: set all cores to the median frequency. ",
)
parser.add_argument(
"--platform", default="android", help="Specify the platforms to benchmark on. "
)
parser.add_argument(
"--platform_sig",
help="Specify the platforms signature which clusters the same type machine. ",
)
parser.add_argument(
"--hash_platform_mapping",
help="Specify the devices hash platform mapping json file.",
)
parser.add_argument(
"--device_name_mapping",
default=None,
help="Specify device to product name mapping json file.",
)
class GetConnectedDevices(object):
def __init__(self, **kwargs):
raw_args = kwargs.get("raw_args", None)
self.args, self.unknowns = parser.parse_known_args(raw_args)
def run(self):
platforms = getPlatforms(self.args, tempdir="/tmp")
devices = []
for p in platforms:
devices.append(
{
"kind": p.getKind(),
"name": p.getName(),
"hash": p.platform_hash,
"abi": p.getABI(),
"os": p.getOS(),
}
)
json_str = json.dumps(devices)
print(json_str)
return json_str
if __name__ == "__main__":
app = GetConnectedDevices()
app.run()