blob: 31d991f1d63a954c7e341c1f6e7d3e12ea0152a6 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use diagnostics_testing::{assert_data_tree, EnvWithDiagnostics, Launched, Severity};
use fuchsia_async as fasync;
use fuchsia_syslog as syslog;
use futures::prelude::*;
#[fasync::run_singlethreaded(test)]
async fn launch_example_and_read_hello_world() {
let mut test_env = EnvWithDiagnostics::new().await;
let url = "fuchsia-pkg://fuchsia.com/rust-logs-example-tests#meta/rust-logs-example.cmx";
let Launched { mut app, mut reader } = test_env.launch(url, None);
let status = app.wait().await.unwrap();
assert!(status.success());
let logs = test_env.listen_to_logs();
pin_utils::pin_mut!(logs);
let mut new_logs = reader.logs();
let (next, new_next) = (logs.next().await.unwrap(), new_logs.next().await.unwrap());
assert_eq!(next.severity, syslog::levels::DEBUG);
assert_eq!(next.tags, vec!["rust_logs_example"]);
assert_eq!(next.msg, "should print ");
assert_ne!(next.pid, 0);
assert_ne!(next.tid, 0);
assert_eq!(new_next.metadata.severity, Severity::Debug);
assert_eq!(new_next.metadata.component_url, url);
assert_eq!(new_next.moniker, "rust-logs-example.cmx");
assert_data_tree!(new_next.payload.unwrap(), root: contains {
"tag": "rust_logs_example",
"message": "should print ",
});
let (next, new_next) = (logs.next().await.unwrap(), new_logs.next().await.unwrap());
assert_eq!(next.severity, syslog::levels::INFO);
assert_eq!(next.tags, vec!["rust_logs_example"]);
assert_eq!(next.msg, "hello, world! foo=1 bar=\"baz\" ");
assert_ne!(next.pid, 0);
assert_ne!(next.tid, 0);
assert_eq!(new_next.metadata.severity, Severity::Info);
assert_eq!(new_next.metadata.component_url, url);
assert_eq!(new_next.moniker, "rust-logs-example.cmx");
assert_data_tree!(new_next.payload.unwrap(), root: contains {
"tag": "rust_logs_example",
// note that the frontend is still stringifying the structured fields, will tackle soon
"message": "hello, world! foo=1 bar=\"baz\" ",
});
let (next, new_next) = (logs.next().await.unwrap(), new_logs.next().await.unwrap());
assert_eq!(next.severity, syslog::levels::WARN);
assert_eq!(next.tags, vec!["rust_logs_example"]);
assert_eq!(next.msg, "warning: using old api");
assert_ne!(next.pid, 0);
assert_ne!(next.tid, 0);
assert_eq!(new_next.metadata.severity, Severity::Warn);
assert_eq!(new_next.metadata.component_url, url);
assert_eq!(new_next.moniker, "rust-logs-example.cmx");
assert_data_tree!(new_next.payload.unwrap(), root: contains {
"tag": "rust_logs_example",
"message": "warning: using old api",
});
}