in glean-core/ios/GleanTests/Metrics/EventMetricTests.swift [349:405]
func testEventListener() {
let event1 = EventMetricType<SomeExtras>(CommonMetricData(
category: "telemetry",
name: "test_event1",
sendInPings: ["events"],
lifetime: .ping,
disabled: false
), ["some_extra"])
let event2 = EventMetricType<SomeExtras>(CommonMetricData(
category: "telemetry",
name: "test_event2",
sendInPings: ["events"],
lifetime: .ping,
disabled: false
), ["some_extra"])
let event3 = EventMetricType<SomeExtras>(CommonMetricData(
category: "telemetry",
name: "test_event3",
sendInPings: ["events"],
lifetime: .ping,
disabled: false
), ["some_extra"])
Glean.shared.resetGlean(clearStores: false)
let listener = TestEventListener()
// Register the listener
Glean.shared.registerEventListener(tag: listener.listenerTag, listener: listener)
// Ensure events are being reported via the callback
event1.record(SomeExtras(someExtra: "uno"))
XCTAssertEqual(1, listener.count)
XCTAssertEqual("telemetry.test_event1", listener.lastSeenId)
event2.record(SomeExtras(someExtra: "dos"))
XCTAssertEqual(2, listener.count)
XCTAssertEqual("telemetry.test_event2", listener.lastSeenId)
event3.record(SomeExtras(someExtra: "tres"))
XCTAssertEqual(3, listener.count)
XCTAssertEqual("telemetry.test_event3", listener.lastSeenId)
// Unregister the listener
Glean.shared.unregisterEventListener(tag: listener.listenerTag)
// Ensure events are no longer reported via the callback
event1.record(SomeExtras(someExtra: "uno"))
XCTAssertEqual(3, listener.count)
XCTAssertEqual("telemetry.test_event3", listener.lastSeenId)
event2.record(SomeExtras(someExtra: "dos"))
XCTAssertEqual(3, listener.count)
XCTAssertEqual("telemetry.test_event3", listener.lastSeenId)
event3.record(SomeExtras(someExtra: "tres"))
XCTAssertEqual(3, listener.count)
XCTAssertEqual("telemetry.test_event3", listener.lastSeenId)
}