def sanity_check(self):
        HardwareAndroid.sanity_check(self)

        if not self._adb.is_root():
            return

        result = self._adb.check(' '.join(
          ['cat',
           '/sys/class/power_supply/battery/capacity',
           '/sys/devices/system/cpu/online'] + \
          ['/sys/devices/system/cpu/cpu%i/cpufreq/scaling_cur_freq' % i
           for i in range(2, 4)] + \
          ['/sys/class/kgsl/kgsl-3d0/thermal_pwrlevel',
           '/sys/kernel/debug/clk/gpu_gx_gfx3d_clk/measure',
           '/sys/kernel/debug/clk/bimc_clk/measure',
           '/sys/class/thermal/thermal_zone22/temp',
           '/sys/class/thermal/thermal_zone23/temp'] + \
          self._devfreq_sanity_knobs))

        expectations = \
          [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
           Expectation(str, exact_value='2-3', name='online cpus')] + \
          [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
           for i in range(2, 4)] + \
          [Expectation(int, exact_value=2, name='gpu thermal power level'),
           Expectation(long, min_value=(GPU_CLOCK_RATE - 5000),
                       max_value=(GPU_CLOCK_RATE + 5000),
                       name='measured gpu clock'),
           Expectation(long, min_value=902390000, max_value=902409999,
                       name='measured ddr clock', sleeptime=10),
           Expectation(int, max_value=41000, name='pm8994_tz temperature'),
           Expectation(int, max_value=40, name='msm_therm temperature')] + \
          self._devfreq_sanity_expectations

        Expectation.check_all(expectations, result.splitlines())
Example #2
0
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._adb.is_root():
      return

    result = self._adb.check(' '.join(
      ['cat',
       '/sys/class/power_supply/battery/capacity',
       '/sys/devices/system/cpu/online'] + \
      ['/sys/devices/system/cpu/cpu%i/cpufreq/scaling_cur_freq' % i
       for i in range(2, 4)] + \
      ['/sys/kernel/debug/clk/bimc_clk/measure',
       '/sys/class/thermal/thermal_zone22/temp',
       '/sys/class/thermal/thermal_zone23/temp']))

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='2-3', name='online cpus')] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
       for i in range(2, 4)] + \
       [Expectation(long, min_value=902390000, max_value=902409999,
                   name='measured ddr clock', sleeptime=10),
       Expectation(int, max_value=41000, name='pm8994_tz temperature'),
       Expectation(int, max_value=40, name='msm_therm temperature')]

    Expectation.check_all(expectations, result.splitlines())
Example #3
0
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._adb.is_root():
      return

    # only issue one shell command in an attempt to minimize interference.
    result = self._adb.check('''\
      cat /sys/class/power_supply/bq27742-0/capacity \
          /sys/devices/system/cpu/online \
          /sys/class/thermal/thermal_zone7/temp \
          /sys/class/thermal/thermal_zone0/temp \
          /sys/class/thermal/thermal_zone1/temp \
          /sys/class/thermal/thermal_zone7/cdev1/cur_state \
          /sys/class/thermal/thermal_zone7/cdev0/cur_state
      for N in 0 1 2; do
        cat /sys/devices/system/cpu/cpu$N/cpufreq/scaling_cur_freq
      done
      cat /sys/devices/57000000.gpu/pstate | grep \*$''')

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='0-2', name='online cpus'),
       Expectation(int, max_value=40000, name='skin temperature'),
       Expectation(int, max_value=86000, name='cpu temperature'),
       Expectation(int, max_value=87000, name='gpu temperature'),
       Expectation(int, exact_value=0, name='cpu throttle'),
       Expectation(int, exact_value=0, name='gpu throttle')] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE,
                   name='cpu_%i clock rate' % i, sleeptime=30)
       for i in (0, 1, 2)] + \
      [Expectation(str, exact_value=GPU_EMC_PROFILE, name='gpu/emc profile')]

    Expectation.check_all(expectations, result.splitlines())
