Skip to content
This repository was archived by the owner on May 1, 2023. It is now read-only.

Commit cf86855

Browse files
Delyan Kratunovfacebook-github-bot
Delyan Kratunov
authored andcommitted
Restore TraceControlTest without powermock static verifications
Summary: Turns out, TraceControlTest doesn't *actually* need to verify buffer writes, so it can just be refactored and re-enabled. Reviewed By: aandreyeu Differential Revision: D33433827 fbshipit-source-id: 799da01715f0faf96babf36adf4b6b1576c87c05
1 parent d4b1ff0 commit cf86855

File tree

1 file changed

+20
-122
lines changed

1 file changed

+20
-122
lines changed

java/test/com/facebook/profilo/core/TraceControlTest.java

Lines changed: 20 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -20,64 +20,44 @@
2020
import static org.mockito.ArgumentMatchers.anyInt;
2121
import static org.mockito.ArgumentMatchers.anyLong;
2222
import static org.mockito.ArgumentMatchers.anyObject;
23-
import static org.mockito.ArgumentMatchers.anyString;
2423
import static org.mockito.ArgumentMatchers.eq;
2524
import static org.mockito.ArgumentMatchers.isNull;
2625
import static org.mockito.ArgumentMatchers.same;
27-
import static org.mockito.Mockito.never;
26+
import static org.mockito.Mockito.mock;
2827
import static org.mockito.Mockito.times;
2928
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;
3430

3531
import android.util.SparseArray;
3632
import com.facebook.fbtrace.utils.FbTraceId;
3733
import com.facebook.profilo.config.ConfigImpl;
3834
import com.facebook.profilo.config.ConfigParams;
3935
import com.facebook.profilo.config.ConfigTraceConfig;
40-
import com.facebook.profilo.entries.EntryType;
4136
import com.facebook.profilo.ipc.TraceConfigExtras;
4237
import com.facebook.profilo.ipc.TraceContext;
43-
import com.facebook.profilo.logger.BufferLogger;
44-
import com.facebook.profilo.logger.Logger;
4538
import com.facebook.profilo.logger.Trace;
46-
import com.facebook.profilo.mmapbuf.core.Buffer;
4739
import com.facebook.profilo.mmapbuf.core.MmapBufferManager;
4840
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;
5142
import com.facebook.testing.robolectric.v4.WithTestDefaultsRunner;
5243
import java.io.File;
44+
import java.io.IOException;
5345
import java.util.TreeMap;
5446
import org.junit.Before;
55-
import org.junit.Ignore;
47+
import org.junit.Rule;
5648
import org.junit.Test;
5749
import org.junit.runner.RunWith;
5850
import org.mockito.ArgumentCaptor;
59-
import org.powermock.core.classloader.annotations.PrepareForTest;
60-
import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
6151
import org.powermock.reflect.Whitebox;
6252

6353
@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 {
7655

7756
private static final int TRACE_CONTROLLER_ID = 100;
7857
private static final long TEST_TRACE_ID = 10000l;
7958

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);
8161
private static final String TEST_INT_PARAM_KEY = "TEST_KEY";
8262
private static final int TEST_INT_PARAM_VALUE = 0x100;
8363

@@ -89,13 +69,11 @@ public class TraceControlTest extends PowerMockTest {
8969
private TraceContext mTraceContext;
9070
private final ConfigTraceConfig mTraceConfig = new ConfigTraceConfig();
9171
private final ConfigImpl mConfig = new ConfigImpl(0, new ConfigParams(), mTraceConfig);
92-
private Buffer mBuffer;
9372

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);
9874

75+
@Before
76+
public void setUp() throws IOException {
9977
mNonconfigurableController = mock(TraceController.class);
10078

10179
when(mNonconfigurableController.isConfigurable()).thenReturn(false);
@@ -130,17 +108,19 @@ public void setUp() throws Exception {
130108
mTraceConfig.params = new ConfigParams();
131109
mTraceConfig.params.intParams = new TreeMap<>();
132110
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};
137112

138113
mControllers = mock(SparseArray.class);
139114
setController(mNonconfigurableController);
140115

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+
141122
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);
144124
mTraceControl =
145125
new TraceControl(
146126
mControllers,
@@ -152,25 +132,8 @@ public void setUp() throws Exception {
152132
null);
153133

154134
mTraceControlHandler = mock(TraceControlHandler.class);
135+
when(mTraceControlHandler.onTraceStart(any(TraceContext.class), anyInt())).thenReturn(true);
155136
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-");
174137
}
175138

176139
private void setController(TraceController controller) {
@@ -212,9 +175,7 @@ public void testStartFiltersOutControllers() {
212175
assertNotTracing();
213176

214177
assertThat(mTraceControl.startTrace(TRACE_CONTROLLER_ID, 0, new Object(), 0)).isTrue();
215-
/*
216178
assertTracing();
217-
*/
218179
}
219180

220181
@Test(expected = RuntimeException.class)
@@ -344,17 +305,6 @@ public void testStartWritesControlEvent() {
344305
int flags = 0xFACEB00C & ~Trace.FLAG_MEMORY_ONLY; // MEMORY_ONLY trace is special
345306
assertThat(mTraceControl.startTrace(TRACE_CONTROLLER_ID, flags, new Object(), 0)).isTrue();
346307

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-
358308
verify(mTraceControlHandler).onTraceStart(any(TraceContext.class), anyInt());
359309
}
360310

@@ -363,27 +313,6 @@ public void testStartBlackBoxRecordingTrace() {
363313
int flags = Trace.FLAG_MEMORY_ONLY;
364314
assertThat(mTraceControl.startTrace(TRACE_CONTROLLER_ID, flags, new Object(), 0)).isTrue();
365315

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-
387316
verify(mTraceControlHandler).onTraceStart(any(TraceContext.class), eq(Integer.MAX_VALUE));
388317
assertMemoryOnlyTracing();
389318
}
@@ -432,30 +361,9 @@ public void testAbortWritesControlEvent() {
432361
assertThat(mTraceControl.startTrace(TRACE_CONTROLLER_ID, 0, context, 0)).isTrue();
433362
mTraceControl.abortTrace(TRACE_CONTROLLER_ID, context, 0);
434363

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-
446364
verify(mTraceControlHandler).onTraceAbort(any(TraceContext.class));
447365
}
448366

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-
459367
@Test
460368
public void testConfigChangeInsideTraceContinuesTrace() {
461369
Object context = new Object();
@@ -478,16 +386,6 @@ public void testCleanupByID() {
478386
assertNotTracing();
479387

480388
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());
491389
}
492390

493391
@Test

0 commit comments

Comments
 (0)