20
20
import static org .mockito .ArgumentMatchers .anyInt ;
21
21
import static org .mockito .ArgumentMatchers .anyLong ;
22
22
import static org .mockito .ArgumentMatchers .anyObject ;
23
- import static org .mockito .ArgumentMatchers .anyString ;
24
23
import static org .mockito .ArgumentMatchers .eq ;
25
24
import static org .mockito .ArgumentMatchers .isNull ;
26
25
import static org .mockito .ArgumentMatchers .same ;
27
- import static org .mockito .Mockito .never ;
26
+ import static org .mockito .Mockito .mock ;
28
27
import static org .mockito .Mockito .times ;
29
28
import static org .mockito .Mockito .verify ;
30
- import static org .powermock .api .mockito .PowerMockito .mock ;
31
- import static org .powermock .api .mockito .PowerMockito .mockStatic ;
32
- import static org .powermock .api .mockito .PowerMockito .verifyStatic ;
33
- import static org .powermock .api .mockito .PowerMockito .when ;
29
+ import static org .mockito .Mockito .when ;
34
30
35
31
import android .util .SparseArray ;
36
32
import com .facebook .fbtrace .utils .FbTraceId ;
37
33
import com .facebook .profilo .config .ConfigImpl ;
38
34
import com .facebook .profilo .config .ConfigParams ;
39
35
import com .facebook .profilo .config .ConfigTraceConfig ;
40
- import com .facebook .profilo .entries .EntryType ;
41
36
import com .facebook .profilo .ipc .TraceConfigExtras ;
42
37
import com .facebook .profilo .ipc .TraceContext ;
43
- import com .facebook .profilo .logger .BufferLogger ;
44
- import com .facebook .profilo .logger .Logger ;
45
38
import com .facebook .profilo .logger .Trace ;
46
- import com .facebook .profilo .mmapbuf .core .Buffer ;
47
39
import com .facebook .profilo .mmapbuf .core .MmapBufferManager ;
48
40
import com .facebook .profilo .util .TestConfigProvider ;
49
- import com .facebook .profilo .writer .NativeTraceWriter ;
50
- import com .facebook .testing .powermock .PowerMockTest ;
41
+ import com .facebook .profilo .util .TraceContextRule ;
51
42
import com .facebook .testing .robolectric .v4 .WithTestDefaultsRunner ;
52
43
import java .io .File ;
44
+ import java .io .IOException ;
53
45
import java .util .TreeMap ;
54
46
import org .junit .Before ;
55
- import org .junit .Ignore ;
47
+ import org .junit .Rule ;
56
48
import org .junit .Test ;
57
49
import org .junit .runner .RunWith ;
58
50
import org .mockito .ArgumentCaptor ;
59
- import org .powermock .core .classloader .annotations .PrepareForTest ;
60
- import org .powermock .core .classloader .annotations .SuppressStaticInitializationFor ;
61
51
import org .powermock .reflect .Whitebox ;
62
52
63
53
@ RunWith (WithTestDefaultsRunner .class )
64
- @ PrepareForTest ({
65
- Logger .class ,
66
- TraceControl .class ,
67
- ProvidersRegistry .class ,
68
- })
69
- @ SuppressStaticInitializationFor ({
70
- "com.facebook.profilo.logger.BufferLogger" ,
71
- "com.facebook.profilo.mmapbuf.Buffer" ,
72
- "com.facebook.profilo.mmapbuf.MmapBufferManager" ,
73
- })
74
- @ Ignore
75
- public class TraceControlTest extends PowerMockTest {
54
+ public class TraceControlTest {
76
55
77
56
private static final int TRACE_CONTROLLER_ID = 100 ;
78
57
private static final long TEST_TRACE_ID = 10000l ;
79
58
80
- private static final int PROVIDER_TEST = ProvidersRegistry .newProvider ("test" );
59
+ public static final String PROVIDER_NAME = "test" ;
60
+ private static final int PROVIDER_TEST = ProvidersRegistry .newProvider (PROVIDER_NAME );
81
61
private static final String TEST_INT_PARAM_KEY = "TEST_KEY" ;
82
62
private static final int TEST_INT_PARAM_VALUE = 0x100 ;
83
63
@@ -89,13 +69,11 @@ public class TraceControlTest extends PowerMockTest {
89
69
private TraceContext mTraceContext ;
90
70
private final ConfigTraceConfig mTraceConfig = new ConfigTraceConfig ();
91
71
private final ConfigImpl mConfig = new ConfigImpl (0 , new ConfigParams (), mTraceConfig );
92
- private Buffer mBuffer ;
93
72
94
- @ Before
95
- public void setUp () throws Exception {
96
- mockStatic (BufferLogger .class );
97
- mockStatic (ProvidersRegistry .class );
73
+ @ Rule public TraceContextRule mTraceContextRule = new TraceContextRule (PROVIDER_TEST );
98
74
75
+ @ Before
76
+ public void setUp () throws IOException {
99
77
mNonconfigurableController = mock (TraceController .class );
100
78
101
79
when (mNonconfigurableController .isConfigurable ()).thenReturn (false );
@@ -130,17 +108,19 @@ public void setUp() throws Exception {
130
108
mTraceConfig .params = new ConfigParams ();
131
109
mTraceConfig .params .intParams = new TreeMap <>();
132
110
mTraceConfig .params .intParams .put (TEST_INT_PARAM_KEY , TEST_INT_PARAM_VALUE );
133
- mTraceConfig .enabledProviders = new String [] {"test_provider" };
134
-
135
- when (ProvidersRegistry .getBitMaskFor (anyString ())).thenReturn (1 );
136
- when (ProvidersRegistry .getBitMaskFor (any (Iterable .class ))).thenReturn (1 );
111
+ mTraceConfig .enabledProviders = new String [] {PROVIDER_NAME };
137
112
138
113
mControllers = mock (SparseArray .class );
139
114
setController (mNonconfigurableController );
140
115
116
+ mTraceContext = mTraceContextRule .getContext ();
117
+ mTraceContext .traceId = TEST_TRACE_ID ;
118
+ mTraceContext .encodedTraceId = FbTraceId .encode (TEST_TRACE_ID );
119
+ mTraceContext .controller = 1111 ;
120
+ mTraceContext .mTraceConfigExtras = new TraceConfigExtras (mConfig , 0 );
121
+
141
122
MmapBufferManager manager = mock (MmapBufferManager .class );
142
- mBuffer = mock (Buffer .class );
143
- when (manager .allocateBuffer (anyInt (), anyBoolean ())).thenReturn (mBuffer );
123
+ when (manager .allocateBuffer (anyInt (), anyBoolean ())).thenReturn (mTraceContext .mainBuffer );
144
124
mTraceControl =
145
125
new TraceControl (
146
126
mControllers ,
@@ -152,25 +132,8 @@ public void setUp() throws Exception {
152
132
null );
153
133
154
134
mTraceControlHandler = mock (TraceControlHandler .class );
135
+ when (mTraceControlHandler .onTraceStart (any (TraceContext .class ), anyInt ())).thenReturn (true );
155
136
Whitebox .setInternalState (mTraceControl , "mTraceControlHandler" , mTraceControlHandler );
156
-
157
- mTraceContext =
158
- new TraceContext (
159
- TEST_TRACE_ID ,
160
- FbTraceId .encode (TEST_TRACE_ID ),
161
- mConfig ,
162
- 1111 ,
163
- new Object (),
164
- new Object (),
165
- 1 ,
166
- PROVIDER_TEST ,
167
- 1 ,
168
- 222 ,
169
- TraceConfigExtras .EMPTY ,
170
- /*buffer*/ null ,
171
- new Buffer [] {},
172
- new File ("." ),
173
- "prefix-" );
174
137
}
175
138
176
139
private void setController (TraceController controller ) {
@@ -212,9 +175,7 @@ public void testStartFiltersOutControllers() {
212
175
assertNotTracing ();
213
176
214
177
assertThat (mTraceControl .startTrace (TRACE_CONTROLLER_ID , 0 , new Object (), 0 )).isTrue ();
215
- /*
216
178
assertTracing ();
217
- */
218
179
}
219
180
220
181
@ Test (expected = RuntimeException .class )
@@ -344,17 +305,6 @@ public void testStartWritesControlEvent() {
344
305
int flags = 0xFACEB00C & ~Trace .FLAG_MEMORY_ONLY ; // MEMORY_ONLY trace is special
345
306
assertThat (mTraceControl .startTrace (TRACE_CONTROLLER_ID , flags , new Object (), 0 )).isTrue ();
346
307
347
- verifyStatic (BufferLogger .class );
348
- long traceId = anyLong ();
349
- BufferLogger .writeAndWakeupTraceWriter (
350
- any (NativeTraceWriter .class ),
351
- same (mBuffer ),
352
- traceId ,
353
- EntryType .TRACE_START ,
354
- anyInt (),
355
- eq (flags ),
356
- traceId );
357
-
358
308
verify (mTraceControlHandler ).onTraceStart (any (TraceContext .class ), anyInt ());
359
309
}
360
310
@@ -363,27 +313,6 @@ public void testStartBlackBoxRecordingTrace() {
363
313
int flags = Trace .FLAG_MEMORY_ONLY ;
364
314
assertThat (mTraceControl .startTrace (TRACE_CONTROLLER_ID , flags , new Object (), 0 )).isTrue ();
365
315
366
- verifyStatic (BufferLogger .class , times (1 ));
367
- long traceId = anyLong ();
368
- BufferLogger .writeAndWakeupTraceWriter (
369
- any (NativeTraceWriter .class ),
370
- same (mBuffer ),
371
- traceId ,
372
- EntryType .TRACE_START ,
373
- anyInt (),
374
- eq (flags ),
375
- traceId );
376
- verifyStatic (BufferLogger .class , never ());
377
- long traceId1 = anyLong ();
378
- BufferLogger .writeAndWakeupTraceWriter (
379
- any (NativeTraceWriter .class ),
380
- same (mBuffer ),
381
- traceId1 ,
382
- EntryType .TRACE_BACKWARDS ,
383
- 0 ,
384
- eq (flags ),
385
- traceId1 );
386
-
387
316
verify (mTraceControlHandler ).onTraceStart (any (TraceContext .class ), eq (Integer .MAX_VALUE ));
388
317
assertMemoryOnlyTracing ();
389
318
}
@@ -432,30 +361,9 @@ public void testAbortWritesControlEvent() {
432
361
assertThat (mTraceControl .startTrace (TRACE_CONTROLLER_ID , 0 , context , 0 )).isTrue ();
433
362
mTraceControl .abortTrace (TRACE_CONTROLLER_ID , context , 0 );
434
363
435
- verifyStatic (BufferLogger .class );
436
- BufferLogger .writeStandardEntry (
437
- same (mBuffer ),
438
- anyInt (),
439
- EntryType .TRACE_ABORT ,
440
- anyInt (),
441
- anyInt (),
442
- anyInt (),
443
- anyInt (),
444
- anyLong ());
445
-
446
364
verify (mTraceControlHandler ).onTraceAbort (any (TraceContext .class ));
447
365
}
448
366
449
- @ Test
450
- public void testConfigChangeOutsideTraceWritesNothing () {
451
- TestConfigProvider provider = new TestConfigProvider ();
452
- mTraceControl .setConfig (provider .getFullConfig ());
453
-
454
- verifyStatic (BufferLogger .class , never ());
455
- BufferLogger .writeStandardEntry (
456
- any (Buffer .class ), anyInt (), anyInt (), anyInt (), anyInt (), anyInt (), anyInt (), anyLong ());
457
- }
458
-
459
367
@ Test
460
368
public void testConfigChangeInsideTraceContinuesTrace () {
461
369
Object context = new Object ();
@@ -478,16 +386,6 @@ public void testCleanupByID() {
478
386
assertNotTracing ();
479
387
480
388
verify (mTraceControlHandler ).onTraceAbort (any (TraceContext .class ));
481
- verifyStatic (BufferLogger .class , never ());
482
- BufferLogger .writeStandardEntry (
483
- any (Buffer .class ),
484
- anyInt (),
485
- EntryType .TRACE_ABORT ,
486
- anyInt (),
487
- anyInt (),
488
- anyInt (),
489
- anyInt (),
490
- anyLong ());
491
389
}
492
390
493
391
@ Test
0 commit comments