@@ -13,33 +13,171 @@ trap 'kill $PING_LOOP_PID' ERR 1 2 3 6
13
13
RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
14
14
bindir=` cargo run -p collector --bin collector install_next`
15
15
16
- # Profile with eprintln.
16
+ # ----------------------------------------------------------------------------
17
+ # Test the profilers
18
+ # ----------------------------------------------------------------------------
19
+
20
+ # time-passes.
17
21
RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
18
22
cargo run -p collector --bin collector -- \
19
- profile_local eprintln $bindir /rustc Test \
23
+ profile_local time-passes $bindir /rustc Test \
24
+ --builds Check \
25
+ --cargo $bindir /cargo \
26
+ --include helloworld \
27
+ --runs Full
28
+ test -f results/Ztp-Test-helloworld-Check-Full
29
+ grep -q " time:.*total" results/Ztp-Test-helloworld-Check-Full
30
+
31
+ # perf-record: TODO
32
+
33
+ # oprofile: TODO
34
+
35
+ # Cachegrind.
36
+ RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
37
+ cargo run -p collector --bin collector -- \
38
+ profile_local cachegrind $bindir /rustc Test \
39
+ --builds Check \
40
+ --cargo $bindir /cargo \
41
+ --include helloworld \
42
+ --runs Full
43
+ test -f results/cgout-Test-helloworld-Check-Full
44
+ grep -q " events: Ir" results/cgout-Test-helloworld-Check-Full
45
+ test -f results/cgann-Test-helloworld-Check-Full
46
+ # The Valgrind available on on GitHub is 3.13, which doesn't support the
47
+ # `--show-percs=yes` option that we use. So the `cgann` file ends up empty,
48
+ # because `cg_annotate` errors out and produces no stdout, but `collector` does
49
+ # not check its exit code for failure and so does not fail itself.
50
+ # grep -q "PROGRAM TOTALS" results/cgann-Test-helloworld-Check-Full
51
+
52
+ # Callgrind.
53
+ RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
54
+ cargo run -p collector --bin collector -- \
55
+ profile_local callgrind $bindir /rustc Test \
56
+ --builds Check \
57
+ --cargo $bindir /cargo \
58
+ --include helloworld \
59
+ --runs Full
60
+ test -f results/clgout-Test-helloworld-Check-Full
61
+ grep -q " creator: callgrind" results/clgout-Test-helloworld-Check-Full
62
+ test -f results/clgann-Test-helloworld-Check-Full
63
+ # See the explanation on the `cgann` file for Cachegrind; it holds here too.
64
+ # grep -q "Profile data file" results/clgann-Test-helloworld-Check-Full
65
+
66
+ # DHAT: needs Valgrind 3.15, but only Valgrind 3.13 is available on GitHub.
67
+
68
+ # Massif.
69
+ RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
70
+ cargo run -p collector --bin collector -- \
71
+ profile_local massif $bindir /rustc Test \
72
+ --builds Check \
20
73
--cargo $bindir /cargo \
21
74
--include helloworld \
22
75
--runs Full
76
+ test -f results/msout-Test-helloworld-Check-Full
77
+ grep -q " snapshot=0" results/msout-Test-helloworld-Check-Full
23
78
24
- # Check that Check/Debug/Opt files are present, and that Doc files aren't
25
- # present, becuase they're not done by default.
79
+ # eprintln.
80
+ RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
81
+ cargo run -p collector --bin collector -- \
82
+ profile_local eprintln $bindir /rustc Test \
83
+ --builds Check \
84
+ --cargo $bindir /cargo \
85
+ --include helloworld \
86
+ --runs Full
26
87
test -f results/eprintln-Test-helloworld-Check-Full
27
- test -f results/eprintln-Test-helloworld-Debug-Full
28
- test -f results/eprintln-Test-helloworld-Opt-Full
29
- test ! -e results/eprintln-Test-helloworld-Doc-Full
88
+ grep -q " Checking helloworld" results/eprintln-Test-helloworld-Check-Full
30
89
31
- # Profile with llvm-lines.
90
+ # llvm-lines. `Debug` not `Check` because it doesn't support `Check` builds .
32
91
RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
33
92
cargo run -p collector --bin collector -- \
34
93
profile_local llvm-lines $bindir /rustc Test \
35
94
--builds Debug \
36
95
--cargo $bindir /cargo \
37
- --include futures \
96
+ --include helloworld \
38
97
--runs Full
98
+ test -f results/ll-Test-helloworld-Debug-Full
99
+ grep -q " Lines.*Copies.*Function name" results/ll-Test-helloworld-Debug-Full
100
+
101
+ # ----------------------------------------------------------------------------
102
+ # Test option handling
103
+ # ----------------------------------------------------------------------------
104
+
105
+ # With `--builds` unspecified, `Check`/`Debug`/`Opt` files must be present, and
106
+ # `Doc` files must not be present.
107
+ RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
108
+ cargo run -p collector --bin collector -- \
109
+ profile_local eprintln $bindir /rustc Builds1 \
110
+ --cargo $bindir /cargo \
111
+ --include helloworld
112
+ test -f results/eprintln-Builds1-helloworld-Check-Full
113
+ test -f results/eprintln-Builds1-helloworld-Check-IncrFull
114
+ test -f results/eprintln-Builds1-helloworld-Check-IncrPatched0
115
+ test -f results/eprintln-Builds1-helloworld-Check-IncrUnchanged
116
+ test -f results/eprintln-Builds1-helloworld-Debug-Full
117
+ test -f results/eprintln-Builds1-helloworld-Debug-IncrFull
118
+ test -f results/eprintln-Builds1-helloworld-Debug-IncrPatched0
119
+ test -f results/eprintln-Builds1-helloworld-Debug-IncrUnchanged
120
+ test -f results/eprintln-Builds1-helloworld-Opt-Full
121
+ test -f results/eprintln-Builds1-helloworld-Opt-IncrFull
122
+ test -f results/eprintln-Builds1-helloworld-Opt-IncrPatched0
123
+ test -f results/eprintln-Builds1-helloworld-Opt-IncrUnchanged
124
+ test ! -e results/eprintln-Builds1-helloworld-Doc-Full
125
+ test ! -e results/eprintln-Builds1-helloworld-Doc-IncrFull
126
+ test ! -e results/eprintln-Builds1-helloworld-Doc-IncrPatched0
127
+ test ! -e results/eprintln-Builds1-helloworld-Doc-IncrUnchanged
128
+
129
+ # With `--builds Doc` specified, `Check`/`Debug`/`Opt` files must not be
130
+ # present, and `Doc` files must be present (but not for incremental runs).
131
+ RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
132
+ cargo run -p collector --bin collector -- \
133
+ profile_local eprintln $bindir /rustc Builds2 \
134
+ --builds Doc \
135
+ --cargo $bindir /cargo \
136
+ --include helloworld
137
+ test ! -e results/eprintln-Builds2-helloworld-Check-Full
138
+ test ! -e results/eprintln-Builds2-helloworld-Check-IncrFull
139
+ test ! -e results/eprintln-Builds2-helloworld-Check-IncrUnchanged
140
+ test ! -e results/eprintln-Builds2-helloworld-Check-IncrPatched0
141
+ test ! -e results/eprintln-Builds2-helloworld-Debug-Full
142
+ test ! -e results/eprintln-Builds2-helloworld-Debug-IncrFull
143
+ test ! -e results/eprintln-Builds2-helloworld-Debug-IncrUnchanged
144
+ test ! -e results/eprintln-Builds2-helloworld-Debug-IncrPatched0
145
+ test ! -e results/eprintln-Builds2-helloworld-Opt-Full
146
+ test ! -e results/eprintln-Builds2-helloworld-Opt-IncrFull
147
+ test ! -e results/eprintln-Builds2-helloworld-Opt-IncrUnchanged
148
+ test ! -e results/eprintln-Builds2-helloworld-Opt-IncrPatched0
149
+ test -f results/eprintln-Builds2-helloworld-Doc-Full
150
+ test ! -f results/eprintln-Builds2-helloworld-Doc-IncrFull
151
+ test ! -f results/eprintln-Builds2-helloworld-Doc-IncrPatched0
152
+ test ! -f results/eprintln-Builds2-helloworld-Doc-IncrUnchanged
153
+
154
+ # With `--runs IncrUnchanged` specified, `IncrFull` and `IncrUnchanged` files
155
+ # must be present.
156
+ RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
157
+ cargo run -p collector --bin collector -- \
158
+ profile_local eprintln $bindir /rustc Runs1 \
159
+ --builds Check \
160
+ --cargo $bindir /cargo \
161
+ --include helloworld \
162
+ --runs IncrUnchanged
163
+ test ! -e results/eprintln-Runs1-helloworld-Check-Full
164
+ test -f results/eprintln-Runs1-helloworld-Check-IncrFull
165
+ test -f results/eprintln-Runs1-helloworld-Check-IncrUnchanged
166
+ test ! -e results/eprintln-Runs1-helloworld-Check-IncrPatched0
39
167
40
- # Check the output is present and looks something like it should.
41
- test -f results/ll-Test-futures-Debug-Full
42
- grep -q " Lines.*Copies.*Function name" results/ll-Test-futures-Debug-Full
168
+ # With `--runs IncrPatched` specified, `IncrFull` and `IncrPatched0` files must
169
+ # be present.
170
+ RUST_BACKTRACE=1 RUST_LOG=raw_cargo_messages=trace,collector=debug,rust_sysroot=debug \
171
+ cargo run -p collector --bin collector -- \
172
+ profile_local eprintln $bindir /rustc Runs2 \
173
+ --builds Check \
174
+ --cargo $bindir /cargo \
175
+ --include helloworld \
176
+ --runs IncrPatched
177
+ test ! -e results/eprintln-Runs2-helloworld-Check-Full
178
+ test -f results/eprintln-Runs2-helloworld-Check-IncrFull
179
+ test ! -e results/eprintln-Runs2-helloworld-Check-IncrUnchanged
180
+ test -f results/eprintln-Runs2-helloworld-Check-IncrPatched0
43
181
44
182
kill $PING_LOOP_PID
45
183
exit 0
0 commit comments