~ubuntu-branches/ubuntu/raring/qtwebkit-source/raring-proposed

« back to all changes in this revision

Viewing changes to Tools/BuildSlaveSupport/chromium/output-android-device-status

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2013-02-18 14:24:18 UTC
  • Revision ID: package-import@ubuntu.com-20130218142418-eon0jmjg3nj438uy
Tags: upstream-2.3
ImportĀ upstreamĀ versionĀ 2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
# Copyright (C) 2012 Google Inc. All Rights Reserved.
 
3
#
 
4
# Redistribution and use in source and binary forms, with or without
 
5
# modification, are permitted provided that the following conditions
 
6
# are met:
 
7
# 1. Redistributions of source code must retain the above copyright
 
8
#    notice, this list of conditions and the following disclaimer.
 
9
# 2. Redistributions in binary form must reproduce the above copyright
 
10
#    notice, this list of conditions and the following disclaimer in the
 
11
#    documentation and/or other materials provided with the distribution.
 
12
#
 
13
# THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
 
14
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
15
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 
16
# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
 
17
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 
18
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 
19
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 
20
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 
21
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
22
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
23
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
24
 
 
25
import re
 
26
import subprocess
 
27
import sys
 
28
 
 
29
def GetAttachedDevices():
 
30
    re_device = re.compile('^([a-zA-Z0-9_:.-]+)\tdevice$', re.MULTILINE)
 
31
    process = subprocess.Popen(['adb', 'devices'], stdout=subprocess.PIPE)
 
32
    return re_device.findall(process.communicate()[0])
 
33
 
 
34
 
 
35
class AndroidDeviceStatus(object):
 
36
    def __init__(self, device_serial):
 
37
        self._device_serial = device_serial
 
38
 
 
39
    def _run_adb_command(self, command):
 
40
        full_command = ['adb', '-s', self._device_serial] + command
 
41
        stdout, _ = subprocess.Popen(full_command, stdout=subprocess.PIPE).communicate()
 
42
        return stdout.strip()
 
43
 
 
44
    def device_type(self):
 
45
        return self._run_adb_command(['shell', 'getprop', 'ro.build.product'])
 
46
 
 
47
    def device_build(self):
 
48
        return self._run_adb_command(['shell', 'getprop', 'ro.build.id'])
 
49
 
 
50
    def device_fingerprint(self):
 
51
        return self._run_adb_command(['shell', 'getprop', 'ro.build.fingerprint'])
 
52
 
 
53
    def battery_level(self):
 
54
        return self._run_adb_command(['shell', 'cat', '/sys/class/power_supply/battery/capacity'])
 
55
 
 
56
    def battery_temperature(self):
 
57
        temperature = self._run_adb_command(['shell', 'dumpsys', 'battery'])
 
58
        re_temperature = re.compile('temperature:\s+(\d+)')
 
59
        return re_temperature.findall(temperature)[0]
 
60
 
 
61
    def username(self):
 
62
        username = self._run_adb_command(['shell', 'id'])
 
63
        re_username = re.compile('uid=\d+\((.+?)\)')
 
64
        return re_username.findall(username)[0]
 
65
 
 
66
 
 
67
def main():
 
68
    devices = GetAttachedDevices()
 
69
    for device_serial in devices:
 
70
        device_status = AndroidDeviceStatus(device_serial)
 
71
 
 
72
        print 'Device %s (%s)' % (device_serial, device_status.device_type())
 
73
        print '  Build: %s (%s)' % (device_status.device_build(), device_status.device_fingerprint())
 
74
        print '  Battery: %s%%' % device_status.battery_level()
 
75
        print '  Battery temp: %s' % device_status.battery_temperature()
 
76
        print '  Username: %s' % device_status.username()
 
77
        print ''
 
78
 
 
79
 
 
80
if __name__ == '__main__':
 
81
    sys.exit(main())