From 5e0a820cd548ee03cd5b7236be8310d82df811c9 Mon Sep 17 00:00:00 2001 From: Patrick Roy Date: Thu, 9 Nov 2023 08:59:56 +0000 Subject: [PATCH 1/3] Allow helper tools to be run via cargo run Previously, only the `firecracker` binary could be run via cargo run. Now, we can also do `cargo run --bin cpu-template-helper` for example. I am keeping the jailer excluded from the `default-members` list, as this seems to have been an intentional choice made in 3bf285c8f8a815149923c562dd7edaffcaf10c4e. Signed-off-by: Patrick Roy --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index a4b903e5734..8545502cea0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] members = ["src/clippy-tracing", "src/cpu-template-helper", "src/firecracker", "src/jailer", "src/log-instrument", "src/log-instrument-macros", "src/rebase-snap", "src/seccompiler", "src/snapshot-editor"] -default-members = ["src/firecracker"] +default-members = ["src/clippy-tracing", "src/cpu-template-helper", "src/firecracker", "src/rebase-snap", "src/seccompiler", "src/snapshot-editor"] resolver = "2" [profile.dev] From 0c0c01483150970ef43287edde1278afcc28f809 Mon Sep 17 00:00:00 2001 From: Patrick Roy Date: Thu, 9 Nov 2023 09:31:36 +0000 Subject: [PATCH 2/3] test: Allow get_binary to compile example from different package Previously, it could only compile examples from the main firecracker package. To compile examples from package "x", we need to pass `-p x`. Signed-off-by: Patrick Roy --- tests/host_tools/cargo_build.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/host_tools/cargo_build.py b/tests/host_tools/cargo_build.py index 3dd91feac94..db828abb011 100644 --- a/tests/host_tools/cargo_build.py +++ b/tests/host_tools/cargo_build.py @@ -66,15 +66,15 @@ def cargo_test(path, extra_args=""): @with_filelock -def get_binary(name, *, workspace_dir=FC_WORKSPACE_DIR, example=False): +def get_binary(name, *, workspace_dir=FC_WORKSPACE_DIR, example=None): """Build a binary""" target = DEFAULT_BUILD_TARGET target_dir = workspace_dir / "build" / "cargo_target" bin_path = target_dir / target / "release" / name cmd = f"-p {name}" if example: - bin_path = target_dir / target / "release" / "examples" / name - cmd = f"--example {name}" + bin_path = target_dir / target / "release" / "examples" / example + cmd += f" --example {example}" if not bin_path.exists(): env = {"RUSTFLAGS": get_rustflags()} cargo( @@ -99,9 +99,9 @@ def get_firecracker_binaries(*, workspace_dir=FC_WORKSPACE_DIR): ) -def get_example(name, *args, **kwargs): +def get_example(name, *args, package="firecracker", **kwargs): """Build an example binary""" - return get_binary(name, *args, **kwargs, example=True) + return get_binary(package, *args, **kwargs, example=name) @with_filelock From 371de0e22368c8e8219ec67127455fdfff3df635 Mon Sep 17 00:00:00 2001 From: Patrick Roy Date: Thu, 9 Nov 2023 09:35:49 +0000 Subject: [PATCH 3/3] Turn log-instrument binaries into examples This prevents them from being compiled if only `cargo build` is being run, where they really do not need to be compiled and only increase build time needlessly. Signed-off-by: Patrick Roy --- src/log-instrument/Cargo.toml | 18 +-- .../{src/bin => examples}/five.rs | 0 .../{src/bin => examples}/four.rs | 0 .../{src/bin => examples}/one.rs | 0 .../{src/bin => examples}/six.rs | 0 .../{src/bin => examples}/three.rs | 0 .../{src/bin => examples}/two.rs | 0 src/log-instrument/tests/integration_tests.rs | 148 ------------------ .../functional/test_log_instrument.py | 89 +++++++++++ 9 files changed, 95 insertions(+), 160 deletions(-) rename src/log-instrument/{src/bin => examples}/five.rs (100%) rename src/log-instrument/{src/bin => examples}/four.rs (100%) rename src/log-instrument/{src/bin => examples}/one.rs (100%) rename src/log-instrument/{src/bin => examples}/six.rs (100%) rename src/log-instrument/{src/bin => examples}/three.rs (100%) rename src/log-instrument/{src/bin => examples}/two.rs (100%) delete mode 100644 src/log-instrument/tests/integration_tests.rs create mode 100644 tests/integration_tests/functional/test_log_instrument.py diff --git a/src/log-instrument/Cargo.toml b/src/log-instrument/Cargo.toml index 8536d7c383b..db50d1e1eb9 100644 --- a/src/log-instrument/Cargo.toml +++ b/src/log-instrument/Cargo.toml @@ -9,29 +9,23 @@ license = "Apache-2.0" [lib] bench = false -[[bin]] +[[example]] name = "one" -bench = false -[[bin]] +[[example]] name = "two" -bench = false -[[bin]] +[[example]] name = "three" -bench = false -[[bin]] +[[example]] name = "four" -bench = false -[[bin]] +[[example]] name = "five" -bench = false -[[bin]] +[[example]] name = "six" -bench = false [dependencies] env_logger = "0.10.0" diff --git a/src/log-instrument/src/bin/five.rs b/src/log-instrument/examples/five.rs similarity index 100% rename from src/log-instrument/src/bin/five.rs rename to src/log-instrument/examples/five.rs diff --git a/src/log-instrument/src/bin/four.rs b/src/log-instrument/examples/four.rs similarity index 100% rename from src/log-instrument/src/bin/four.rs rename to src/log-instrument/examples/four.rs diff --git a/src/log-instrument/src/bin/one.rs b/src/log-instrument/examples/one.rs similarity index 100% rename from src/log-instrument/src/bin/one.rs rename to src/log-instrument/examples/one.rs diff --git a/src/log-instrument/src/bin/six.rs b/src/log-instrument/examples/six.rs similarity index 100% rename from src/log-instrument/src/bin/six.rs rename to src/log-instrument/examples/six.rs diff --git a/src/log-instrument/src/bin/three.rs b/src/log-instrument/examples/three.rs similarity index 100% rename from src/log-instrument/src/bin/three.rs rename to src/log-instrument/examples/three.rs diff --git a/src/log-instrument/src/bin/two.rs b/src/log-instrument/examples/two.rs similarity index 100% rename from src/log-instrument/src/bin/two.rs rename to src/log-instrument/examples/two.rs diff --git a/src/log-instrument/tests/integration_tests.rs b/src/log-instrument/tests/integration_tests.rs deleted file mode 100644 index d944232c45d..00000000000 --- a/src/log-instrument/tests/integration_tests.rs +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -const ONE: &str = env!("CARGO_BIN_EXE_one"); -const TWO: &str = env!("CARGO_BIN_EXE_two"); -const THREE: &str = env!("CARGO_BIN_EXE_three"); -const FOUR: &str = env!("CARGO_BIN_EXE_four"); -const FIVE: &str = env!("CARGO_BIN_EXE_five"); -const SIX: &str = env!("CARGO_BIN_EXE_six"); - -const TIMESTAMP_RANGE: std::ops::Range = 1..20; - -/// Match stderr to expected skipping bytes containing the timestamp. -fn check(actual: &[u8], expected: &[u8]) { - assert_eq!(actual.len(), expected.len()); - let mut j = 0; - for i in 0..actual.len() { - if actual[i] == b'\n' { - j = 0; - } - if TIMESTAMP_RANGE.contains(&j) { - continue; - } - assert_eq!(actual[i], expected[i]); - j += 1; - } -} - -#[test] -fn one() { - let output = std::process::Command::new(ONE).output().unwrap(); - assert!(output.status.success()); - assert_eq!(output.stdout, b""); - let expected_stderr = b"\ - [2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)>>one\n\ - [2023-10-12T16:29:00Z DEBUG one] cmp: true\n\ - [2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:29:00Z DEBUG one] cmp: false\n\ - [2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:29:00Z DEBUG one] cmp: false\n\ - [2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:29:30Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:29:30Z DEBUG two] [\"a\", \"b\"]\n\ - [2023-10-12T16:29:30Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:30:04Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:30:04Z DEBUG three] [\"a\", \"b\"]\n\ - [2023-10-12T16:30:04Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:30:37Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:30:37Z DEBUG four] [\"a\", \"b\"]\n\ - [2023-10-12T16:30:37Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:31:12Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:31:12Z DEBUG five] [\"a\", \"b\"]\n\ - [2023-10-12T16:31:12Z DEBUG five] 23\n\ - [2023-10-12T16:31:12Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:31:54Z DEBUG six] cmp: true\n\ - [2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)<>one\n\ - [2023-10-12T16:31:54Z DEBUG six] cmp: false\n\ - [2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one>>two\n\ - [2023-10-12T16:31:54Z DEBUG six] res: 0\n\ - [2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one<>one\n\ - [2023-10-12T16:31:54Z DEBUG six] cmp: false\n\ - [2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one>>two\n\ - [2023-10-12T16:31:54Z DEBUG six] res: 1\n\ - [2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one<>one +[2023-10-12T16:29:00Z DEBUG one] cmp: true +[2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:29:00Z DEBUG one] cmp: false +[2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:29:00Z DEBUG one] cmp: false +[2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:29:30Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:29:30Z DEBUG two] [\"a\", \"b\"] +[2023-10-12T16:29:30Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:30:04Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:30:04Z DEBUG three] [\"a\", \"b\"] +[2023-10-12T16:30:04Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:30:37Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:30:37Z DEBUG four] [\"a\", \"b\"] +[2023-10-12T16:30:37Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:31:12Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:31:12Z DEBUG five] [\"a\", \"b\"] +[2023-10-12T16:31:12Z DEBUG five] 23 +[2023-10-12T16:31:12Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:31:54Z DEBUG six] cmp: true +[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)<>one +[2023-10-12T16:31:54Z DEBUG six] cmp: false +[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one>>two +[2023-10-12T16:31:54Z DEBUG six] res: 0 +[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one<>one +[2023-10-12T16:31:54Z DEBUG six] cmp: false +[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one>>two +[2023-10-12T16:31:54Z DEBUG six] res: 1 +[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one<