Commit 398971c0 authored by Andrei-Laurențiu Olteanu's avatar Andrei-Laurențiu Olteanu Committed by Commit Bot

[Telemetry SWX] Test each event separately

Add function to dispatch an event from callback.

Add browser test for each lid event.

Bug: b:162051831
Change-Id: I09412b2be19c702a7fd47b5c069efab9c061b73e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2448490
Commit-Queue: Laurențiu Olteanu <lolteanu@google.com>
Reviewed-by: default avatarOleh Lamzin <lamzin@google.com>
Reviewed-by: default avatarMahmoud Gawad <mgawad@google.com>
Cr-Commit-Position: refs/heads/master@{#813735}
parent ee5f5bb7
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "base/base_paths.h" #include "base/base_paths.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/callback.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/location.h" #include "base/location.h"
#include "base/path_service.h" #include "base/path_service.h"
...@@ -292,8 +293,6 @@ void TelemetryExtensionUiBrowserTest::SetUpOnMainThread() { ...@@ -292,8 +293,6 @@ void TelemetryExtensionUiBrowserTest::SetUpOnMainThread() {
chromeos::cros_healthd::FakeCrosHealthdClient::Get() chromeos::cros_healthd::FakeCrosHealthdClient::Get()
->SetProbeTelemetryInfoResponseForTesting(telemetry_info); ->SetProbeTelemetryInfoResponseForTesting(telemetry_info);
ConfigureSystemEventsServiceToEmitEvents();
SandboxedWebUiAppTestBase::SetUpOnMainThread(); SandboxedWebUiAppTestBase::SetUpOnMainThread();
} }
...@@ -434,17 +433,27 @@ void TelemetryExtensionUiBrowserTest::ConfigureProbeServiceToReturnErrors() { ...@@ -434,17 +433,27 @@ void TelemetryExtensionUiBrowserTest::ConfigureProbeServiceToReturnErrors() {
->SetProbeTelemetryInfoResponseForTesting(telemetry_info); ->SetProbeTelemetryInfoResponseForTesting(telemetry_info);
} }
void TelemetryExtensionUiBrowserTest:: void TelemetryExtensionUiBrowserTest::EmitLidClosedEventPeriodically() {
ConfigureSystemEventsServiceToEmitEvents() { RunCallbackPeriodically(base::BindRepeating([] {
chromeos::cros_healthd::FakeCrosHealthdClient::Get() chromeos::cros_healthd::FakeCrosHealthdClient::Get()
->EmitLidClosedEventForTesting(); ->EmitLidClosedEventForTesting();
chromeos::cros_healthd::FakeCrosHealthdClient::Get() }));
->EmitLidOpenedEventForTesting(); }
void TelemetryExtensionUiBrowserTest::EmitLidOpenedEventPeriodically() {
RunCallbackPeriodically(base::BindRepeating([] {
chromeos::cros_healthd::FakeCrosHealthdClient::Get()
->EmitLidOpenedEventForTesting();
}));
}
void TelemetryExtensionUiBrowserTest::RunCallbackPeriodically(
const base::RepeatingClosure& callback) {
callback.Run();
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
FROM_HERE, FROM_HERE,
base::BindOnce(&TelemetryExtensionUiBrowserTest:: base::BindOnce(&TelemetryExtensionUiBrowserTest::RunCallbackPeriodically,
ConfigureSystemEventsServiceToEmitEvents, system_events_weak_ptr_factory_.GetWeakPtr(), callback),
system_events_weak_ptr_factory_.GetWeakPtr()),
base::TimeDelta::FromSeconds(1)); base::TimeDelta::FromSeconds(1));
} }
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#ifndef CHROMEOS_COMPONENTS_TELEMETRY_EXTENSION_UI_TEST_TELEMETRY_EXTENSION_UI_BROWSERTEST_H_ #ifndef CHROMEOS_COMPONENTS_TELEMETRY_EXTENSION_UI_TEST_TELEMETRY_EXTENSION_UI_BROWSERTEST_H_
#define CHROMEOS_COMPONENTS_TELEMETRY_EXTENSION_UI_TEST_TELEMETRY_EXTENSION_UI_BROWSERTEST_H_ #define CHROMEOS_COMPONENTS_TELEMETRY_EXTENSION_UI_TEST_TELEMETRY_EXTENSION_UI_BROWSERTEST_H_
#include "base/callback_forward.h"
#include "base/command_line.h" #include "base/command_line.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "chromeos/components/web_applications/test/sandboxed_web_ui_test_base.h" #include "chromeos/components/web_applications/test/sandboxed_web_ui_test_base.h"
...@@ -28,9 +29,12 @@ class TelemetryExtensionUiBrowserTest : public SandboxedWebUiAppTestBase { ...@@ -28,9 +29,12 @@ class TelemetryExtensionUiBrowserTest : public SandboxedWebUiAppTestBase {
void ConfigureProbeServiceToReturnErrors(); void ConfigureProbeServiceToReturnErrors();
void ConfigureSystemEventsServiceToEmitEvents(); void EmitLidClosedEventPeriodically();
void EmitLidOpenedEventPeriodically();
private: private:
void RunCallbackPeriodically(const base::RepeatingClosure& callback);
// Use to post and cancel tasks for emitting system events. // Use to post and cancel tasks for emitting system events.
base::WeakPtrFactory<TelemetryExtensionUiBrowserTest> base::WeakPtrFactory<TelemetryExtensionUiBrowserTest>
system_events_weak_ptr_factory_{this}; system_events_weak_ptr_factory_{this};
......
...@@ -371,6 +371,22 @@ var TelemetryExtensionUIWithProbeServiceErrorsBrowserTest = ...@@ -371,6 +371,22 @@ var TelemetryExtensionUIWithProbeServiceErrorsBrowserTest =
} }
} }
var TelemetryExtensionUIWithLidClosedEventBrowserTest =
class extends TelemetryExtensionUIBrowserTest {
/** @override */
testGenPreamble() {
GEN('EmitLidClosedEventPeriodically();');
}
}
var TelemetryExtensionUIWithLidOpenedEventBrowserTest =
class extends TelemetryExtensionUIBrowserTest {
/** @override */
testGenPreamble() {
GEN('EmitLidOpenedEventPeriodically();');
}
}
// Test cases injected into the untrusted context. // Test cases injected into the untrusted context.
// See implementations in untrusted_browsertest.js. // See implementations in untrusted_browsertest.js.
// //
...@@ -408,7 +424,6 @@ const untrustedTests = [ ...@@ -408,7 +424,6 @@ const untrustedTests = [
['UntrustedDiagnosticsRequestRunBatteryDischargeRoutine'], ['UntrustedDiagnosticsRequestRunBatteryDischargeRoutine'],
['UntrustedDiagnosticsRequestRunBatteryChargeRoutineInvalidInput'], ['UntrustedDiagnosticsRequestRunBatteryChargeRoutineInvalidInput'],
['UntrustedDiagnosticsRequestRunBatteryChargeRoutine'], ['UntrustedDiagnosticsRequestRunBatteryChargeRoutine'],
['UntrustedLidEventListener'],
['UntrustedRequestTelemetryInfoUnknownCategory'], ['UntrustedRequestTelemetryInfoUnknownCategory'],
['UntrustedRequestTelemetryInfo'], ['UntrustedRequestTelemetryInfo'],
[ [
...@@ -423,6 +438,14 @@ const untrustedTests = [ ...@@ -423,6 +438,14 @@ const untrustedTests = [
'UntrustedRequestTelemetryInfoWithErrors', 'UntrustedRequestTelemetryInfoWithErrors',
'TelemetryExtensionUIWithProbeServiceErrorsBrowserTest' 'TelemetryExtensionUIWithProbeServiceErrorsBrowserTest'
], ],
[
'UntrustedLidClosedEventListener',
'TelemetryExtensionUIWithLidClosedEventBrowserTest'
],
[
'UntrustedLidOpenedEventListener',
'TelemetryExtensionUIWithLidOpenedEventBrowserTest'
],
].forEach(test => registerUntrustedTest(...test)); ].forEach(test => registerUntrustedTest(...test));
/** /**
......
...@@ -441,16 +441,16 @@ UNTRUSTED_TEST( ...@@ -441,16 +441,16 @@ UNTRUSTED_TEST(
assertDeepEquals(response, {id: 123456789, status: 'ready'}); assertDeepEquals(response, {id: 123456789, status: 'ready'});
}); });
// Tests that addEventListener receives system lid events. // Tests that addEventListener receives system lid closed event.
UNTRUSTED_TEST('UntrustedLidEventListener', async () => { UNTRUSTED_TEST('UntrustedLidClosedEventListener', async () => {
await Promise.all([ await new Promise(
new Promise( (resolve) => chromeos.telemetry.addEventListener('lid-closed', resolve));
(resolve) => });
chromeos.telemetry.addEventListener('lid-closed', resolve)),
new Promise( // Tests that addEventListener receives system lid opened event.
(resolve) => UNTRUSTED_TEST('UntrustedLidOpenedEventListener', async () => {
chromeos.telemetry.addEventListener('lid-opened', resolve)), await new Promise(
]); (resolve) => chromeos.telemetry.addEventListener('lid-opened', resolve));
}); });
// Tests that TelemetryInfo throws an error if category is unknown. // Tests that TelemetryInfo throws an error if category is unknown.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment