Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

# 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 telemetry_harness.fog_ping_filters import FOG_BASELINE_PING
from telemetry_harness.fog_testcase import FOGTestCase
class TestClientActivity(FOGTestCase):
"""Tests for client activity and FOG's scheduling of the "baseline" ping."""
def test_user_activity(self):
# First test that restarting the browser sends a "active" ping
ping0 = self.wait_for_ping(
self.restart_browser, FOG_BASELINE_PING, ping_server=self.fog_ping_server
)
self.assertEqual("active", ping0["payload"]["ping_info"]["reason"])
with self.marionette.using_context(self.marionette.CONTEXT_CHROME):
zero_prefs_script = """\
Services.prefs.setIntPref("telemetry.fog.test.inactivity_limit", 0);
Services.prefs.setIntPref("telemetry.fog.test.activity_limit", 0);
"""
self.marionette.execute_script(zero_prefs_script)
def user_active(active, marionette):
script = "Services.obs.notifyObservers(null, 'user-interaction-{}active')".format(
"" if active else "in"
)
with marionette.using_context(marionette.CONTEXT_CHROME):
marionette.execute_script(script)
ping1 = self.wait_for_ping(
lambda: user_active(True, self.marionette),
FOG_BASELINE_PING,
ping_server=self.fog_ping_server,
)
ping2 = self.wait_for_ping(
lambda: user_active(False, self.marionette),
FOG_BASELINE_PING,
ping_server=self.fog_ping_server,
)
self.assertEqual("active", ping1["payload"]["ping_info"]["reason"])
self.assertEqual("inactive", ping2["payload"]["ping_info"]["reason"])