Skip to content

Commit abd0b49

Browse files
committed
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 <roypat@amazon.co.uk>
1 parent a12b56e commit abd0b49

File tree

9 files changed

+95
-160
lines changed

9 files changed

+95
-160
lines changed

src/log-instrument/Cargo.toml

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,23 @@ license = "Apache-2.0"
99
[lib]
1010
bench = false
1111

12-
[[bin]]
12+
[[example]]
1313
name = "one"
14-
bench = false
1514

16-
[[bin]]
15+
[[example]]
1716
name = "two"
18-
bench = false
1917

20-
[[bin]]
18+
[[example]]
2119
name = "three"
22-
bench = false
2320

24-
[[bin]]
21+
[[example]]
2522
name = "four"
26-
bench = false
2723

28-
[[bin]]
24+
[[example]]
2925
name = "five"
30-
bench = false
3126

32-
[[bin]]
27+
[[example]]
3328
name = "six"
34-
bench = false
3529

3630
[dependencies]
3731
env_logger = "0.10.0"

src/log-instrument/tests/integration_tests.rs

Lines changed: 0 additions & 148 deletions
This file was deleted.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
"""Checks that the output of instrumentation examples is correct"""
5+
import pytest
6+
7+
from framework import utils
8+
from host_tools.cargo_build import get_binary
9+
10+
EXPECTED_OUTPUTS = {
11+
"one": """[2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)>>one
12+
[2023-10-12T16:29:00Z DEBUG one] cmp: true
13+
[2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)<<one
14+
[2023-10-12T16:29:00Z INFO one] 4
15+
[2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)>>one
16+
[2023-10-12T16:29:00Z DEBUG one] cmp: false
17+
[2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)<<one
18+
[2023-10-12T16:29:00Z INFO one] 6
19+
[2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)>>one
20+
[2023-10-12T16:29:00Z DEBUG one] cmp: false
21+
[2023-10-12T16:29:00Z TRACE log_instrument] ThreadId(1)<<one
22+
[2023-10-12T16:29:00Z INFO one] 7""".splitlines(),
23+
"two": """[2023-10-12T16:29:30Z TRACE log_instrument] ThreadId(1)>>one
24+
[2023-10-12T16:29:30Z TRACE log_instrument] ThreadId(1)<<one
25+
[2023-10-12T16:29:30Z INFO two] None
26+
[2023-10-12T16:29:30Z TRACE log_instrument] ThreadId(1)>>one
27+
[2023-10-12T16:29:30Z DEBUG two] [\"a\", \"b\"]
28+
[2023-10-12T16:29:30Z TRACE log_instrument] ThreadId(1)<<one
29+
[2023-10-12T16:29:30Z INFO two] Some([\"a\", \"b\"])""".splitlines(),
30+
"three": """[2023-10-12T16:30:04Z TRACE log_instrument] ThreadId(1)>>one
31+
[2023-10-12T16:30:04Z TRACE log_instrument] ThreadId(1)<<one
32+
[2023-10-12T16:30:04Z INFO three] None
33+
[2023-10-12T16:30:04Z TRACE log_instrument] ThreadId(1)>>one
34+
[2023-10-12T16:30:04Z DEBUG three] [\"a\", \"b\"]
35+
[2023-10-12T16:30:04Z TRACE log_instrument] ThreadId(1)<<one
36+
[2023-10-12T16:30:04Z INFO three] Some([\"a\", \"b\"])""".splitlines(),
37+
"four": """[2023-10-12T16:30:37Z TRACE log_instrument] ThreadId(1)>>one
38+
[2023-10-12T16:30:37Z TRACE log_instrument] ThreadId(1)<<one
39+
[2023-10-12T16:30:37Z INFO four] None
40+
[2023-10-12T16:30:37Z TRACE log_instrument] ThreadId(1)>>one
41+
[2023-10-12T16:30:37Z DEBUG four] [\"a\", \"b\"]
42+
[2023-10-12T16:30:37Z TRACE log_instrument] ThreadId(1)<<one
43+
[2023-10-12T16:30:37Z INFO four] Some([\"a\", \"b\"])""".splitlines(),
44+
"five": """[2023-10-12T16:31:12Z TRACE log_instrument] ThreadId(1)>>one
45+
[2023-10-12T16:31:12Z TRACE log_instrument] ThreadId(1)<<one
46+
[2023-10-12T16:31:12Z INFO five] None
47+
[2023-10-12T16:31:12Z TRACE log_instrument] ThreadId(1)>>one
48+
[2023-10-12T16:31:12Z DEBUG five] [\"a\", \"b\"]
49+
[2023-10-12T16:31:12Z DEBUG five] 23
50+
[2023-10-12T16:31:12Z TRACE log_instrument] ThreadId(1)<<one
51+
[2023-10-12T16:31:12Z INFO five] Some([\"a\", \"b\"])""".splitlines(),
52+
"six": """[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)>>one
53+
[2023-10-12T16:31:54Z DEBUG six] cmp: true
54+
[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)<<one
55+
[2023-10-12T16:31:54Z INFO six] 4
56+
[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)>>one
57+
[2023-10-12T16:31:54Z DEBUG six] cmp: false
58+
[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one>>two
59+
[2023-10-12T16:31:54Z DEBUG six] res: 0
60+
[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one<<two
61+
[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)<<one
62+
[2023-10-12T16:31:54Z INFO six] 0
63+
[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)>>one
64+
[2023-10-12T16:31:54Z DEBUG six] cmp: false
65+
[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one>>two
66+
[2023-10-12T16:31:54Z DEBUG six] res: 1
67+
[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)::one<<two
68+
[2023-10-12T16:31:54Z TRACE log_instrument] ThreadId(1)<<one
69+
[2023-10-12T16:31:54Z INFO six] 1""".splitlines(),
70+
}
71+
72+
73+
@pytest.mark.parametrize(
74+
"example, expected_output", EXPECTED_OUTPUTS.items(), ids=EXPECTED_OUTPUTS
75+
)
76+
def test_instrumentation_example_output(example, expected_output):
77+
"""Test the output of instrumentation examples does not change"""
78+
example_binary = get_binary("log-instrument", example=example)
79+
80+
# Logging output goes to stderr
81+
_, stdout, stderr = utils.run_cmd(str(example_binary))
82+
83+
assert not stdout
84+
85+
lines = stderr.splitlines()
86+
assert len(lines) == len(expected_output)
87+
for line_number, line in enumerate(stderr.splitlines()):
88+
# Need to strip off timestamps
89+
assert line[20:] == expected_output[line_number][20:]

0 commit comments

Comments
 (0)