2
2
//!
3
3
//! These tests ensure that the instrumentation for tokio
4
4
//! synchronization primitives is correct.
5
+ #![ allow( unknown_lints, unexpected_cfgs) ]
6
+ #![ warn( rust_2018_idioms) ]
7
+ #![ cfg( all( tokio_unstable, feature = "tracing" , target_has_atomic = "64" ) ) ]
5
8
6
9
use tokio:: sync;
7
10
use tracing_mock:: { expect, subscriber} ;
@@ -14,19 +17,23 @@ async fn test_barrier_creates_span() {
14
17
15
18
let size_event = expect:: event ( )
16
19
. with_target ( "runtime::resource::state_update" )
17
- . with_fields ( expect:: field ( "size" ) . with_value ( & 1u64 ) ) ;
20
+ . with_fields ( expect:: field ( "size" ) . with_value ( & 1_u64 ) ) ;
18
21
19
22
let arrived_event = expect:: event ( )
20
23
. with_target ( "runtime::resource::state_update" )
21
- . with_fields ( expect:: field ( "arrived" ) . with_value ( & 0 ) ) ;
24
+ . with_fields ( expect:: field ( "arrived" ) . with_value ( & 0_i64 ) ) ;
22
25
23
26
let ( subscriber, handle) = subscriber:: mock ( )
24
- . new_span ( barrier_span. clone ( ) . with_explicit_parent ( None ) )
25
- . enter ( barrier_span. clone ( ) )
27
+ . new_span (
28
+ barrier_span
29
+ . clone ( )
30
+ . with_ancestry ( expect:: is_explicit_root ( ) ) ,
31
+ )
32
+ . enter ( & barrier_span)
26
33
. event ( size_event)
27
34
. event ( arrived_event)
28
- . exit ( barrier_span. clone ( ) )
29
- . drop_span ( barrier_span)
35
+ . exit ( & barrier_span)
36
+ . drop_span ( & barrier_span)
30
37
. run_with_handle ( ) ;
31
38
32
39
{
@@ -57,16 +64,20 @@ async fn test_mutex_creates_span() {
57
64
. with_fields ( expect:: field ( "permits.op" ) . with_value ( & "override" ) ) ;
58
65
59
66
let ( subscriber, handle) = subscriber:: mock ( )
60
- . new_span ( mutex_span. clone ( ) . with_explicit_parent ( None ) )
61
- . enter ( mutex_span. clone ( ) )
67
+ . new_span ( mutex_span. clone ( ) . with_ancestry ( expect :: is_explicit_root ( ) ) )
68
+ . enter ( & mutex_span)
62
69
. event ( locked_event)
63
- . new_span ( batch_semaphore_span. clone ( ) . with_explicit_parent ( None ) )
64
- . enter ( batch_semaphore_span. clone ( ) )
70
+ . new_span (
71
+ batch_semaphore_span
72
+ . clone ( )
73
+ . with_ancestry ( expect:: is_explicit_root ( ) ) ,
74
+ )
75
+ . enter ( & batch_semaphore_span)
65
76
. event ( batch_semaphore_permits_event)
66
- . exit ( batch_semaphore_span. clone ( ) )
67
- . exit ( mutex_span. clone ( ) )
68
- . drop_span ( mutex_span)
69
- . drop_span ( batch_semaphore_span)
77
+ . exit ( & batch_semaphore_span)
78
+ . exit ( & mutex_span)
79
+ . drop_span ( & mutex_span)
80
+ . drop_span ( & batch_semaphore_span)
70
81
. run_with_handle ( ) ;
71
82
72
83
{
@@ -79,7 +90,9 @@ async fn test_mutex_creates_span() {
79
90
80
91
#[ tokio:: test]
81
92
async fn test_oneshot_creates_span ( ) {
93
+ let oneshot_span_id = expect:: id ( ) ;
82
94
let oneshot_span = expect:: span ( )
95
+ . with_id ( oneshot_span_id. clone ( ) )
83
96
. named ( "runtime.resource" )
84
97
. with_target ( "tokio::sync::oneshot" ) ;
85
98
@@ -113,7 +126,9 @@ async fn test_oneshot_creates_span() {
113
126
. with_fields ( expect:: field ( "value_received" ) . with_value ( & false ) )
114
127
. with_fields ( expect:: field ( "value_received.op" ) . with_value ( & "override" ) ) ;
115
128
129
+ let async_op_span_id = expect:: id ( ) ;
116
130
let async_op_span = expect:: span ( )
131
+ . with_id ( async_op_span_id. clone ( ) )
117
132
. named ( "runtime.resource.async_op" )
118
133
. with_target ( "tokio::sync::oneshot" ) ;
119
134
@@ -122,34 +137,46 @@ async fn test_oneshot_creates_span() {
122
137
. with_target ( "tokio::sync::oneshot" ) ;
123
138
124
139
let ( subscriber, handle) = subscriber:: mock ( )
125
- . new_span ( oneshot_span. clone ( ) . with_explicit_parent ( None ) )
126
- . enter ( oneshot_span. clone ( ) )
140
+ . new_span (
141
+ oneshot_span
142
+ . clone ( )
143
+ . with_ancestry ( expect:: is_explicit_root ( ) ) ,
144
+ )
145
+ . enter ( & oneshot_span)
127
146
. event ( initial_tx_dropped_event)
128
- . exit ( oneshot_span. clone ( ) )
129
- . enter ( oneshot_span. clone ( ) )
147
+ . exit ( & oneshot_span)
148
+ . enter ( & oneshot_span)
130
149
. event ( initial_rx_dropped_event)
131
- . exit ( oneshot_span. clone ( ) )
132
- . enter ( oneshot_span. clone ( ) )
150
+ . exit ( & oneshot_span)
151
+ . enter ( & oneshot_span)
133
152
. event ( value_sent_event)
134
- . exit ( oneshot_span. clone ( ) )
135
- . enter ( oneshot_span. clone ( ) )
153
+ . exit ( & oneshot_span)
154
+ . enter ( & oneshot_span)
136
155
. event ( value_received_event)
137
- . exit ( oneshot_span. clone ( ) )
138
- . enter ( oneshot_span. clone ( ) )
139
- . new_span ( async_op_span. clone ( ) )
140
- . exit ( oneshot_span. clone ( ) )
141
- . enter ( async_op_span. clone ( ) )
142
- . new_span ( async_op_poll_span. clone ( ) )
143
- . exit ( async_op_span. clone ( ) )
144
- . enter ( oneshot_span. clone ( ) )
156
+ . exit ( & oneshot_span)
157
+ . enter ( & oneshot_span)
158
+ . new_span (
159
+ async_op_span
160
+ . clone ( )
161
+ . with_ancestry ( expect:: has_contextual_parent ( & oneshot_span_id) ) ,
162
+ )
163
+ . exit ( & oneshot_span)
164
+ . enter ( & async_op_span)
165
+ . new_span (
166
+ async_op_poll_span
167
+ . clone ( )
168
+ . with_ancestry ( expect:: has_contextual_parent ( & async_op_span_id) ) ,
169
+ )
170
+ . exit ( & async_op_span)
171
+ . enter ( & oneshot_span)
145
172
. event ( final_tx_dropped_event)
146
- . exit ( oneshot_span. clone ( ) )
147
- . enter ( oneshot_span. clone ( ) )
173
+ . exit ( & oneshot_span)
174
+ . enter ( & oneshot_span)
148
175
. event ( final_rx_dropped_event)
149
- . exit ( oneshot_span. clone ( ) )
176
+ . exit ( & oneshot_span)
150
177
. drop_span ( oneshot_span)
151
178
. drop_span ( async_op_span)
152
- . drop_span ( async_op_poll_span)
179
+ . drop_span ( & async_op_poll_span)
153
180
. run_with_handle ( ) ;
154
181
155
182
{
@@ -176,7 +203,7 @@ async fn test_rwlock_creates_span() {
176
203
177
204
let current_readers_event = expect:: event ( )
178
205
. with_target ( "runtime::resource::state_update" )
179
- . with_fields ( expect:: field ( "current_readers" ) . with_value ( & 0 ) ) ;
206
+ . with_fields ( expect:: field ( "current_readers" ) . with_value ( & 0_i64 ) ) ;
180
207
181
208
let batch_semaphore_span = expect:: span ( )
182
209
. named ( "runtime.resource" )
@@ -188,7 +215,11 @@ async fn test_rwlock_creates_span() {
188
215
. with_fields ( expect:: field ( "permits.op" ) . with_value ( & "override" ) ) ;
189
216
190
217
let ( subscriber, handle) = subscriber:: mock ( )
191
- . new_span ( rwlock_span. clone ( ) . with_explicit_parent ( None ) )
218
+ . new_span (
219
+ rwlock_span
220
+ . clone ( )
221
+ . with_ancestry ( expect:: is_explicit_root ( ) ) ,
222
+ )
192
223
. enter ( rwlock_span. clone ( ) )
193
224
. event ( max_readers_event)
194
225
. event ( write_locked_event)
@@ -228,7 +259,11 @@ async fn test_semaphore_creates_span() {
228
259
. with_fields ( expect:: field ( "permits.op" ) . with_value ( & "override" ) ) ;
229
260
230
261
let ( subscriber, handle) = subscriber:: mock ( )
231
- . new_span ( semaphore_span. clone ( ) . with_explicit_parent ( None ) )
262
+ . new_span (
263
+ semaphore_span
264
+ . clone ( )
265
+ . with_ancestry ( expect:: is_explicit_root ( ) ) ,
266
+ )
232
267
. enter ( semaphore_span. clone ( ) )
233
268
. new_span ( batch_semaphore_span. clone ( ) )
234
269
. enter ( batch_semaphore_span. clone ( ) )
0 commit comments