blob: d99bc0b29e3f6e17e77c0b457f817c6ead7e78a5 [file] [log] [blame]
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import json
import os
import subprocess
import sys
import unittest
from telemetry import decorators
from telemetry.testing import options_for_unittests
class ScriptsSmokeTest(unittest.TestCase):
perf_dir = os.path.dirname(__file__)
def RunPerfScript(self, command):
main_command = [sys.executable]
args = main_command + command.split(' ')
proc = subprocess.Popen(args, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, cwd=self.perf_dir)
stdout = proc.communicate()[0]
return_code = proc.returncode
return return_code, stdout
def testRunBenchmarkHelp(self):
return_code, stdout = self.RunPerfScript('run_benchmark help')
self.assertEquals(return_code, 0, stdout)
self.assertIn('Available commands are', stdout)
def testRunBenchmarkRunListsOutBenchmarks(self):
return_code, stdout = self.RunPerfScript('run_benchmark run')
self.assertIn('Pass --browser to list benchmarks', stdout)
self.assertNotEquals(return_code, 0)
def testRunBenchmarkRunNonExistingBenchmark(self):
return_code, stdout = self.RunPerfScript('run_benchmark foo')
self.assertIn('No benchmark named "foo"', stdout)
self.assertNotEquals(return_code, 0)
def testRunRecordWprHelp(self):
return_code, stdout = self.RunPerfScript('record_wpr')
self.assertEquals(return_code, 0, stdout)
self.assertIn('optional arguments:', stdout)
@decorators.Disabled('chromeos') # crbug.com/814068
def testRunRecordWprList(self):
return_code, stdout = self.RunPerfScript('record_wpr --list-benchmarks')
# TODO(nednguyen): Remove this once we figure out why importing
# small_profile_extender fails on Android dbg.
# crbug.com/561668
if 'ImportError: cannot import name small_profile_extender' in stdout:
self.skipTest('small_profile_extender is missing')
self.assertEquals(return_code, 0, stdout)
self.assertIn('kraken', stdout)
@decorators.Disabled('chromeos') # crbug.com/754913
def testRunTelemetryBenchmarkAsGoogletest(self):
options = options_for_unittests.GetCopy()
browser_type = options.browser_type
return_code, stdout = self.RunPerfScript(
'../../testing/scripts/run_telemetry_benchmark_as_googletest.py '
'run_benchmark dummy_benchmark.stable_benchmark_1 --browser=%s '
'--isolated-script-test-output=output.json '
'--isolated-script-test-chartjson-output=chartjson_output.json '
'--output-format=chartjson' % browser_type)
self.assertEquals(return_code, 0, stdout)
try:
with open('../../tools/perf/output.json') as f:
self.assertIsNotNone(
json.load(f), 'json_test_results should be populated: ' + stdout)
os.remove('../../tools/perf/output.json')
except IOError as e:
self.fail('json_test_results should be populated: ' + stdout + str(e))
try:
with open('../../tools/perf/chartjson_output.json') as f:
self.assertIsNotNone(
json.load(f), 'chartjson should be populated: ' + stdout)
os.remove('../../tools/perf/chartjson_output.json')
except IOError as e:
self.fail('chartjson should be populated: ' + stdout + str(e))