Example #4
0
    def sanity_check(self):
        HardwareAndroid.sanity_check(self)

        if not self._is_root:
            return

        # only issue one shell command in an attempt to minimize interference.
        result = self._adb.check_lines('''\
      cat /sys/class/power_supply/bq27742-0/capacity \
          /sys/class/thermal/thermal_zone7/temp \
          /sys/class/thermal/thermal_zone0/temp \
          /sys/class/thermal/thermal_zone1/temp \
          /sys/class/thermal/thermal_zone7/cdev1/cur_state \
          /sys/class/thermal/thermal_zone7/cdev0/cur_state
      for N in $(seq 0 3); do
        cat /sys/devices/system/cpu/cpu$N/cpufreq/scaling_cur_freq
      done
      cat /sys/devices/57000000.gpu/pstate | grep \*$''')

        expectations = \
          [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
           Expectation(int, max_value=40000, name='skin temperature'),
           Expectation(int, max_value=86000, name='cpu temperature'),
           Expectation(int, max_value=87000, name='gpu temperature'),
           Expectation(int, exact_value=0, name='cpu throttle'),
           Expectation(int, exact_value=0, name='gpu throttle')] + \
          [Expectation(int, exact_value=CPU_CLOCK_RATE,
                       name='cpu_%i clock rate' % i, sleeptime=30)
           for i in range(4)] + \
          [Expectation(str, exact_value=GPU_EMC_PROFILE, name='gpu/emc profile')]

        Expectation.check_all(expectations, result)
Example #5
0
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._is_root:
      return

    result = self._adb.check_lines('''\
      cat /sys/class/power_supply/battery/capacity \
          /sys/devices/system/cpu/online \
          /sys/class/thermal/thermal_zone14/temp \
          /sys/class/thermal/thermal_zone15/temp \
          /sys/kernel/debug/clk/oxili_gfx3d_clk/measure \
          /sys/kernel/debug/clk/bimc_clk/measure
      for N in 4 5 6; do
        cat /sys/devices/system/cpu/cpu$N/cpufreq/scaling_cur_freq
      done''')

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='4-6', name='online cpus'),
       Expectation(int, max_value=88, name='tsens_tz_sensor13'),
       Expectation(int, max_value=88, name='tsens_tz_sensor14'),
       Expectation(long, min_value=(GPU_CLOCK_RATE - 5000),
                   max_value=(GPU_CLOCK_RATE + 5000), name='gpu clock rate'),
       Expectation(long, min_value=647995000, max_value=648007500,
                   name='ddr clock rate', sleeptime=10)] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
       for i in range(4, 7)]

    Expectation.check_all(expectations, result)
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._adb.is_root():
      return

    result = self._adb.check('''\
      cat /sys/class/power_supply/battery/capacity \
          /sys/devices/system/cpu/online \
          /sys/class/thermal/thermal_zone14/temp \
          /sys/class/thermal/thermal_zone15/temp \
          /sys/kernel/debug/clk/oxili_gfx3d_clk/measure \
          /sys/kernel/debug/clk/bimc_clk/measure
      for N in 4 5 6; do
        cat /sys/devices/system/cpu/cpu$N/cpufreq/scaling_cur_freq
      done''')

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='4-6', name='online cpus'),
       Expectation(int, max_value=88, name='tsens_tz_sensor13'),
       Expectation(int, max_value=88, name='tsens_tz_sensor14'),
       Expectation(long, min_value=(GPU_CLOCK_RATE - 5000),
                   max_value=(GPU_CLOCK_RATE + 5000), name='gpu clock rate'),
       Expectation(long, min_value=647995000, max_value=648007500,
                   name='ddr clock rate', sleeptime=10)] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
       for i in range(4, 7)]

    Expectation.check_all(expectations, result.splitlines())
    def _discover_devfreqs(self):
        self._devfreq_lock_cmds = list()
        self._devfreq_sanity_knobs = list()
        self._devfreq_sanity_expectations = list()

        results = iter(
            self._adb.check('''\
      KNOBS='%s'
      for DEVICE in %s/*; do
        if cd $DEVICE && ls $KNOBS >/dev/null; then
          basename $DEVICE
          cat $KNOBS
        fi
      done 2>/dev/null''' % (' '.join(
                DevfreqKnobs._fields), DEVFREQ_DIRNAME)).splitlines())

        while True:
            batch = tuple(
                itertools.islice(results, 1 + len(DevfreqKnobs._fields)))
            if not batch:
                break

            devfreq = batch[0]
            if devfreq in DEVFREQ_BLACKLIST:
                continue

            path = '%s/%s' % (DEVFREQ_DIRNAME, devfreq)

            knobs = DevfreqKnobs(*batch[1:])
            if not 'performance' in knobs.available_governors.split():
                print(
                    'WARNING: devfreq %s does not have performance governor' %
                    path)
                continue

            self._devfreq_lock_cmds.append('echo performance > %s/governor' %
                                           path)

            frequencies = map(int, knobs.available_frequencies.split())
            if frequencies:
                # choose the lowest frequency that is >= DEVFREQ_THROTTLE * max.
                frequencies.sort()
                target = DEVFREQ_THROTTLE * frequencies[-1]
                idx = len(frequencies) - 1
                while idx > 0 and frequencies[idx - 1] >= target:
                    idx -= 1
                bench_frequency = frequencies[idx]
                self._devfreq_lock_cmds.append('echo %i > %s/min_freq' %
                                               (bench_frequency, path))
                self._devfreq_lock_cmds.append('echo %i > %s/max_freq' %
                                               (bench_frequency, path))
                self._devfreq_sanity_knobs.append('%s/cur_freq' % path)
                self._devfreq_sanity_expectations.append(
                    Expectation(int,
                                exact_value=bench_frequency,
                                name='%s/cur_freq' % path))
