summaryrefslogtreecommitdiffstats
path: root/third_party/rust/glean-core/examples
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/glean-core/examples')
-rw-r--r--third_party/rust/glean-core/examples/sample.rs77
1 files changed, 77 insertions, 0 deletions
diff --git a/third_party/rust/glean-core/examples/sample.rs b/third_party/rust/glean-core/examples/sample.rs
new file mode 100644
index 0000000000..7f292dde14
--- /dev/null
+++ b/third_party/rust/glean-core/examples/sample.rs
@@ -0,0 +1,77 @@
+use std::env;
+
+use glean_core::metrics::*;
+use glean_core::ping::PingMaker;
+use glean_core::{CommonMetricData, Glean};
+use tempfile::Builder;
+
+fn main() {
+ env_logger::init();
+
+ let mut args = env::args().skip(1);
+
+ let data_path = if let Some(path) = args.next() {
+ path
+ } else {
+ let root = Builder::new().prefix("simple-db").tempdir().unwrap();
+ root.path().display().to_string()
+ };
+
+ let cfg = glean_core::Configuration {
+ data_path,
+ application_id: "org.mozilla.glean_core.example".into(),
+ language_binding_name: "Rust".into(),
+ upload_enabled: true,
+ max_events: None,
+ delay_ping_lifetime_io: false,
+ };
+ let mut glean = Glean::new(cfg).unwrap();
+ glean.register_ping_type(&PingType::new("baseline", true, false, vec![]));
+ glean.register_ping_type(&PingType::new("metrics", true, false, vec![]));
+
+ let local_metric: StringMetric = StringMetric::new(CommonMetricData {
+ name: "local_metric".into(),
+ category: "local".into(),
+ send_in_pings: vec!["baseline".into()],
+ ..Default::default()
+ });
+
+ let call_counter: CounterMetric = CounterMetric::new(CommonMetricData {
+ name: "calls".into(),
+ category: "local".into(),
+ send_in_pings: vec!["baseline".into(), "metrics".into()],
+ ..Default::default()
+ });
+
+ local_metric.set(&glean, "I can set this");
+ call_counter.add(&glean, 1);
+
+ println!("Baseline Data:\n{}", glean.snapshot("baseline", true));
+
+ call_counter.add(&glean, 2);
+ println!("Metrics Data:\n{}", glean.snapshot("metrics", true));
+
+ call_counter.add(&glean, 3);
+
+ println!();
+ println!("Baseline Data 2:\n{}", glean.snapshot("baseline", false));
+ println!("Metrics Data 2:\n{}", glean.snapshot("metrics", true));
+
+ let list: StringListMetric = StringListMetric::new(CommonMetricData {
+ name: "list".into(),
+ category: "local".into(),
+ send_in_pings: vec!["baseline".into()],
+ ..Default::default()
+ });
+ list.add(&glean, "once");
+ list.add(&glean, "upon");
+
+ let ping_maker = PingMaker::new();
+ let ping = ping_maker
+ .collect_string(&glean, glean.get_ping_by_name("baseline").unwrap(), None)
+ .unwrap();
+ println!("Baseline Ping:\n{}", ping);
+
+ let ping = ping_maker.collect_string(&glean, glean.get_ping_by_name("metrics").unwrap(), None);
+ println!("Metrics Ping: {:?}", ping);
+}