From 72f78badc31a94c042d457072196c851d73c87f5 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 16:15:46 +1100 Subject: [PATCH 01/36] Doc: Describe pipeline and test execution Signed-off-by: Mark Van de Vyver --- minitrace-macro/README.md | 38 ++++++++++++++++++++++++++++++- minitrace-macro/img/pipeline.png | Bin 0 -> 20401 bytes 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 minitrace-macro/img/pipeline.png diff --git a/minitrace-macro/README.md b/minitrace-macro/README.md index 953fe69a..e6da8dc3 100644 --- a/minitrace-macro/README.md +++ b/minitrace-macro/README.md @@ -70,7 +70,7 @@ async fn qux() { // } ``` -### ⚠️ Local Parent Needed +### ⚠️ Local Parent Needed A function instrumented by `trace` always require a local parent in the context. Make sure that the caller is within the scope of `Span::set_local_parent()`. @@ -103,3 +103,39 @@ let (root, collector) = Span::root("root"); runtime::spawn(bar()); // This `bar` will be traced. } ``` + +## Developers + +This Crate adopts the [Ferrous Systems](https://ferrous-systems.com/blog/testing-proc-macros/) +proc-macro pipeline: + + + +![image info](./img/pipeline.png) + +### Tests + +To see a list of all tests: + +```bash +pushd minitest-macro + cargo test -- --list +popd +``` + +To run an individual test suite, say the `ui` suite: + +```bash +cargo test ui -- --nocapture +``` diff --git a/minitrace-macro/img/pipeline.png b/minitrace-macro/img/pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc0ad569c5f058a3ba6e420689d466e877f24c1 GIT binary patch literal 20401 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⋼n-{gi(97SDuxZQ*xn_Rw#DE1K3Qi;iX&J$#B{U3p8hPUy zJm(Gtn1qA#yE8_jI?&GB(IMfawa{d|yn9S)rGl()bqs268SH85Lu3Gh4mT^5RnhF) z0Sn8s)r(BGz|uL(pH0Zgg1eW^%S^>GM&H`{a&P8N4oC~euJe98R9U$|XHHm=d-C2! zP*e;_=I@X!iHf_g%y|(dyR2j_@Ta^o)6Q7Uy3x4Q< z$=-YVih*ENJV<0s~T^cq39{kpO=K&5=;gnJ7J=T zUIx-xhDslDkt5utfLxCsR)V$*J*?WDXVLL>yY;$9 zr8i#rDht(WDJBmM4d9pO3ldF3QnhF8Q25NRyiOEZDJi3x!xiJ}IJ=*(noNiMXuLP7 z3Y>_h``i&DIY;jh+m9D2=tuPKwmTAd-o%lFy|26y=8~n~36|a#-bdEXuV0TJNZD-ursT*YZMg z5K5Ok=d66wq3H31e|*9@x7r$>#PrmSQCh z{1s{F8K8(R;@>D|TJ${~G9l8>et`hce-?gm6BFsO!6$~k$1t1QG zSM+F9p^X0msR$06zKq) zuq9vg96^teE>hj#A^C(EP#<^ryRX+|tlyv8$263GB8^#%kmpl`&+Tyqko9tGu%cAc zc>P0gFkw~?lXksmyIas^A2ISzR11xhovXdHu6u%`xu@X#b^;U`Ee~A6oZ@trToG$# zz*7(am9>rc=VY(bmTr|CzHlit9I~YxunBN?{;Jm=Nydmc*?eg?ybi4^+99_xzKcv1`=5f_pkeg}Y$HDtb~9$>fg#yIt4O4U42y{D@?r-ki-_x=v!+?0x=zy= zw?8lJek?BRJstNmkN?)JZZt`R2>^$jqUA~4zxpxr0|?yZ-Kbk98sc0IgMx;LR2@>^ zVH`gfg@k5a(6?zgfS8%#jgeSQsc4o@R?KD&K5Q|JQeokI*%mOoaS#Rv>Q?4qK&i4%pA@- zR(7LVfa`^0^aE~YwG>nDaxDLb4(<2)3(%EBS&Bv0$xETiI$*Rh4EMYkr-6qZqK(K(0B-lIVt)@ec*y ztsYDy5)j(}=ACzMn4e+u=w1Z(pdK1RBIn76Z*Vn&N|E?7*$pDIogFkuA1ow+_0wXGC+kq<2O@08&yI$aO^etejJ*ZZbX7pd9QHq{^WIkadQcVG8wa!ZhZo*l(DjZJ33Z` zH2x@N(&tTXJUP{`yXfqZK4&s2iN5>#+LkoT&^TlYuCjX70_@Myy z=W!_LCqL{STEFc%uGJV!6X5d0fCU<%LN*{i6fiuD4-#`?#`TjUd54_bOB7H={Vo2w zQBKa^2=;q_RrN69Ejp*_<3wzEIc@Z2$i1mI>DHjZhYi`@sE1asAt-_Ni^mNd1W#r* zrsCu!F3@8(T-dHhMqMe_yI44Z^x*g^3q=d2FS zY%O*z9whd00)e#a$38*8LFSIZh}{Tnb)1sQUw{r~_USGh^8NsNt0hl&wzoZg$v&~9 z8rfgZ*9ts+F{wDOxb-OhYjR0xyL{Pnma-myM@V9r0u2NGX+~g9wX!+JA)x5z?zxZ! zk_5aYb2O4Uaz98J3&RzLN1v#gEDs)^1QbEG0;Q<775b-08vRxfEl4y4BVVn<%_h|x zE*nrCQy$qy(k4rxf{eVjAzFZO02!ed_=8tV@Oq;z#LSrWiX^-X12WWB^1VNoH{f@> z<{gI5#5-APZp*WVlcm?E{9b~2p0qcirMgl9a5SvC<6&+rOtX<8RSTZ?*N5T@d?Pp! z3olitoWSQO6LStfQAs38tZH$Q1w!MS7108m+WWW2)@+P?r)K$6*LSUO%wW<7Mn@6z z5_{C^To_x;fR~WNC;QbVDdHZ0&763qx7bntg^y=YZN2$X7VDx(^gAEi%(GM~eq&xmmHvPiy z)<|RU-vkj}gQY)K3m64FRy^rk{0UVz`i6g&ZUiU~H9ftB~pq3!;i11_seAc$fnq!3yPNy=S6qUH7jFW0T&Fz!`rgi zO2k=3?<+�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 literal 0 HcmV?d00001 From 999c9b15a734540687b697860d1b1be07be37893 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 16:18:13 +1100 Subject: [PATCH 02/36] Add: Cargo configuration for UI test suite Signed-off-by: Mark Van de Vyver --- .gitignore | 1 + minitrace-macro/Cargo.toml | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/.gitignore b/.gitignore index 9c1a0633..6d9c405a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /target +/wip .idea Cargo.lock diff --git a/minitrace-macro/Cargo.toml b/minitrace-macro/Cargo.toml index 446938ff..c9cf4a6b 100644 --- a/minitrace-macro/Cargo.toml +++ b/minitrace-macro/Cargo.toml @@ -20,3 +20,10 @@ syn = { version = "1.0.84", features = ["full", "parsing", "extra-traits", "proc quote = "1" proc-macro2 = "1" proc-macro-error = "1" + +[dev-dependencies] +trybuild = "1" +minitrace = "0.4.0" + +[patch.crates-io] +minitrace = { path = "../" } \ No newline at end of file From 6155c9b8cd08d12d433a800209861d2c917ed640 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 16:27:59 +1100 Subject: [PATCH 03/36] Add: Legacy UI test parameter inputs - case 1 This test reflects the current state of play. Migrating to the pipeline set out in issue #113 will enable this to be replaced by the more informative text and error location: error: this attribute takes one argument = help: use --> tests/ui/has-arguments.rs:3:1 | 3 | #[trace(a, b)] | ^^^^^^^^^^^^^^^^^^^^ | = note: this error originates in the attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui.rs | 6 ++++++ minitrace-macro/tests/ui/err/has-arguments.rs | 6 ++++++ minitrace-macro/tests/ui/err/has-arguments.stderr | 5 +++++ 3 files changed, 17 insertions(+) create mode 100644 minitrace-macro/tests/ui.rs create mode 100644 minitrace-macro/tests/ui/err/has-arguments.rs create mode 100644 minitrace-macro/tests/ui/err/has-arguments.stderr diff --git a/minitrace-macro/tests/ui.rs b/minitrace-macro/tests/ui.rs new file mode 100644 index 00000000..17a5a7f4 --- /dev/null +++ b/minitrace-macro/tests/ui.rs @@ -0,0 +1,6 @@ +#[test] +fn ui() { + let t = trybuild::TestCases::new(); + t.compile_fail("tests/ui/err/*.rs"); + // t.pass("tests/ui/ok/*.rs"); +} diff --git a/minitrace-macro/tests/ui/err/has-arguments.rs b/minitrace-macro/tests/ui/err/has-arguments.rs new file mode 100644 index 00000000..38f2068a --- /dev/null +++ b/minitrace-macro/tests/ui/err/has-arguments.rs @@ -0,0 +1,6 @@ +use minitrace::trace; + +#[trace(a, b)] +fn f() {} + +fn main() {} diff --git a/minitrace-macro/tests/ui/err/has-arguments.stderr b/minitrace-macro/tests/ui/err/has-arguments.stderr new file mode 100644 index 00000000..234fe9a1 --- /dev/null +++ b/minitrace-macro/tests/ui/err/has-arguments.stderr @@ -0,0 +1,5 @@ +error: expected string literal + --> tests/ui/err/has-arguments.rs:3:9 + | +3 | #[trace(a, b)] + | ^ From 9426936dc02bc9a378d8329e21ba3d442528801b Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 17:11:04 +1100 Subject: [PATCH 04/36] Add: Legacy UI test parameter inputs - case 2 Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/err/has-expr-argument.rs | 6 ++++++ minitrace-macro/tests/ui/err/has-expr-argument.stderr | 5 +++++ 2 files changed, 11 insertions(+) create mode 100644 minitrace-macro/tests/ui/err/has-expr-argument.rs create mode 100644 minitrace-macro/tests/ui/err/has-expr-argument.stderr diff --git a/minitrace-macro/tests/ui/err/has-expr-argument.rs b/minitrace-macro/tests/ui/err/has-expr-argument.rs new file mode 100644 index 00000000..2d51d2c6 --- /dev/null +++ b/minitrace-macro/tests/ui/err/has-expr-argument.rs @@ -0,0 +1,6 @@ +use minitrace::trace; + +#[trace(true)] +fn f() {} + +fn main() {} diff --git a/minitrace-macro/tests/ui/err/has-expr-argument.stderr b/minitrace-macro/tests/ui/err/has-expr-argument.stderr new file mode 100644 index 00000000..ebdf3f52 --- /dev/null +++ b/minitrace-macro/tests/ui/err/has-expr-argument.stderr @@ -0,0 +1,5 @@ +error: expected string literal + --> tests/ui/err/has-expr-argument.rs:3:9 + | +3 | #[trace(true)] + | ^^^^ From ace23b27df4d1fe087c73d8171c96e7377f8df48 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 17:15:36 +1100 Subject: [PATCH 05/36] Add: Legacy UI test parameter inputs - case 3 Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/err/has-no-arguments.rs | 10 ++++++++++ minitrace-macro/tests/ui/err/has-no-arguments.stderr | 7 +++++++ 2 files changed, 17 insertions(+) create mode 100644 minitrace-macro/tests/ui/err/has-no-arguments.rs create mode 100644 minitrace-macro/tests/ui/err/has-no-arguments.stderr diff --git a/minitrace-macro/tests/ui/err/has-no-arguments.rs b/minitrace-macro/tests/ui/err/has-no-arguments.rs new file mode 100644 index 00000000..a801bd08 --- /dev/null +++ b/minitrace-macro/tests/ui/err/has-no-arguments.rs @@ -0,0 +1,10 @@ +use minitrace::trace; + +// This Tracing crate like-syntax +#[allow(unused_braces)] +#[trace] +fn f(a: u32) -> u32 { + a +} + +fn main() {} diff --git a/minitrace-macro/tests/ui/err/has-no-arguments.stderr b/minitrace-macro/tests/ui/err/has-no-arguments.stderr new file mode 100644 index 00000000..b2186e50 --- /dev/null +++ b/minitrace-macro/tests/ui/err/has-no-arguments.stderr @@ -0,0 +1,7 @@ +error: expected at least one string literal + --> tests/ui/err/has-no-arguments.rs:4:1 + | +4 | #[trace] + | ^^^^^^^^ + | + = note: this error originates in the attribute macro `trace` (in Nightly builds, run with -Z macro-backtrace for more info) From 1f80f27448c033d4c8da642fd2549398b765d789 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 17:18:02 +1100 Subject: [PATCH 06/36] Add: Legacy UI test parameter inputs - case 4 Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/err/item-is-not-a-function.rs | 6 ++++++ minitrace-macro/tests/ui/err/item-is-not-a-function.stderr | 5 +++++ 2 files changed, 11 insertions(+) create mode 100644 minitrace-macro/tests/ui/err/item-is-not-a-function.rs create mode 100644 minitrace-macro/tests/ui/err/item-is-not-a-function.stderr diff --git a/minitrace-macro/tests/ui/err/item-is-not-a-function.rs b/minitrace-macro/tests/ui/err/item-is-not-a-function.rs new file mode 100644 index 00000000..927c16bb --- /dev/null +++ b/minitrace-macro/tests/ui/err/item-is-not-a-function.rs @@ -0,0 +1,6 @@ +use minitrace::trace; + +#[trace("test-span")] +struct S; + +fn main() {} diff --git a/minitrace-macro/tests/ui/err/item-is-not-a-function.stderr b/minitrace-macro/tests/ui/err/item-is-not-a-function.stderr new file mode 100644 index 00000000..226dd70b --- /dev/null +++ b/minitrace-macro/tests/ui/err/item-is-not-a-function.stderr @@ -0,0 +1,5 @@ +error: expected `fn` + --> tests/ui/err/item-is-not-a-function.rs:4:1 + | +4 | struct S; + | ^^^^^^ From f12d82d82d837aafdb583dfebfc2406f1b137c85 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 17:20:10 +1100 Subject: [PATCH 07/36] Evolve: Legacy UI test parameter inputs Signed-off-by: Mark Van de Vyver --- .../tests/ui/err/{has-arguments.rs => has-too-many-arguments.rs} | 0 .../err/{has-arguments.stderr => has-too-many-arguments.stderr} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename minitrace-macro/tests/ui/err/{has-arguments.rs => has-too-many-arguments.rs} (100%) rename minitrace-macro/tests/ui/err/{has-arguments.stderr => has-too-many-arguments.stderr} (100%) diff --git a/minitrace-macro/tests/ui/err/has-arguments.rs b/minitrace-macro/tests/ui/err/has-too-many-arguments.rs similarity index 100% rename from minitrace-macro/tests/ui/err/has-arguments.rs rename to minitrace-macro/tests/ui/err/has-too-many-arguments.rs diff --git a/minitrace-macro/tests/ui/err/has-arguments.stderr b/minitrace-macro/tests/ui/err/has-too-many-arguments.stderr similarity index 100% rename from minitrace-macro/tests/ui/err/has-arguments.stderr rename to minitrace-macro/tests/ui/err/has-too-many-arguments.stderr From 56020e66401d2cd9bb7f31fbb96a7d438072ee15 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 17:28:14 +1100 Subject: [PATCH 08/36] Fix: Legacy UI test parameter input result Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/err/has-no-arguments.stderr | 4 ++-- minitrace-macro/tests/ui/err/has-too-many-arguments.stderr | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/minitrace-macro/tests/ui/err/has-no-arguments.stderr b/minitrace-macro/tests/ui/err/has-no-arguments.stderr index b2186e50..20f75cf6 100644 --- a/minitrace-macro/tests/ui/err/has-no-arguments.stderr +++ b/minitrace-macro/tests/ui/err/has-no-arguments.stderr @@ -1,7 +1,7 @@ error: expected at least one string literal - --> tests/ui/err/has-no-arguments.rs:4:1 + --> tests/ui/err/has-no-arguments.rs:5:1 | -4 | #[trace] +5 | #[trace] | ^^^^^^^^ | = note: this error originates in the attribute macro `trace` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/minitrace-macro/tests/ui/err/has-too-many-arguments.stderr b/minitrace-macro/tests/ui/err/has-too-many-arguments.stderr index 234fe9a1..c3a7cd1a 100644 --- a/minitrace-macro/tests/ui/err/has-too-many-arguments.stderr +++ b/minitrace-macro/tests/ui/err/has-too-many-arguments.stderr @@ -1,5 +1,5 @@ error: expected string literal - --> tests/ui/err/has-arguments.rs:3:9 + --> tests/ui/err/has-too-many-arguments.rs:3:9 | 3 | #[trace(a, b)] | ^ From d04cfd0288f4ceabd629ec6fdb365c0d08329618 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 17:28:42 +1100 Subject: [PATCH 09/36] Add: Legacy UI test parameter inputs - case 5 Signed-off-by: Mark Van de Vyver --- .../tests/ui/err/name-is-not-an-assignment-expression.rs | 6 ++++++ .../ui/err/name-is-not-an-assignment-expression.stderr | 5 +++++ 2 files changed, 11 insertions(+) create mode 100644 minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.rs create mode 100644 minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.stderr diff --git a/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.rs b/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.rs new file mode 100644 index 00000000..71335f96 --- /dev/null +++ b/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.rs @@ -0,0 +1,6 @@ +use minitrace::trace; + +#[trace(b)] +fn f() {} + +fn main() {} diff --git a/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.stderr b/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.stderr new file mode 100644 index 00000000..f58ba099 --- /dev/null +++ b/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.stderr @@ -0,0 +1,5 @@ +error: expected string literal + --> tests/ui/err/name-is-not-an-assignment-expression.rs:3:9 + | +3 | #[trace(b)] + | ^ From 11c0b78b94fadd8a7b8e7a6c7eeef9211b5bf899 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 17:36:09 +1100 Subject: [PATCH 10/36] Add: Legacy UI test parameter inputs - case 6 Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/err/trace-interleaved.rs | 8 ++++++++ minitrace-macro/tests/ui/err/trace-interleaved.stderr | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 minitrace-macro/tests/ui/err/trace-interleaved.rs create mode 100644 minitrace-macro/tests/ui/err/trace-interleaved.stderr diff --git a/minitrace-macro/tests/ui/err/trace-interleaved.rs b/minitrace-macro/tests/ui/err/trace-interleaved.rs new file mode 100644 index 00000000..b26d8985 --- /dev/null +++ b/minitrace-macro/tests/ui/err/trace-interleaved.rs @@ -0,0 +1,8 @@ +use minitrace::trace; + +#[allow(unused_braces)] +#[trace(struct)] +#[warn(unused_braces)] +fn f() {} + +fn main() {} diff --git a/minitrace-macro/tests/ui/err/trace-interleaved.stderr b/minitrace-macro/tests/ui/err/trace-interleaved.stderr new file mode 100644 index 00000000..587f1c2c --- /dev/null +++ b/minitrace-macro/tests/ui/err/trace-interleaved.stderr @@ -0,0 +1,5 @@ +error: expected string literal + --> tests/ui/err/trace-interleaved.rs:4:9 + | +4 | #[trace(struct)] + | ^^^^^^ From 1b2b8442d46370c9115c0cb5475b970e5b5cde8d Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 18:24:33 +1100 Subject: [PATCH 11/36] Add: Legacy UI test parameter inputs - case 7 Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui.rs | 2 +- minitrace-macro/tests/ui/ok/has-name.rs | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 minitrace-macro/tests/ui/ok/has-name.rs diff --git a/minitrace-macro/tests/ui.rs b/minitrace-macro/tests/ui.rs index 17a5a7f4..83daf78c 100644 --- a/minitrace-macro/tests/ui.rs +++ b/minitrace-macro/tests/ui.rs @@ -2,5 +2,5 @@ fn ui() { let t = trybuild::TestCases::new(); t.compile_fail("tests/ui/err/*.rs"); - // t.pass("tests/ui/ok/*.rs"); + t.pass("tests/ui/ok/*.rs"); } diff --git a/minitrace-macro/tests/ui/ok/has-name.rs b/minitrace-macro/tests/ui/ok/has-name.rs new file mode 100644 index 00000000..9c4a8e5e --- /dev/null +++ b/minitrace-macro/tests/ui/ok/has-name.rs @@ -0,0 +1,8 @@ +use minitrace::trace; + +// This Tracing crate like-syntax +#[allow(unused_braces)] +#[trace["test-span"]] +fn f(a: u32) -> u32 { a } + +fn main() {} From e195264e71ef3320ee170f9ef704928843ea0751 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 18:24:53 +1100 Subject: [PATCH 12/36] Add: Legacy UI test parameter inputs - case 8 Signed-off-by: Mark Van de Vyver --- minitrace-macro/Cargo.toml | 1 + minitrace-macro/tests/ui/ok/has-name-async.rs | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 minitrace-macro/tests/ui/ok/has-name-async.rs diff --git a/minitrace-macro/Cargo.toml b/minitrace-macro/Cargo.toml index c9cf4a6b..b80174c7 100644 --- a/minitrace-macro/Cargo.toml +++ b/minitrace-macro/Cargo.toml @@ -24,6 +24,7 @@ proc-macro-error = "1" [dev-dependencies] trybuild = "1" minitrace = "0.4.0" +tokio = { version = "1", features = ["full"] } [patch.crates-io] minitrace = { path = "../" } \ No newline at end of file diff --git a/minitrace-macro/tests/ui/ok/has-name-async.rs b/minitrace-macro/tests/ui/ok/has-name-async.rs new file mode 100644 index 00000000..988876d3 --- /dev/null +++ b/minitrace-macro/tests/ui/ok/has-name-async.rs @@ -0,0 +1,11 @@ +use minitrace::trace; + +// This Tracing crate like-syntax +#[allow(unused_braces)] +#[trace["test-span"]] +async fn f(a: u32) -> u32 { a } + +#[tokio::main] +async fn main() { + f(1).await; +} From bb48292445052299a4420b6b903e1ff9a553824d Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Mon, 21 Mar 2022 12:32:14 +1100 Subject: [PATCH 13/36] Add: Trace macro tests Signed-off-by: Mark Van de Vyver --- .github/workflows/coverage.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 010719a6..e506fb64 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -2,9 +2,9 @@ name: Code Coverage on: push: - branches: [ master ] + branches: [master] pull_request: - branches: [ master ] + branches: [master] jobs: lint: @@ -17,11 +17,11 @@ jobs: override: true - name: Run env: - CARGO_INCREMENTAL: '0' - RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests' - RUSTDOCFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests' + CARGO_INCREMENTAL: "0" + RUSTFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests" + RUSTDOCFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests" run: | - cargo test --workspace --exclude minitrace-macro --all-features --no-fail-fast + cargo test --workspace --all-features --no-fail-fast cargo run --example synchronous cargo run --example asynchronous cargo run --example get_started From a6d28a94b340513a97265a5d34868063df64d6b4 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Mon, 21 Mar 2022 21:25:26 +1100 Subject: [PATCH 14/36] Add: Legacy UI test parameter inputs - case 9 Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/ok/has-name-async-mut.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 minitrace-macro/tests/ui/ok/has-name-async-mut.rs diff --git a/minitrace-macro/tests/ui/ok/has-name-async-mut.rs b/minitrace-macro/tests/ui/ok/has-name-async-mut.rs new file mode 100644 index 00000000..975bbd0d --- /dev/null +++ b/minitrace-macro/tests/ui/ok/has-name-async-mut.rs @@ -0,0 +1,11 @@ +use minitrace::trace; + +#[trace("test-span")] +async fn f(mut a: u32) -> u32 { + a +} + +#[tokio::main] +async fn main() { + f(1).await; +} From b484d29ec12f962991bad82626866f79392f5634 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Mon, 21 Mar 2022 21:25:44 +1100 Subject: [PATCH 15/36] Add: Legacy UI test parameter inputs - case 10 Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/ok/has-name-async.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/minitrace-macro/tests/ui/ok/has-name-async.rs b/minitrace-macro/tests/ui/ok/has-name-async.rs index 988876d3..7f9bc748 100644 --- a/minitrace-macro/tests/ui/ok/has-name-async.rs +++ b/minitrace-macro/tests/ui/ok/has-name-async.rs @@ -1,9 +1,9 @@ use minitrace::trace; -// This Tracing crate like-syntax -#[allow(unused_braces)] -#[trace["test-span"]] -async fn f(a: u32) -> u32 { a } +#[trace("test-span")] +async fn f(a: u32) -> u32 { + a +} #[tokio::main] async fn main() { From 847eba55179a847a05528dc8e94957bfec6f0c52 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Mon, 21 Mar 2022 21:26:42 +1100 Subject: [PATCH 16/36] Add: Legacy UI test parameter inputs - case 11 Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/ok/has-name-mut.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 minitrace-macro/tests/ui/ok/has-name-mut.rs diff --git a/minitrace-macro/tests/ui/ok/has-name-mut.rs b/minitrace-macro/tests/ui/ok/has-name-mut.rs new file mode 100644 index 00000000..9dd0b339 --- /dev/null +++ b/minitrace-macro/tests/ui/ok/has-name-mut.rs @@ -0,0 +1,10 @@ +use minitrace::trace; + +#[trace("test-span")] +fn f(a: u32) -> u32 { + a +} + +fn main() { + f(1); +} From 8cb00cec9a12833dcff91abae62e7aab176a3d66 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Mon, 21 Mar 2022 21:26:57 +1100 Subject: [PATCH 17/36] Add: Legacy UI test parameter inputs - case 12 Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/ok/has-name.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/minitrace-macro/tests/ui/ok/has-name.rs b/minitrace-macro/tests/ui/ok/has-name.rs index 9c4a8e5e..9dd0b339 100644 --- a/minitrace-macro/tests/ui/ok/has-name.rs +++ b/minitrace-macro/tests/ui/ok/has-name.rs @@ -1,8 +1,10 @@ use minitrace::trace; -// This Tracing crate like-syntax -#[allow(unused_braces)] -#[trace["test-span"]] -fn f(a: u32) -> u32 { a } +#[trace("test-span")] +fn f(a: u32) -> u32 { + a +} -fn main() {} +fn main() { + f(1); +} From b130ba9fd330adac44e044442d8d2a13df164d8d Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Mon, 21 Mar 2022 21:34:08 +1100 Subject: [PATCH 18/36] Add: Legacy procedural macro integration tests Address issue #81. These tests reflect the current state of play. They ensure migrating to the pipeline set out in issue #113, does not break existing functionality. Signed-off-by: Mark Van de Vyver --- minitrace-macro/Cargo.toml | 5 ++- minitrace-macro/tests/spans.rs | 5 +++ minitrace-macro/tests/spans/async.rs | 35 +++++++++++++++++++ minitrace-macro/tests/spans/sync.rs | 33 ++++++++++++++++++ test-utilities/Cargo.toml | 13 +++++++ test-utilities/src/lib.rs | 52 ++++++++++++++++++++++++++++ 6 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 minitrace-macro/tests/spans.rs create mode 100644 minitrace-macro/tests/spans/async.rs create mode 100644 minitrace-macro/tests/spans/sync.rs create mode 100644 test-utilities/Cargo.toml create mode 100644 test-utilities/src/lib.rs diff --git a/minitrace-macro/Cargo.toml b/minitrace-macro/Cargo.toml index b80174c7..79b8fce1 100644 --- a/minitrace-macro/Cargo.toml +++ b/minitrace-macro/Cargo.toml @@ -22,9 +22,12 @@ proc-macro2 = "1" proc-macro-error = "1" [dev-dependencies] -trybuild = "1" +futures = "0.3.21" minitrace = "0.4.0" +regex = "1.5.5" +test-utilities = { path = "../test-utilities" } tokio = { version = "1", features = ["full"] } +trybuild = "1" [patch.crates-io] minitrace = { path = "../" } \ No newline at end of file diff --git a/minitrace-macro/tests/spans.rs b/minitrace-macro/tests/spans.rs new file mode 100644 index 00000000..daf423c8 --- /dev/null +++ b/minitrace-macro/tests/spans.rs @@ -0,0 +1,5 @@ +#[test] +fn spans() { + let t = trybuild::TestCases::new(); + t.pass("tests/spans/*.rs"); +} diff --git a/minitrace-macro/tests/spans/async.rs b/minitrace-macro/tests/spans/async.rs new file mode 100644 index 00000000..c72bb8f7 --- /dev/null +++ b/minitrace-macro/tests/spans/async.rs @@ -0,0 +1,35 @@ +use minitrace::trace; +use regex::Regex; +use test_utilities::*; + +// This Tracing crate like-syntax +#[trace("test-span")] +async fn f(a: u32) -> u32 { + a +} + +#[tokio::main] +async fn main() { + let (root, collector) = minitrace::Span::root("root"); + let _child_span = minitrace::Span::enter_with_parent("test-span", &root); + f(1).await; + drop(root); + let records: Vec = futures::executor::block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, +]"#; + let pre = format!("{records:#?}"); + let re1 = Regex::new(r"begin_unix_time_ns: \d+,").unwrap(); + let re2 = Regex::new(r"duration_ns: \d+,").unwrap(); + let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); + let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); + assert_eq_text!(expected, &actual); +} diff --git a/minitrace-macro/tests/spans/sync.rs b/minitrace-macro/tests/spans/sync.rs new file mode 100644 index 00000000..659c4469 --- /dev/null +++ b/minitrace-macro/tests/spans/sync.rs @@ -0,0 +1,33 @@ +use minitrace::trace; +use regex::Regex; +use test_utilities::*; + +#[trace("test-span")] +fn f(a: u32) -> u32 { + a +} + +fn main() { + let (root, collector) = minitrace::Span::root("root"); + root.set_local_parent(); + f(1); + drop(root); + let records: Vec = + futures::executor::block_on(collector.collect()); + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, +]"#; + let pre = format!("{records:#?}"); + let re1 = Regex::new(r"begin_unix_time_ns: \d+,").unwrap(); + let re2 = Regex::new(r"duration_ns: \d+,").unwrap(); + let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); + let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); + assert_eq_text!(expected, &actual); +} diff --git a/test-utilities/Cargo.toml b/test-utilities/Cargo.toml new file mode 100644 index 00000000..67cc3072 --- /dev/null +++ b/test-utilities/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "test-utilities" +version = "0.0.0" +description = "Utilities for Minitrace development" +license = "MIT OR Apache-2.0" +edition = "2021" + +[lib] +doctest = false + +# Avoid adding crates, this is widely used in tests. It should compile fast! +[dependencies] +dissimilar = "1.0.2" diff --git a/test-utilities/src/lib.rs b/test-utilities/src/lib.rs new file mode 100644 index 00000000..323954e2 --- /dev/null +++ b/test-utilities/src/lib.rs @@ -0,0 +1,52 @@ +//! Assorted testing utilities. +//! +//! Most notable: +//! +//! * `assert_eq_text!`: Rich text comparison, which outputs a diff then panics. + +pub use dissimilar::diff as __diff; + +/// Asserts two strings are equal, otherwise sends a diff to stderr then panics. +/// +/// The rich diff shows changes from the "original" left string to the "actual" +/// right string. +/// +/// All arguments starting from and including the 3rd one are passed to +/// `eprintln!()` macro in case of text inequality. +/// +/// # Panics +/// +/// The macro will panic in case of text inequality. +#[macro_export] +macro_rules! assert_eq_text { + ($left:expr, $right:expr) => { + assert_eq_text!($left, $right,) + }; + ($left:expr, $right:expr, $($tt:tt)*) => {{ + let left = $left; + let right = $right; + if left != right { + if left.trim() == right.trim() { + std::eprintln!("Left:\n{:?}\n\nRight:\n{:?}\n\nWhitespace difference\n", left, right); + } else { + let diff = $crate::__diff(left, right); + std::eprintln!("Left:\n{}\n\nRight:\n{}\n\nDiff:\n{}\n", left, right, $crate::format_diff(diff)); + } + std::eprintln!($($tt)*); + panic!("text differs"); + } + }}; +} + +pub fn format_diff(chunks: Vec) -> String { + let mut buf = String::new(); + for chunk in chunks { + let formatted = match chunk { + dissimilar::Chunk::Equal(text) => text.into(), + dissimilar::Chunk::Delete(text) => format!("\x1b[41m{}\x1b[0m", text), + dissimilar::Chunk::Insert(text) => format!("\x1b[42m{}\x1b[0m", text), + }; + buf.push_str(&formatted); + } + buf +} From 626355b453b06d930f5ff87995a173b104348e08 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 05:23:35 +1100 Subject: [PATCH 19/36] Evolve: black-box false tests Signed-off-by: Mark Van de Vyver --- .../tests/spans/{async.rs => black-box-false-async.rs} | 3 ++- .../tests/spans/{sync.rs => black-box-false-sync.rs} | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) rename minitrace-macro/tests/spans/{async.rs => black-box-false-async.rs} (93%) rename minitrace-macro/tests/spans/{sync.rs => black-box-false-sync.rs} (89%) diff --git a/minitrace-macro/tests/spans/async.rs b/minitrace-macro/tests/spans/black-box-false-async.rs similarity index 93% rename from minitrace-macro/tests/spans/async.rs rename to minitrace-macro/tests/spans/black-box-false-async.rs index c72bb8f7..83f9fd72 100644 --- a/minitrace-macro/tests/spans/async.rs +++ b/minitrace-macro/tests/spans/black-box-false-async.rs @@ -2,7 +2,8 @@ use minitrace::trace; use regex::Regex; use test_utilities::*; -// This Tracing crate like-syntax +// Reference: +// - https://github.com/tikv/minitrace-rust/issues/122 #[trace("test-span")] async fn f(a: u32) -> u32 { a diff --git a/minitrace-macro/tests/spans/sync.rs b/minitrace-macro/tests/spans/black-box-false-sync.rs similarity index 89% rename from minitrace-macro/tests/spans/sync.rs rename to minitrace-macro/tests/spans/black-box-false-sync.rs index 659c4469..e6165ecb 100644 --- a/minitrace-macro/tests/spans/sync.rs +++ b/minitrace-macro/tests/spans/black-box-false-sync.rs @@ -2,6 +2,8 @@ use minitrace::trace; use regex::Regex; use test_utilities::*; +// Reference: +// - https://github.com/tikv/minitrace-rust/issues/122 #[trace("test-span")] fn f(a: u32) -> u32 { a @@ -9,7 +11,7 @@ fn f(a: u32) -> u32 { fn main() { let (root, collector) = minitrace::Span::root("root"); - root.set_local_parent(); + let _sg1 = root.set_local_parent(); f(1); drop(root); let records: Vec = From c069d87b1aea2ea93529ee83d3f0c6d806734071 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 05:52:34 +1100 Subject: [PATCH 20/36] Evolve: Remove Cargo patch stanza Signed-off-by: Mark Van de Vyver --- minitrace-macro/Cargo.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/minitrace-macro/Cargo.toml b/minitrace-macro/Cargo.toml index 79b8fce1..af6f4b04 100644 --- a/minitrace-macro/Cargo.toml +++ b/minitrace-macro/Cargo.toml @@ -23,11 +23,8 @@ proc-macro-error = "1" [dev-dependencies] futures = "0.3.21" -minitrace = "0.4.0" +minitrace = { path = "../minitrace" } regex = "1.5.5" test-utilities = { path = "../test-utilities" } tokio = { version = "1", features = ["full"] } trybuild = "1" - -[patch.crates-io] -minitrace = { path = "../" } \ No newline at end of file From 48117d1cc2ad1b44e6efd5da5044bf9a2d2a9c64 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 05:53:37 +1100 Subject: [PATCH 21/36] Add: Documentation test as integration test (sync) Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/spans/doctest-sync.rs | 58 +++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 minitrace-macro/tests/spans/doctest-sync.rs diff --git a/minitrace-macro/tests/spans/doctest-sync.rs b/minitrace-macro/tests/spans/doctest-sync.rs new file mode 100644 index 00000000..e2ac97e6 --- /dev/null +++ b/minitrace-macro/tests/spans/doctest-sync.rs @@ -0,0 +1,58 @@ +use futures::executor::block_on; +use minitrace::prelude::*; +use regex::Regex; +use test_utilities::*; + +// Implement doctest example as an integration test. +// +// Reference: +// - https://github.com/tikv/minitrace-rust/blob/master/minitrace/src/lib.rs#L178-L202 + +#[trace("do_something")] +fn do_something(i: u64) { + std::thread::sleep(std::time::Duration::from_millis(i)); +} + +// #[trace("do_something_async")] +// async fn do_something_async(i: u64) { +// futures_timer::Delay::new(std::time::Duration::from_millis(i)).await; +// } + +fn main() { + let (root, collector) = Span::root("root"); + + { + let _g = root.set_local_parent(); + do_something(100); + // block_on(do_something_async(100)); + } + + drop(root); + let records: Vec = block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "do_something", + properties: [], + }, +]"#; + let pre = format!("{records:#?}"); + let re1 = Regex::new(r"begin_unix_time_ns: \d+,").unwrap(); + let re2 = Regex::new(r"duration_ns: \d+,").unwrap(); + let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); + let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); + assert_eq_text!(expected, &actual); + +} From dfe2a3659b07c5c910124b812e58306cbae72596 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 06:00:20 +1100 Subject: [PATCH 22/36] Evolve: Documentation as integration test (sync) Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/spans/doctest-sync.rs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/minitrace-macro/tests/spans/doctest-sync.rs b/minitrace-macro/tests/spans/doctest-sync.rs index e2ac97e6..2f50e965 100644 --- a/minitrace-macro/tests/spans/doctest-sync.rs +++ b/minitrace-macro/tests/spans/doctest-sync.rs @@ -3,7 +3,7 @@ use minitrace::prelude::*; use regex::Regex; use test_utilities::*; -// Implement doctest example as an integration test. +// Implement documentation example as an integration test. // // Reference: // - https://github.com/tikv/minitrace-rust/blob/master/minitrace/src/lib.rs#L178-L202 @@ -13,18 +13,12 @@ fn do_something(i: u64) { std::thread::sleep(std::time::Duration::from_millis(i)); } -// #[trace("do_something_async")] -// async fn do_something_async(i: u64) { -// futures_timer::Delay::new(std::time::Duration::from_millis(i)).await; -// } - fn main() { let (root, collector) = Span::root("root"); { let _g = root.set_local_parent(); do_something(100); - // block_on(do_something_async(100)); } drop(root); @@ -54,5 +48,4 @@ fn main() { let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); assert_eq_text!(expected, &actual); - } From fb6714e17b3633e9cf6351a6a9a4010a180fa597 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 06:01:13 +1100 Subject: [PATCH 23/36] Add: Documentation as integration test (async) Signed-off-by: Mark Van de Vyver --- minitrace-macro/Cargo.toml | 1 + minitrace-macro/tests/spans/doctest-async.rs | 52 ++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 minitrace-macro/tests/spans/doctest-async.rs diff --git a/minitrace-macro/Cargo.toml b/minitrace-macro/Cargo.toml index af6f4b04..a2e22dd7 100644 --- a/minitrace-macro/Cargo.toml +++ b/minitrace-macro/Cargo.toml @@ -23,6 +23,7 @@ proc-macro-error = "1" [dev-dependencies] futures = "0.3.21" +futures-timer = "3.0.2" minitrace = { path = "../minitrace" } regex = "1.5.5" test-utilities = { path = "../test-utilities" } diff --git a/minitrace-macro/tests/spans/doctest-async.rs b/minitrace-macro/tests/spans/doctest-async.rs new file mode 100644 index 00000000..c8d1a26b --- /dev/null +++ b/minitrace-macro/tests/spans/doctest-async.rs @@ -0,0 +1,52 @@ +use futures::executor::block_on; +use minitrace::prelude::*; +use regex::Regex; +use test_utilities::*; + +// Implement documentation example as an integration test. +// +// Reference: +// - https://github.com/tikv/minitrace-rust/blob/master/minitrace/src/lib.rs#L178-L202 + +#[trace("do_something_async")] +async fn do_something_async(i: u64) { + futures_timer::Delay::new(std::time::Duration::from_millis(i)).await; +} + +fn main() { + let (root, collector) = Span::root("root"); + + { + let _g = root.set_local_parent(); + block_on(do_something_async(100)); + } + + drop(root); + let records: Vec = block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "do_something_async", + properties: [], + }, +]"#; + let pre = format!("{records:#?}"); + let re1 = Regex::new(r"begin_unix_time_ns: \d+,").unwrap(); + let re2 = Regex::new(r"duration_ns: \d+,").unwrap(); + let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); + let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); + assert_eq_text!(expected, &actual); + +} From 69d06a337c405466971c0b2ae27b409361a9c3db Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 08:07:34 +1100 Subject: [PATCH 24/36] Evolve: Documentation as integration test (sync) Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/spans/doctest-sync.rs | 7 +------ test-utilities/Cargo.toml | 2 ++ test-utilities/src/lib.rs | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/minitrace-macro/tests/spans/doctest-sync.rs b/minitrace-macro/tests/spans/doctest-sync.rs index 2f50e965..89368a20 100644 --- a/minitrace-macro/tests/spans/doctest-sync.rs +++ b/minitrace-macro/tests/spans/doctest-sync.rs @@ -1,6 +1,5 @@ use futures::executor::block_on; use minitrace::prelude::*; -use regex::Regex; use test_utilities::*; // Implement documentation example as an integration test. @@ -42,10 +41,6 @@ fn main() { properties: [], }, ]"#; - let pre = format!("{records:#?}"); - let re1 = Regex::new(r"begin_unix_time_ns: \d+,").unwrap(); - let re2 = Regex::new(r"duration_ns: \d+,").unwrap(); - let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); - let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); + let actual = normalize_spans(records); assert_eq_text!(expected, &actual); } diff --git a/test-utilities/Cargo.toml b/test-utilities/Cargo.toml index 67cc3072..75567303 100644 --- a/test-utilities/Cargo.toml +++ b/test-utilities/Cargo.toml @@ -11,3 +11,5 @@ doctest = false # Avoid adding crates, this is widely used in tests. It should compile fast! [dependencies] dissimilar = "1.0.2" +minitrace = { path = "../minitrace" } +regex = "1.5.5" diff --git a/test-utilities/src/lib.rs b/test-utilities/src/lib.rs index 323954e2..89936df7 100644 --- a/test-utilities/src/lib.rs +++ b/test-utilities/src/lib.rs @@ -50,3 +50,17 @@ pub fn format_diff(chunks: Vec) -> String { } buf } + +pub fn normalize_spans(records: R) -> std::string::String +where + S: Sized, + R: AsRef<[S]> + std::fmt::Debug, +{ + let pre = format!("{records:#?}"); + //let pre = records.to_string(); + let re1 = regex::Regex::new(r"begin_unix_time_ns: \d+,").unwrap(); + let re2 = regex::Regex::new(r"duration_ns: \d+,").unwrap(); + let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); + let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); + actual +} From 432865a0c7c5643cad1619e5ce39143bcc18c308 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 08:10:09 +1100 Subject: [PATCH 25/36] Evolve: Documentation as integration test (async) Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/spans/doctest-async.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/minitrace-macro/tests/spans/doctest-async.rs b/minitrace-macro/tests/spans/doctest-async.rs index c8d1a26b..92404cad 100644 --- a/minitrace-macro/tests/spans/doctest-async.rs +++ b/minitrace-macro/tests/spans/doctest-async.rs @@ -1,6 +1,5 @@ use futures::executor::block_on; use minitrace::prelude::*; -use regex::Regex; use test_utilities::*; // Implement documentation example as an integration test. @@ -42,11 +41,7 @@ fn main() { properties: [], }, ]"#; - let pre = format!("{records:#?}"); - let re1 = Regex::new(r"begin_unix_time_ns: \d+,").unwrap(); - let re2 = Regex::new(r"duration_ns: \d+,").unwrap(); - let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); - let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); + let actual = normalize_spans(records); assert_eq_text!(expected, &actual); } From 14a5f49c32c894becf589a92f77a7c01d01153e5 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 08:13:04 +1100 Subject: [PATCH 26/36] Evolve: Black-box false integration test (sync) Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/spans/black-box-false-sync.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/minitrace-macro/tests/spans/black-box-false-sync.rs b/minitrace-macro/tests/spans/black-box-false-sync.rs index e6165ecb..e727c244 100644 --- a/minitrace-macro/tests/spans/black-box-false-sync.rs +++ b/minitrace-macro/tests/spans/black-box-false-sync.rs @@ -1,5 +1,4 @@ use minitrace::trace; -use regex::Regex; use test_utilities::*; // Reference: @@ -26,10 +25,6 @@ fn main() { properties: [], }, ]"#; - let pre = format!("{records:#?}"); - let re1 = Regex::new(r"begin_unix_time_ns: \d+,").unwrap(); - let re2 = Regex::new(r"duration_ns: \d+,").unwrap(); - let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); - let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); + let actual = normalize_spans(records); assert_eq_text!(expected, &actual); } From 97ce3d625a6d8508b896d2f66a25fca9f7987b50 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 08:13:36 +1100 Subject: [PATCH 27/36] Evolve: Black-box false integration test (async) Signed-off-by: Mark Van de Vyver --- minitrace-macro/Cargo.toml | 1 - minitrace-macro/tests/spans/black-box-false-async.rs | 7 +------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/minitrace-macro/Cargo.toml b/minitrace-macro/Cargo.toml index a2e22dd7..8999f863 100644 --- a/minitrace-macro/Cargo.toml +++ b/minitrace-macro/Cargo.toml @@ -25,7 +25,6 @@ proc-macro-error = "1" futures = "0.3.21" futures-timer = "3.0.2" minitrace = { path = "../minitrace" } -regex = "1.5.5" test-utilities = { path = "../test-utilities" } tokio = { version = "1", features = ["full"] } trybuild = "1" diff --git a/minitrace-macro/tests/spans/black-box-false-async.rs b/minitrace-macro/tests/spans/black-box-false-async.rs index 83f9fd72..850e1f42 100644 --- a/minitrace-macro/tests/spans/black-box-false-async.rs +++ b/minitrace-macro/tests/spans/black-box-false-async.rs @@ -1,5 +1,4 @@ use minitrace::trace; -use regex::Regex; use test_utilities::*; // Reference: @@ -27,10 +26,6 @@ async fn main() { properties: [], }, ]"#; - let pre = format!("{records:#?}"); - let re1 = Regex::new(r"begin_unix_time_ns: \d+,").unwrap(); - let re2 = Regex::new(r"duration_ns: \d+,").unwrap(); - let int: std::string::String = re1.replace_all(&pre, r"begin_unix_time_ns: \d+,").into(); - let actual: std::string::String = re2.replace_all(&int, r"duration_ns: \d+,").into(); + let actual = normalize_spans(records); assert_eq_text!(expected, &actual); } From f9d914bbe24bbe15610f24c2d66fddcda87892cd Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 08:36:12 +1100 Subject: [PATCH 28/36] Add: License detail Signed-off-by: Mark Van de Vyver --- test-utilities/src/lib.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test-utilities/src/lib.rs b/test-utilities/src/lib.rs index 89936df7..71dfebb3 100644 --- a/test-utilities/src/lib.rs +++ b/test-utilities/src/lib.rs @@ -17,6 +17,12 @@ pub use dissimilar::diff as __diff; /// # Panics /// /// The macro will panic in case of text inequality. +/// +/// # License +/// +/// SPDX-License-Identifier: Apache-2.0 OR MIT +/// Copyright 2022 rust-analyzer project authors +/// #[macro_export] macro_rules! assert_eq_text { ($left:expr, $right:expr) => { From c67f0c783681ae097f420ff1613e0b2084a4d023 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 08:52:55 +1100 Subject: [PATCH 29/36] Add: Example as integration test (sync) Signed-off-by: Mark Van de Vyver --- .github/workflows/coverage.yml | 1 - minitrace-macro/tests/spans/example-sync.rs | 220 ++++++++++++++++++++ 2 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 minitrace-macro/tests/spans/example-sync.rs diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index e506fb64..1aef40a9 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -22,7 +22,6 @@ jobs: RUSTDOCFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests" run: | cargo test --workspace --all-features --no-fail-fast - cargo run --example synchronous cargo run --example asynchronous cargo run --example get_started - id: coverage diff --git a/minitrace-macro/tests/spans/example-sync.rs b/minitrace-macro/tests/spans/example-sync.rs new file mode 100644 index 00000000..3274a3ce --- /dev/null +++ b/minitrace-macro/tests/spans/example-sync.rs @@ -0,0 +1,220 @@ +// Copyright 2020 TiKV Project Authors. Licensed under Apache-2.0. + +use futures::executor::block_on; +use minitrace::prelude::*; +use test_utilities::*; + +fn func1(i: u64) { + let _guard = LocalSpan::enter_with_local_parent("func1"); + std::thread::sleep(std::time::Duration::from_millis(i)); + func2(i); +} + +#[trace("func2")] +fn func2(i: u64) { + std::thread::sleep(std::time::Duration::from_millis(i)); +} + +fn main() { + let collector = { + let (span, collector) = Span::root("root"); + + let _sg1 = span.set_local_parent(); + let mut sg2 = LocalSpan::enter_with_local_parent("a span"); + sg2.add_property(|| ("a property", "a value".to_owned())); + + for i in 1..=10 { + func1(i); + } + + collector + }; + + let records: Vec = block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "a span", + properties: [ + ( + "a property", + "a value", + ), + ], + }, + SpanRecord { + id: 3, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 4, + parent_id: 3, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, + SpanRecord { + id: 5, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 6, + parent_id: 5, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, + SpanRecord { + id: 7, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 8, + parent_id: 7, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, + SpanRecord { + id: 9, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 10, + parent_id: 9, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, + SpanRecord { + id: 11, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 12, + parent_id: 11, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, + SpanRecord { + id: 13, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 14, + parent_id: 13, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, + SpanRecord { + id: 15, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 16, + parent_id: 15, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, + SpanRecord { + id: 17, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 18, + parent_id: 17, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, + SpanRecord { + id: 19, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 20, + parent_id: 19, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, + SpanRecord { + id: 21, + parent_id: 2, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func1", + properties: [], + }, + SpanRecord { + id: 22, + parent_id: 21, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "func2", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} From 9c94359b36a4c0a2793adad2c5c2e7ad48c1dd98 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 09:17:20 +1100 Subject: [PATCH 30/36] Add: Example as integration test (async) Signed-off-by: Mark Van de Vyver --- .github/workflows/coverage.yml | 1 - minitrace-macro/tests/spans/example-async.rs | 193 +++++++++++++++++++ 2 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 minitrace-macro/tests/spans/example-async.rs diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 1aef40a9..11b8fd40 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -22,7 +22,6 @@ jobs: RUSTDOCFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests" run: | cargo test --workspace --all-features --no-fail-fast - cargo run --example asynchronous cargo run --example get_started - id: coverage uses: actions-rs/grcov@v0.1 diff --git a/minitrace-macro/tests/spans/example-async.rs b/minitrace-macro/tests/spans/example-async.rs new file mode 100644 index 00000000..de998cb2 --- /dev/null +++ b/minitrace-macro/tests/spans/example-async.rs @@ -0,0 +1,193 @@ +// Copyright 2020 TiKV Project Authors. Licensed under Apache-2.0. + +use futures::executor::block_on; +use minitrace::prelude::*; +use test_utilities::*; + +fn parallel_job() -> Vec> { + let mut v = Vec::with_capacity(4); + for i in 0..4 { + v.push(tokio::spawn( + iter_job(i).in_span(Span::enter_with_local_parent("iter job")), + )); + } + v +} + +async fn iter_job(iter: u64) { + std::thread::sleep(std::time::Duration::from_millis(iter * 10)); + tokio::task::yield_now().await; + other_job().await; +} + +#[trace("other job", enter_on_poll = true)] +async fn other_job() { + for i in 0..20 { + if i == 10 { + tokio::task::yield_now().await; + } + std::thread::sleep(std::time::Duration::from_millis(1)); + } +} + +#[tokio::main] +async fn main() { + let (span, collector) = Span::root("root"); + + let f = async { + let jhs = { + let mut span = LocalSpan::enter_with_local_parent("a span"); + span.add_property(|| ("a property", "a value".to_owned())); + parallel_job() + }; + + other_job().await; + + for jh in jhs { + jh.await.unwrap(); + } + } + .in_span(span); + + tokio::spawn(f).await.unwrap(); + + let records: Vec = block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 65537, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "a span", + properties: [ + ( + "a property", + "a value", + ), + ], + }, + SpanRecord { + id: 65542, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 131073, + parent_id: 65539, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 131074, + parent_id: 65538, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 131075, + parent_id: 65539, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 65539, + parent_id: 65537, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "iter job", + properties: [], + }, + SpanRecord { + id: 131076, + parent_id: 65538, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 65538, + parent_id: 65537, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "iter job", + properties: [], + }, + SpanRecord { + id: 131077, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 65543, + parent_id: 65541, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 131078, + parent_id: 65540, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 65544, + parent_id: 65541, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 65541, + parent_id: 65537, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "iter job", + properties: [], + }, + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 131079, + parent_id: 65540, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "other job", + properties: [], + }, + SpanRecord { + id: 65540, + parent_id: 65537, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "iter job", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} From e42e1d1572916106b07bcac4b495f47d41dc8b4f Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Wed, 23 Mar 2022 04:27:46 +1100 Subject: [PATCH 31/36] Add: BE integration tests - scope & order Signed-off-by: Mark Van de Vyver (cherry picked from commit 79e31c32f2288d00bef97e5fc7631cddd2118328) --- .../tests/spans/no-be-local-async.rs | 35 +++++++++++++++++++ .../tests/spans/no-be-local-sync.rs | 34 ++++++++++++++++++ .../tests/spans/no-be-threads-async.rs | 35 +++++++++++++++++++ .../tests/spans/no-be-threads-sync.rs | 34 ++++++++++++++++++ 4 files changed, 138 insertions(+) create mode 100644 minitrace-macro/tests/spans/no-be-local-async.rs create mode 100644 minitrace-macro/tests/spans/no-be-local-sync.rs create mode 100644 minitrace-macro/tests/spans/no-be-threads-async.rs create mode 100644 minitrace-macro/tests/spans/no-be-threads-sync.rs diff --git a/minitrace-macro/tests/spans/no-be-local-async.rs b/minitrace-macro/tests/spans/no-be-local-async.rs new file mode 100644 index 00000000..7f32620e --- /dev/null +++ b/minitrace-macro/tests/spans/no-be-local-async.rs @@ -0,0 +1,35 @@ +use minitrace::trace; +use test_utilities::*; + +// With no block expression the span "a-span" is silently omitted. +// Reference: +// - https://github.com/tikv/minitrace-rust/issues/125 +// - https://github.com/tikv/minitrace-rust/issues/126 +#[trace("a-span")] +async fn f(a: u32) -> u32 { + a +} + +#[tokio::main] +async fn main() { + let (root, collector) = minitrace::Span::root("root"); + //{ + let _child_span = root.set_local_parent(); + f(1).await; + //} + drop(root); + let records: Vec = futures::executor::block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} diff --git a/minitrace-macro/tests/spans/no-be-local-sync.rs b/minitrace-macro/tests/spans/no-be-local-sync.rs new file mode 100644 index 00000000..51ee51be --- /dev/null +++ b/minitrace-macro/tests/spans/no-be-local-sync.rs @@ -0,0 +1,34 @@ +use minitrace::trace; +use test_utilities::*; + +// With no block expression the span "a-span" is silently omitted. +// Reference: +// - https://github.com/tikv/minitrace-rust/issues/125 +// - https://github.com/tikv/minitrace-rust/issues/126 +#[trace("a-span")] +fn f(a: u32) -> u32 { + a +} + +fn main() { + let (root, collector) = minitrace::Span::root("root"); + //{ + let _sg1 = root.set_local_parent(); + f(1); + //} + drop(root); + let records: Vec = + futures::executor::block_on(collector.collect()); + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} diff --git a/minitrace-macro/tests/spans/no-be-threads-async.rs b/minitrace-macro/tests/spans/no-be-threads-async.rs new file mode 100644 index 00000000..708a9b65 --- /dev/null +++ b/minitrace-macro/tests/spans/no-be-threads-async.rs @@ -0,0 +1,35 @@ +use minitrace::trace; +use test_utilities::*; + +// With no block expression the span "test-span" is silently omitted. +// Reference: +// - https://github.com/tikv/minitrace-rust/issues/125 +// - https://github.com/tikv/minitrace-rust/issues/126 +#[trace("a-span")] +async fn f(a: u32) -> u32 { + a +} + +#[tokio::main] +async fn main() { + let (root, collector) = minitrace::Span::root("root"); + //{ + let _child_span = minitrace::Span::enter_with_parent("test-span", &root); + f(1).await; + //} + drop(root); + let records: Vec = futures::executor::block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} diff --git a/minitrace-macro/tests/spans/no-be-threads-sync.rs b/minitrace-macro/tests/spans/no-be-threads-sync.rs new file mode 100644 index 00000000..23dabb21 --- /dev/null +++ b/minitrace-macro/tests/spans/no-be-threads-sync.rs @@ -0,0 +1,34 @@ +use minitrace::trace; +use test_utilities::*; + +// With no block expression the span "test-span" is silently omitted. +// Reference: +// - https://github.com/tikv/minitrace-rust/issues/125 +// - https://github.com/tikv/minitrace-rust/issues/126 +#[trace("a-span")] +fn f(a: u32) -> u32 { + a +} + +fn main() { + let (root, collector) = minitrace::Span::root("root"); + //{ + let _sg1 = minitrace::Span::enter_with_parent("test-span", &root); + f(1); + //} + drop(root); + let records: Vec = + futures::executor::block_on(collector.collect()); + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} From ffa1d93ffa5479cad1280ebbee84eb0eab231d96 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Tue, 22 Mar 2022 20:40:30 +1100 Subject: [PATCH 32/36] Add: Black-box false integration tests - scope & order Signed-off-by: Mark Van de Vyver (cherry picked from commit 3278339399a5263a8a3078c93fff3f6a4811b8d8) --- ...sync.rs => black-box-false-local-async.rs} | 16 +++++-- ...-sync.rs => black-box-false-local-sync.rs} | 16 +++++-- .../spans/black-box-false-threads-async.rs | 42 +++++++++++++++++++ .../spans/black-box-false-threads-sync.rs | 41 ++++++++++++++++++ 4 files changed, 109 insertions(+), 6 deletions(-) rename minitrace-macro/tests/spans/{black-box-false-async.rs => black-box-false-local-async.rs} (70%) rename minitrace-macro/tests/spans/{black-box-false-sync.rs => black-box-false-local-sync.rs} (70%) create mode 100644 minitrace-macro/tests/spans/black-box-false-threads-async.rs create mode 100644 minitrace-macro/tests/spans/black-box-false-threads-sync.rs diff --git a/minitrace-macro/tests/spans/black-box-false-async.rs b/minitrace-macro/tests/spans/black-box-false-local-async.rs similarity index 70% rename from minitrace-macro/tests/spans/black-box-false-async.rs rename to minitrace-macro/tests/spans/black-box-false-local-async.rs index 850e1f42..61ab08ca 100644 --- a/minitrace-macro/tests/spans/black-box-false-async.rs +++ b/minitrace-macro/tests/spans/black-box-false-local-async.rs @@ -3,7 +3,7 @@ use test_utilities::*; // Reference: // - https://github.com/tikv/minitrace-rust/issues/122 -#[trace("test-span")] +#[trace("a-span")] async fn f(a: u32) -> u32 { a } @@ -11,8 +11,10 @@ async fn f(a: u32) -> u32 { #[tokio::main] async fn main() { let (root, collector) = minitrace::Span::root("root"); - let _child_span = minitrace::Span::enter_with_parent("test-span", &root); - f(1).await; + { + let _child_span = root.set_local_parent(); + f(1).await; + } drop(root); let records: Vec = futures::executor::block_on(collector.collect()); @@ -25,6 +27,14 @@ async fn main() { event: "root", properties: [], }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "a-span", + properties: [], + }, ]"#; let actual = normalize_spans(records); assert_eq_text!(expected, &actual); diff --git a/minitrace-macro/tests/spans/black-box-false-sync.rs b/minitrace-macro/tests/spans/black-box-false-local-sync.rs similarity index 70% rename from minitrace-macro/tests/spans/black-box-false-sync.rs rename to minitrace-macro/tests/spans/black-box-false-local-sync.rs index e727c244..49247547 100644 --- a/minitrace-macro/tests/spans/black-box-false-sync.rs +++ b/minitrace-macro/tests/spans/black-box-false-local-sync.rs @@ -3,15 +3,17 @@ use test_utilities::*; // Reference: // - https://github.com/tikv/minitrace-rust/issues/122 -#[trace("test-span")] +#[trace("a-span")] fn f(a: u32) -> u32 { a } fn main() { let (root, collector) = minitrace::Span::root("root"); - let _sg1 = root.set_local_parent(); - f(1); + { + let _sg1 = root.set_local_parent(); + f(1); + } drop(root); let records: Vec = futures::executor::block_on(collector.collect()); @@ -24,6 +26,14 @@ fn main() { event: "root", properties: [], }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "a-span", + properties: [], + }, ]"#; let actual = normalize_spans(records); assert_eq_text!(expected, &actual); diff --git a/minitrace-macro/tests/spans/black-box-false-threads-async.rs b/minitrace-macro/tests/spans/black-box-false-threads-async.rs new file mode 100644 index 00000000..f6d0e147 --- /dev/null +++ b/minitrace-macro/tests/spans/black-box-false-threads-async.rs @@ -0,0 +1,42 @@ +use minitrace::trace; +use test_utilities::*; + +// Span names passed via `enter_with_parent` override default names. +// Reference: +// - https://github.com/tikv/minitrace-rust/issues/122 +#[trace("a-span")] +async fn f(a: u32) -> u32 { + a +} + +#[tokio::main] +async fn main() { + let (root, collector) = minitrace::Span::root("root"); + { + let _child_span = minitrace::Span::enter_with_parent("test-span", &root); + f(1).await; + } + drop(root); + let records: Vec = futures::executor::block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "test-span", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} diff --git a/minitrace-macro/tests/spans/black-box-false-threads-sync.rs b/minitrace-macro/tests/spans/black-box-false-threads-sync.rs new file mode 100644 index 00000000..a2535f86 --- /dev/null +++ b/minitrace-macro/tests/spans/black-box-false-threads-sync.rs @@ -0,0 +1,41 @@ +use minitrace::trace; +use test_utilities::*; + +// Span names passed via `enter_with_parent` override default names. +// Reference: +// - https://github.com/tikv/minitrace-rust/issues/122 +#[trace("a-span")] +fn f(a: u32) -> u32 { + a +} + +fn main() { + let (root, collector) = minitrace::Span::root("root"); + { + let _sg1 = minitrace::Span::enter_with_parent("test-span", &root); + f(1); + } + drop(root); + let records: Vec = + futures::executor::block_on(collector.collect()); + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "test-span", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} From 7d47a0dbac748a536ad34852cdff8a3523e5e1b1 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Wed, 23 Mar 2022 03:46:32 +1100 Subject: [PATCH 33/36] Add: Default name integration tests - scope & order Signed-off-by: Mark Van de Vyver (cherry picked from commit c66c8c7d631ed31fa0a9e8f55250dc7efdf4fc8a) --- .../tests/spans/default-name-local-async.rs | 39 ++++++++++++++++++ .../tests/spans/default-name-local-sync.rs | 38 ++++++++++++++++++ .../tests/spans/default-name-threads-async.rs | 40 +++++++++++++++++++ .../tests/spans/default-name-threads-sync.rs | 39 ++++++++++++++++++ 4 files changed, 156 insertions(+) create mode 100644 minitrace-macro/tests/spans/default-name-local-async.rs create mode 100644 minitrace-macro/tests/spans/default-name-local-sync.rs create mode 100644 minitrace-macro/tests/spans/default-name-threads-async.rs create mode 100644 minitrace-macro/tests/spans/default-name-threads-sync.rs diff --git a/minitrace-macro/tests/spans/default-name-local-async.rs b/minitrace-macro/tests/spans/default-name-local-async.rs new file mode 100644 index 00000000..9c20034d --- /dev/null +++ b/minitrace-macro/tests/spans/default-name-local-async.rs @@ -0,0 +1,39 @@ +use minitrace::trace; +use test_utilities::*; + +#[trace] +async fn fa(a: u32) -> u32 { + a +} + +#[tokio::main] +async fn main() { + let (root, collector) = minitrace::Span::root("root"); + { + let _g = root.set_local_parent(); + fa(1).await; + } + drop(root); + let records: Vec = futures::executor::block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "fa", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} diff --git a/minitrace-macro/tests/spans/default-name-local-sync.rs b/minitrace-macro/tests/spans/default-name-local-sync.rs new file mode 100644 index 00000000..12fcf7d2 --- /dev/null +++ b/minitrace-macro/tests/spans/default-name-local-sync.rs @@ -0,0 +1,38 @@ +use minitrace::trace; +use test_utilities::*; + +#[trace] +fn f(a: u64) { + std::thread::sleep(std::time::Duration::from_nanos(a)); +} + +fn main() { + let (root, collector) = minitrace::Span::root("root"); + { + let _g = root.set_local_parent(); + f(1); + } + drop(root); + let records: Vec = + futures::executor::block_on(collector.collect()); + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "f", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} diff --git a/minitrace-macro/tests/spans/default-name-threads-async.rs b/minitrace-macro/tests/spans/default-name-threads-async.rs new file mode 100644 index 00000000..d0094ddc --- /dev/null +++ b/minitrace-macro/tests/spans/default-name-threads-async.rs @@ -0,0 +1,40 @@ +use minitrace::trace; +use test_utilities::*; + +// Span names passed via `enter_with_parent` override default names. +#[trace] +async fn fa(a: u32) -> u32 { + a +} + +#[tokio::main] +async fn main() { + let (root, collector) = minitrace::Span::root("root"); + { + let _child_span = minitrace::Span::enter_with_parent("test-span", &root); + fa(1).await; + } + drop(root); + let records: Vec = futures::executor::block_on(collector.collect()); + + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "test-span", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} diff --git a/minitrace-macro/tests/spans/default-name-threads-sync.rs b/minitrace-macro/tests/spans/default-name-threads-sync.rs new file mode 100644 index 00000000..485fddd6 --- /dev/null +++ b/minitrace-macro/tests/spans/default-name-threads-sync.rs @@ -0,0 +1,39 @@ +use minitrace::trace; +use test_utilities::*; + +// Span names passed via `enter_with_parent` override default names. +#[trace] +fn f(a: u64) { + std::thread::sleep(std::time::Duration::from_nanos(a)); +} + +fn main() { + let (root, collector) = minitrace::Span::root("root"); + { + let _g = minitrace::Span::enter_with_parent("test-span", &root); + f(1); + } + drop(root); + let records: Vec = + futures::executor::block_on(collector.collect()); + let expected = r#"[ + SpanRecord { + id: 1, + parent_id: 0, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "root", + properties: [], + }, + SpanRecord { + id: 2, + parent_id: 1, + begin_unix_time_ns: \d+, + duration_ns: \d+, + event: "test-span", + properties: [], + }, +]"#; + let actual = normalize_spans(records); + assert_eq_text!(expected, &actual); +} From 5374ebac71fc5ff628bd779015d0ac79281701ed Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 16:27:59 +1100 Subject: [PATCH 34/36] Add: Legacy UI test parameter inputs - case 1 This test reflects the current state of play. Migrating to the pipeline set out in issue #113 will enable this to be replaced by the more informative text and error location: error: this attribute takes one argument = help: use --> tests/ui/has-arguments.rs:3:1 | 3 | #[trace(a, b)] | ^^^^^^^^^^^^^^^^^^^^ | = note: this error originates in the attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/err/has-arguments.rs | 6 ++++++ minitrace-macro/tests/ui/err/has-arguments.stderr | 5 +++++ 2 files changed, 11 insertions(+) create mode 100644 minitrace-macro/tests/ui/err/has-arguments.rs create mode 100644 minitrace-macro/tests/ui/err/has-arguments.stderr diff --git a/minitrace-macro/tests/ui/err/has-arguments.rs b/minitrace-macro/tests/ui/err/has-arguments.rs new file mode 100644 index 00000000..38f2068a --- /dev/null +++ b/minitrace-macro/tests/ui/err/has-arguments.rs @@ -0,0 +1,6 @@ +use minitrace::trace; + +#[trace(a, b)] +fn f() {} + +fn main() {} diff --git a/minitrace-macro/tests/ui/err/has-arguments.stderr b/minitrace-macro/tests/ui/err/has-arguments.stderr new file mode 100644 index 00000000..234fe9a1 --- /dev/null +++ b/minitrace-macro/tests/ui/err/has-arguments.stderr @@ -0,0 +1,5 @@ +error: expected string literal + --> tests/ui/err/has-arguments.rs:3:9 + | +3 | #[trace(a, b)] + | ^ From 1f81832a2afb339f95ec5c1c3ac77a332b76efac Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Sun, 20 Mar 2022 17:20:10 +1100 Subject: [PATCH 35/36] Evolve: Legacy UI test parameter inputs Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/err/has-arguments.rs | 6 ------ minitrace-macro/tests/ui/err/has-arguments.stderr | 5 ----- 2 files changed, 11 deletions(-) delete mode 100644 minitrace-macro/tests/ui/err/has-arguments.rs delete mode 100644 minitrace-macro/tests/ui/err/has-arguments.stderr diff --git a/minitrace-macro/tests/ui/err/has-arguments.rs b/minitrace-macro/tests/ui/err/has-arguments.rs deleted file mode 100644 index 38f2068a..00000000 --- a/minitrace-macro/tests/ui/err/has-arguments.rs +++ /dev/null @@ -1,6 +0,0 @@ -use minitrace::trace; - -#[trace(a, b)] -fn f() {} - -fn main() {} diff --git a/minitrace-macro/tests/ui/err/has-arguments.stderr b/minitrace-macro/tests/ui/err/has-arguments.stderr deleted file mode 100644 index 234fe9a1..00000000 --- a/minitrace-macro/tests/ui/err/has-arguments.stderr +++ /dev/null @@ -1,5 +0,0 @@ -error: expected string literal - --> tests/ui/err/has-arguments.rs:3:9 - | -3 | #[trace(a, b)] - | ^ From 6357e4b10ce2fa9affb033d2b25a95a68b27bb64 Mon Sep 17 00:00:00 2001 From: Mark Van de Vyver Date: Wed, 23 Mar 2022 23:00:59 +1100 Subject: [PATCH 36/36] Evolve: Rebase on upstream master Signed-off-by: Mark Van de Vyver --- minitrace-macro/tests/ui/err/has-expr-argument.stderr | 2 +- minitrace-macro/tests/ui/err/has-no-arguments.stderr | 7 ------- minitrace-macro/tests/ui/err/has-too-many-arguments.stderr | 2 +- .../ui/err/name-is-not-an-assignment-expression.stderr | 2 +- minitrace-macro/tests/ui/err/trace-interleaved.stderr | 2 +- minitrace-macro/tests/ui/{err => ok}/has-no-arguments.rs | 0 6 files changed, 4 insertions(+), 11 deletions(-) delete mode 100644 minitrace-macro/tests/ui/err/has-no-arguments.stderr rename minitrace-macro/tests/ui/{err => ok}/has-no-arguments.rs (100%) diff --git a/minitrace-macro/tests/ui/err/has-expr-argument.stderr b/minitrace-macro/tests/ui/err/has-expr-argument.stderr index ebdf3f52..e3460630 100644 --- a/minitrace-macro/tests/ui/err/has-expr-argument.stderr +++ b/minitrace-macro/tests/ui/err/has-expr-argument.stderr @@ -1,4 +1,4 @@ -error: expected string literal +error: expected `enter_on_poll = ` --> tests/ui/err/has-expr-argument.rs:3:9 | 3 | #[trace(true)] diff --git a/minitrace-macro/tests/ui/err/has-no-arguments.stderr b/minitrace-macro/tests/ui/err/has-no-arguments.stderr deleted file mode 100644 index 20f75cf6..00000000 --- a/minitrace-macro/tests/ui/err/has-no-arguments.stderr +++ /dev/null @@ -1,7 +0,0 @@ -error: expected at least one string literal - --> tests/ui/err/has-no-arguments.rs:5:1 - | -5 | #[trace] - | ^^^^^^^^ - | - = note: this error originates in the attribute macro `trace` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/minitrace-macro/tests/ui/err/has-too-many-arguments.stderr b/minitrace-macro/tests/ui/err/has-too-many-arguments.stderr index c3a7cd1a..03364047 100644 --- a/minitrace-macro/tests/ui/err/has-too-many-arguments.stderr +++ b/minitrace-macro/tests/ui/err/has-too-many-arguments.stderr @@ -1,4 +1,4 @@ -error: expected string literal +error: expected `enter_on_poll = ` --> tests/ui/err/has-too-many-arguments.rs:3:9 | 3 | #[trace(a, b)] diff --git a/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.stderr b/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.stderr index f58ba099..80dad9e9 100644 --- a/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.stderr +++ b/minitrace-macro/tests/ui/err/name-is-not-an-assignment-expression.stderr @@ -1,4 +1,4 @@ -error: expected string literal +error: expected `enter_on_poll = ` --> tests/ui/err/name-is-not-an-assignment-expression.rs:3:9 | 3 | #[trace(b)] diff --git a/minitrace-macro/tests/ui/err/trace-interleaved.stderr b/minitrace-macro/tests/ui/err/trace-interleaved.stderr index 587f1c2c..49ce11f0 100644 --- a/minitrace-macro/tests/ui/err/trace-interleaved.stderr +++ b/minitrace-macro/tests/ui/err/trace-interleaved.stderr @@ -1,4 +1,4 @@ -error: expected string literal +error: expected `enter_on_poll = ` --> tests/ui/err/trace-interleaved.rs:4:9 | 4 | #[trace(struct)] diff --git a/minitrace-macro/tests/ui/err/has-no-arguments.rs b/minitrace-macro/tests/ui/ok/has-no-arguments.rs similarity index 100% rename from minitrace-macro/tests/ui/err/has-no-arguments.rs rename to minitrace-macro/tests/ui/ok/has-no-arguments.rs