UUID
UUIDs are used to record values that uniquely identify some entity, such as a client id.
Configuration
You first need to add an entry for it to the metrics.yaml
file:
user:
client_id:
type: uuid
description: >
A unique identifier for the client's profile
lifetime: user
...
API
Now that the UUID is defined in metrics.yaml
, you can use the metric to record values in the application's code.
import org.mozilla.yourApplication.GleanMetrics.User
User.clientId.generateAndSet() // Generate a new UUID and record it
User.clientId.set(UUID.randomUUID()) // Set a UUID explicitly
There are test APIs available too.
import org.mozilla.yourApplication.GleanMetrics.User
// Was anything recorded?
assertTrue(User.clientId.testHasValue())
// Was it the expected value?
assertEquals(uuid, User.clientId.testGetValue())
import org.mozilla.yourApplication.GleanMetrics.User;
User.INSTANCE.clientId.generateAndSet(); // Generate a new UUID and record it
User.INSTANCE.clientId.set(UUID.randomUUID()); // Set a UUID explicitly
There are test APIs available too:
import org.mozilla.yourApplication.GleanMetrics.User;
// Was anything recorded?
assertTrue(User.INSTANCE.clientId.testHasValue());
// Was it the expected value?
assertEquals(uuid, User.INSTANCE.clientId.testGetValue());
User.clientId.generateAndSet() // Generate a new UUID and record it
User.clientId.set(UUID()) // Set a UUID explicitly
There are test APIs available too.
@testable import Glean
// Was anything recorded?
XCTAssert(User.clientId.testHasValue())
// Was it the expected value?
XCTAssertEqual(uuid, try User.clientId.testGetValue())
import uuid
from glean import load_metrics
metrics = load_metrics("metrics.yaml")
# Generate a new UUID and record it
metrics.user.client_id.generate_and_set()
# Set a UUID explicitly
metrics.user.client_id.set(uuid.uuid4())
There are test APIs available too.
# Was anything recorded?
assert metrics.user.client_id.test_has_value()
# Was it the expected value?
assert uuid == metrics.user.client_id.test_get_value()
using static Mozilla.YourApplication.GleanMetrics.User;
User.clientId.GenerateAndSet(); // Generate a new UUID and record it
User.clientId.Set(System.Guid.NewGuid()); // Set a UUID explicitly
There are test APIs available too:
using static Mozilla.YourApplication.GleanMetrics.User;
// Was anything recorded?
Assert.True(User.clientId.TestHasValue());
// Was it the expected value?
Assert.Equal(uuid, User.clientId.TestGetValue());
#![allow(unused)] fn main() { use glean_metrics; use uuid::Uuid; user::client_id.generate_and_set(); // Generate a new UUID and record it user::client_id.set(Uuid::new_v4()); // Set a UUID explicitly }
There are test APIs available too:
#![allow(unused)] fn main() { use glean_metrics; let u = Uuid::new_v4(); user::client_id.set(u); // Was anything recorded? assert!(user::client_id.test_get_value(None).is_some()); // Does it have the expected value? assert_eq!(u, user::client_id.test_get_value(None).unwrap()); }
Note: C++ APIs are only available in Firefox Desktop.
#include "mozilla/glean/GleanMetrics.h"
// Generate a new UUID and record it.
mozilla::glean::user::client_id.GenerateAndSet();
// Set a specific value.
nsCString kUuid("decafdec-afde-cafd-ecaf-decafdecafde");
mozilla::glean::user::client_id.Set(kUuid);
There are test APIs available too:
#include "mozilla/glean/GleanMetrics.h"
// Does it have an expected values?
ASSERT_STREQ(kUuid.get(), mozilla::glean::user::client_id.TestGetValue().value().get());
// Did it run across any errors?
// TODO: https://bugzilla.mozilla.org/show_bug.cgi?id=1683171
Note: JS APIs are currently only available in Firefox Desktop. General JavaScript support is coming soon via the Glean.js project.
// Generate a new UUID and record it.
Glean.user.clientId.generateAndSet();
// Set a specific value.
const uuid = "decafdec-afde-cafd-ecaf-decafdecafde";
Glean.user.clientId.set(uuid);
There are test APIs available too:
Assert.equal(Glean.user.clientId.testGetValue(), uuid);
// Did it run across any errors?
// TODO: https://bugzilla.mozilla.org/show_bug.cgi?id=1683171
Limits
- None.
Examples
- A unique identifier for the client.
Recorded errors
invalid_value
: if the value is set to a string that is not a UUID (only applies for dynamically-typed languages, such as Python).