Bug 1358670 - Implemented MarionetteHarness in telemetry-harness r=whimboo

Added changes to testcase.py for change server root
Added testvar to pass server_root from command line of telemetry-harness to testcase class.
Added argument.py and runner.py to implement MarionetteHarness in the test job
Changed test name in manifest.ini

MozReview-Commit-ID: 4XpBvq6Skz6

--HG--
extra : rebase_source : ab3f9d8ce95186fb9fba0eda0c4624eed837f298
This commit is contained in:
John Dorlus 2017-06-22 18:18:24 -04:00
Родитель bcf6ef6a17
Коммит 9dd142d73f
6 изменённых файлов: 37 добавлений и 17 удалений

Просмотреть файл

@ -0,0 +1,2 @@
exclude MANIFEST.in
include requirements.txt

Просмотреть файл

@ -1,3 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

Просмотреть файл

@ -0,0 +1,20 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from marionette_harness import BaseMarionetteTestRunner
from testcase import TelemetryTestCase
class TelemetryTestRunner(BaseMarionetteTestRunner):
def __init__(self, **kwargs):
super(TelemetryTestRunner, self).__init__(**kwargs)
self.server_root = kwargs.pop('server_root')
self.testvars['server_root'] = self.server_root
# select the appropriate GeckoInstance
self.app = 'fxdesktop'
self.test_handlers = [TelemetryTestCase]

Просмотреть файл

@ -3,11 +3,12 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from marionette_harness.runtests import cli as mn_cli
from testcase import TelemetryTestCase
from runner import TelemetryTestRunner
def cli():
mn_cli(testcase_class=TelemetryTestCase)
def cli(args=None):
mn_cli(runner_class=TelemetryTestRunner,
args=args)
if __name__ == '__main__':

Просмотреть файл

@ -16,20 +16,17 @@ from marionette_driver.wait import Wait
from marionette_harness import MarionetteTestCase
from marionette_harness.runner import httpd
here = os.path.abspath(os.path.dirname(__file__))
doc_root = os.path.join(os.path.dirname(here), "www")
resources_dir = os.path.join(os.path.dirname(here), "resources")
class TelemetryTestCase(PuppeteerMixin, MarionetteTestCase):
ping_list = []
def setUp(self, *args, **kwargs):
super(TelemetryTestCase, self).setUp()
def __init__(self, *args, **kwargs):
super(TelemetryTestCase, self).__init__(*args, **kwargs)
# Start and configure server
self.httpd = httpd.FixtureServer(doc_root)
def setUp(self, *args, **kwargs):
super(TelemetryTestCase, self).setUp(*args, **kwargs)
self.httpd = httpd.FixtureServer(self.testvars['server_root'])
ping_route = [("POST", re.compile('/pings'), self.pings)]
self.httpd.routes.extend(ping_route)
self.httpd.start()
@ -51,9 +48,11 @@ class TelemetryTestCase(PuppeteerMixin, MarionetteTestCase):
self.marionette.enforce_gecko_prefs(telemetry_prefs)
def wait_for_ping(self, ping_filter_func):
current_ping_list_size = len(self.ping_list)
if len(self.ping_list) == 0:
try:
Wait(self.marionette, 60).until(lambda t: len(self.ping_list) > 0)
Wait(self.marionette, 60).until(lambda _:
len(self.ping_list) > current_ping_list_size)
except Exception as e:
self.fail('Error generating ping: {}'.format(e.message))
@ -81,7 +80,8 @@ class TelemetryTestCase(PuppeteerMixin, MarionetteTestCase):
# Developed by: MozillaOnline
# Addon URL: https://addons.mozilla.org/en-US/firefox/addon/easyscreenshot/
try:
addon_path = os.path.join(resources_dir, 'easyscreenshot.xpi')
# TODO: Replace Resources_dir with default directory
addon_path = os.path.join('resources_dir', 'easyscreenshot.xpi')
addons = Addons(self.marionette)
addons.install(addon_path)
except MarionetteException as e:

Просмотреть файл

@ -1,4 +1,4 @@
[DEFAULT]
tags = client
[test_main_ping_addon_install_tab_window_scalars.py]
[test_main_tab_scalars.py]