diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /toolkit/components/glean/tests/xpcshell/test_GleanServerKnobs.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/glean/tests/xpcshell/test_GleanServerKnobs.js')
-rw-r--r-- | toolkit/components/glean/tests/xpcshell/test_GleanServerKnobs.js | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/toolkit/components/glean/tests/xpcshell/test_GleanServerKnobs.js b/toolkit/components/glean/tests/xpcshell/test_GleanServerKnobs.js new file mode 100644 index 0000000000..46d98aebfd --- /dev/null +++ b/toolkit/components/glean/tests/xpcshell/test_GleanServerKnobs.js @@ -0,0 +1,174 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +add_setup(function test_setup() { + // Give FOG a temp profile to init within. + do_get_profile(); + + // We need to initialize it once, otherwise operations will be stuck in + // the pre-init queue. + Services.fog.initializeFOG(); +}); + +add_task(function test_fog_metrics_disabled_remotely() { + // Set a cheesy string in the test metric. This should record because the + // metric has `disabled: false` by default. + const str1 = "a cheesy string!"; + Glean.testOnly.cheesyString.set(str1); + Assert.equal(str1, Glean.testOnly.cheesyString.testGetValue("test-ping")); + + // Create and set a feature configuration that disables the test metric. + const feature_config = { + "test_only.cheesy_string": false, + }; + Services.fog.setMetricsFeatureConfig(JSON.stringify(feature_config)); + + // Attempt to set another cheesy string in the test metric. This should not + // record because of the override to the metric's default value in the + // feature configuration. + const str2 = "another cheesy string!"; + Glean.testOnly.cheesyString.set(str2); + Assert.equal(str1, Glean.testOnly.cheesyString.testGetValue("test-ping")); + + // Clear the configuration so it doesn't interfere with other tests. + Services.fog.setMetricsFeatureConfig("{}"); +}); + +add_task(function test_fog_multiple_metrics_disabled_remotely() { + // Set some test metrics. This should record because the metrics are + // `disabled: false` by default. + const str1 = "yet another a cheesy string!"; + Glean.testOnly.cheesyString.set(str1); + Assert.equal(str1, Glean.testOnly.cheesyString.testGetValue("test-ping")); + const qty1 = 42; + Glean.testOnly.meaningOfLife.set(qty1); + Assert.equal(qty1, Glean.testOnly.meaningOfLife.testGetValue("test-ping")); + + // Create and set a feature configuration that disables multiple test + // metrics. + var feature_config = { + "test_only.cheesy_string": false, + "test_only.meaning_of_life": false, + }; + Services.fog.setMetricsFeatureConfig(JSON.stringify(feature_config)); + + // Attempt to set the metrics again. This should not record because of the + // override to the metrics' default value in the feature configuration. + const str2 = "another cheesy string v2!"; + Glean.testOnly.cheesyString.set(str2); + Assert.equal(str1, Glean.testOnly.cheesyString.testGetValue("test-ping")); + const qty2 = 52; + Glean.testOnly.meaningOfLife.set(qty2); + Assert.equal(qty1, Glean.testOnly.meaningOfLife.testGetValue("test-ping")); + + // Change the feature configuration to re-enable the `cheesy_string` metric. + feature_config = { + "test_only.cheesy_string": true, + "test_only.meaning_of_life": false, + }; + Services.fog.setMetricsFeatureConfig(JSON.stringify(feature_config)); + + // Attempt to set the metrics again. This should only record `cheesy_string` + // because of the most recent feature configuration. + const str3 = "another cheesy string v3!"; + Glean.testOnly.cheesyString.set(str3); + Assert.equal(str3, Glean.testOnly.cheesyString.testGetValue("test-ping")); + const qty3 = 62; + Glean.testOnly.meaningOfLife.set(qty3); + Assert.equal(qty1, Glean.testOnly.meaningOfLife.testGetValue("test-ping")); + + // Clear the configuration so it doesn't interfere with other tests. This + // is done by passing in an empty dictionary. + Services.fog.setMetricsFeatureConfig("{}"); + + // Set some final metrics. This should record in both metrics because they + // are both `disabled: false` by default. + const str4 = "another a cheesy string v4"; + Glean.testOnly.cheesyString.set(str4); + Assert.equal(str4, Glean.testOnly.cheesyString.testGetValue("test-ping")); + const qty4 = 72; + Glean.testOnly.meaningOfLife.set(qty4); + Assert.equal(qty4, Glean.testOnly.meaningOfLife.testGetValue("test-ping")); +}); + +add_task(function test_fog_metrics_feature_config_api_handles_null_values() { + // Set a cheesy string in the test metric. This should record because the + // metric has `disabled: false` by default. + const str1 = "a cheesy string!"; + Glean.testOnly.cheesyString.set(str1); + Assert.equal(str1, Glean.testOnly.cheesyString.testGetValue("test-ping")); + + // Create and set a feature configuration that disables the test metric. + const feature_config = { + "test_only.cheesy_string": false, + }; + Services.fog.setMetricsFeatureConfig(JSON.stringify(feature_config)); + + // Attempt to set another cheesy string in the test metric. This should not + // record because of the override to the metric's default value in the + // feature configuration. + const str2 = "another cheesy string v2"; + Glean.testOnly.cheesyString.set(str2); + Assert.equal(str1, Glean.testOnly.cheesyString.testGetValue("test-ping")); + + // Set the configuration to `null`. + Services.fog.setMetricsFeatureConfig(null); + + // Attempt to set another cheesy string in the test metric. This should now + // record because `null` should clear the configuration. + Glean.testOnly.cheesyString.set(str2); + Assert.equal(str2, Glean.testOnly.cheesyString.testGetValue("test-ping")); + + // Reset back to the feature configuration that disables the test metric. + Services.fog.setMetricsFeatureConfig(JSON.stringify(feature_config)); + + // Attempt to set another cheesy string in the test metric. This should not + // record because of the override to the metric's default value in the + // feature configuration. + Glean.testOnly.cheesyString.set(str1); + Assert.equal(str2, Glean.testOnly.cheesyString.testGetValue("test-ping")); + + // Set the configuration to `""` to replicate getting an empty string from + // Nimbus. + Services.fog.setMetricsFeatureConfig(""); + + // Attempt to set another cheesy string in the test metric. This should now + // record again because `""` should be clear the configuration. + const str3 = "another cheesy string v3"; + Glean.testOnly.cheesyString.set(str3); + Assert.equal(str3, Glean.testOnly.cheesyString.testGetValue("test-ping")); +}); + +add_task(function test_fog_metrics_disabled_reset_fog_behavior() { + // Set a cheesy string in the test metric. This should record because the + // metric has `disabled: false` by default. + const str1 = "a cheesy string!"; + Glean.testOnly.cheesyString.set(str1); + Assert.equal(str1, Glean.testOnly.cheesyString.testGetValue("test-ping")); + + // Create and set a feature configuration that disables the test metric. + const feature_config = { + "test_only.cheesy_string": false, + }; + Services.fog.setMetricsFeatureConfig(JSON.stringify(feature_config)); + + // Attempt to set another cheesy string in the test metric. This should not + // record because of the override to the metric's default value in the + // feature configuration. + const str2 = "another cheesy string!"; + Glean.testOnly.cheesyString.set(str2); + Assert.equal(str1, Glean.testOnly.cheesyString.testGetValue("test-ping")); + + // Now reset FOG to ensure that the feature configuration is also reset. + Services.fog.testResetFOG(); + + // Attempt to set the string again in the test metric. This should now + // record normally because we reset FOG. + Glean.testOnly.cheesyString.set(str2); + Assert.equal(str2, Glean.testOnly.cheesyString.testGetValue("test-ping")); + + // Clear the configuration so it doesn't interfere with other tests. + Services.fog.setMetricsFeatureConfig("{}"); +}); |