Example #8
0
    def sanity_check(self):
        HardwareAndroid.sanity_check(self)

        if not self._adb.is_root():
            return

        result = self._adb.check(' '.join(
          ['cat',
           '/sys/class/power_supply/battery/capacity',
           '/sys/devices/system/cpu/online'] + \
          ['/sys/devices/system/cpu/cpu%i/cpufreq/scaling_cur_freq' % i
           for i in range(4, 7)] + \
      # Unfortunately we can't monitor the gpu clock:
      #
      #   /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq
      #
      # It doesn't respect the min_freq/max_freq values when not under load.





          ['/sys/kernel/debug/clk/bimc_clk/measure',
           '/sys/class/kgsl/kgsl-3d0/temp',
           '/sys/class/kgsl/kgsl-3d0/throttling',
           '/sys/class/thermal/thermal_zone10/temp',
           '/sys/class/thermal/thermal_zone7/temp']))

        expectations = \
          [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
           Expectation(str, exact_value='4-6', name='online cpus')] + \
          [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
           for i in range(4, 7)] + \
          [Expectation(long, min_value=902390000, max_value=902409999,
                       name='measured ddr clock', sleeptime=10),
           Expectation(int, max_value=750, name='gpu temperature'),
           Expectation(int, exact_value=1, name='gpu throttling'),
           Expectation(int, max_value=75, name='msm_therm temperature'),
           Expectation(int, max_value=75000, name='pm8998_tz temperature')]

        Expectation.check_all(expectations, result.splitlines())
Example #9
0
  def sanity_check(self):
    HardwareAndroid.sanity_check(self)

    if not self._adb.is_root():
      return

    result = self._adb.check(' '.join(
      ['cat',
       '/sys/class/power_supply/battery/capacity',
       '/sys/devices/system/cpu/online'] + \
      ['/sys/devices/system/cpu/cpu%i/cpufreq/scaling_cur_freq' % i
       for i in range(4, 7)] + \
      # Unfortunately we can't monitor the gpu clock:
      #
      #   /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq
      #
      # It doesn't respect the min_freq/max_freq values when not under load.
      ['/sys/kernel/debug/clk/bimc_clk/measure',
       '/sys/class/kgsl/kgsl-3d0/temp',
       '/sys/class/kgsl/kgsl-3d0/throttling',
       '/sys/class/thermal/thermal_zone10/temp',
       '/sys/class/thermal/thermal_zone7/temp']))

    expectations = \
      [Expectation(int, min_value=30, name='battery', sleeptime=30*60),
       Expectation(str, exact_value='4-6', name='online cpus')] + \
      [Expectation(int, exact_value=CPU_CLOCK_RATE, name='cpu_%i clock rate' %i)
       for i in range(4, 7)] + \
      [Expectation(long, min_value=902390000, max_value=902409999,
                   name='measured ddr clock', sleeptime=10),
       Expectation(int, max_value=750, name='gpu temperature'),
       Expectation(int, exact_value=1, name='gpu throttling'),
       Expectation(int, max_value=75, name='msm_therm temperature'),
       Expectation(int, max_value=75000, name='pm8998_tz temperature')]

    Expectation.check_all(expectations, result.splitlines())