Skip to content

Commit b5de795

Browse files
implements test by priority
Signed-off-by: Sagar Khandagre <sagar.khandagre998@gmail.com>
1 parent eccea00 commit b5de795

File tree

3 files changed

+117
-0
lines changed

3 files changed

+117
-0
lines changed

ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/parameters/TransactionTraceParamsTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,26 @@ public void nonOpcodeTracerShouldRespectExplicitDisableMemory() throws Exception
8585
.describedAs("explicit disableMemory=true should be respected")
8686
.isFalse();
8787
}
88+
89+
@Test
90+
public void enableReturnDataTrueShouldSetTraceReturnData() throws Exception {
91+
final TransactionTraceParams params =
92+
MAPPER.readValue("{\"enableReturnData\": true}", TransactionTraceParams.class);
93+
final OpCodeTracerConfig config = params.traceOptions().opCodeTracerConfig();
94+
95+
assertThat(config.traceReturnData())
96+
.describedAs("enableReturnData: true should set traceReturnData to true")
97+
.isTrue();
98+
}
99+
100+
@Test
101+
public void missingEnableReturnDataShouldDefaultToFalse() throws Exception {
102+
final TransactionTraceParams params =
103+
MAPPER.readValue("{}", TransactionTraceParams.class);
104+
final OpCodeTracerConfig config = params.traceOptions().opCodeTracerConfig();
105+
106+
assertThat(config.traceReturnData())
107+
.describedAs("traceReturnData should default to false when enableReturnData is absent")
108+
.isFalse();
109+
}
88110
}

ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/StructLogTest.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,4 +246,64 @@ public void testToCompactHexWithLargeData() {
246246
String result = StructLog.toCompactHex(bytes, true);
247247
assertEquals("0x102030405060708090a", result, "Expected correct hex output for large data");
248248
}
249+
250+
// --- returnData tests ---
251+
252+
@Test
253+
public void returnDataShouldBePresentWhenCaptured() {
254+
when(traceFrame.getDepth()).thenReturn(0);
255+
when(traceFrame.getGasRemaining()).thenReturn(0L);
256+
when(traceFrame.getGasCost()).thenReturn(OptionalLong.empty());
257+
when(traceFrame.getGasRefund()).thenReturn(0L);
258+
when(traceFrame.getMemory()).thenReturn(Optional.empty());
259+
when(traceFrame.getOpcode()).thenReturn("PUSH1");
260+
when(traceFrame.getPc()).thenReturn(0);
261+
when(traceFrame.getStack()).thenReturn(Optional.empty());
262+
when(traceFrame.getStorage()).thenReturn(Optional.empty());
263+
when(traceFrame.getRevertReason()).thenReturn(Optional.empty());
264+
when(traceFrame.getReturnData()).thenReturn(Optional.of(Bytes.fromHexString("0xdeadbeef")));
265+
266+
final StructLog log = new StructLog(traceFrame);
267+
268+
assertThat(log.returnData()).isEqualTo("0xdeadbeef");
269+
}
270+
271+
@Test
272+
public void returnDataShouldBeNullWhenNotCaptured() {
273+
when(traceFrame.getDepth()).thenReturn(0);
274+
when(traceFrame.getGasRemaining()).thenReturn(0L);
275+
when(traceFrame.getGasCost()).thenReturn(OptionalLong.empty());
276+
when(traceFrame.getGasRefund()).thenReturn(0L);
277+
when(traceFrame.getMemory()).thenReturn(Optional.empty());
278+
when(traceFrame.getOpcode()).thenReturn("PUSH1");
279+
when(traceFrame.getPc()).thenReturn(0);
280+
when(traceFrame.getStack()).thenReturn(Optional.empty());
281+
when(traceFrame.getStorage()).thenReturn(Optional.empty());
282+
when(traceFrame.getRevertReason()).thenReturn(Optional.empty());
283+
when(traceFrame.getReturnData()).thenReturn(Optional.empty());
284+
285+
final StructLog log = new StructLog(traceFrame);
286+
287+
assertThat(log.returnData()).isNull();
288+
}
289+
290+
@Test
291+
public void returnDataShouldBeAbsentFromJsonWhenNotCaptured() throws Exception {
292+
when(traceFrame.getDepth()).thenReturn(0);
293+
when(traceFrame.getGasRemaining()).thenReturn(0L);
294+
when(traceFrame.getGasCost()).thenReturn(OptionalLong.empty());
295+
when(traceFrame.getGasRefund()).thenReturn(0L);
296+
when(traceFrame.getMemory()).thenReturn(Optional.empty());
297+
when(traceFrame.getOpcode()).thenReturn("PUSH1");
298+
when(traceFrame.getPc()).thenReturn(0);
299+
when(traceFrame.getStack()).thenReturn(Optional.empty());
300+
when(traceFrame.getStorage()).thenReturn(Optional.empty());
301+
when(traceFrame.getRevertReason()).thenReturn(Optional.empty());
302+
when(traceFrame.getReturnData()).thenReturn(Optional.empty());
303+
304+
final StructLog log = new StructLog(traceFrame);
305+
final String json = objectMapper.writeValueAsString(log);
306+
307+
assertThat(json).doesNotContain("returnData");
308+
}
249309
}

ethereum/core/src/test/java/org/hyperledger/besu/ethereum/vm/DebugOperationTracerTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,41 @@ void shouldNotRecordStorageWhenDisabled() {
222222
assertThat(traceFrame.getStorage()).isEmpty();
223223
}
224224

225+
@Test
226+
void shouldRecordReturnDataWhenEnabled() {
227+
final MessageFrame frame = validMessageFrame();
228+
frame.setReturnData(Bytes.fromHexString("0xdeadbeef"));
229+
final TraceFrame traceFrame =
230+
traceFrame(
231+
frame,
232+
OpCodeTracerConfigBuilder.createFrom(OpCodeTracerConfig.DEFAULT)
233+
.traceStorage(false)
234+
.traceMemory(false)
235+
.traceStack(false)
236+
.traceReturnData(true)
237+
.build(),
238+
false);
239+
assertThat(traceFrame.getReturnData()).isPresent();
240+
assertThat(traceFrame.getReturnData().get()).isEqualTo(Bytes.fromHexString("0xdeadbeef"));
241+
}
242+
243+
@Test
244+
void shouldNotRecordReturnDataWhenDisabled() {
245+
final MessageFrame frame = validMessageFrame();
246+
frame.setReturnData(Bytes.fromHexString("0xdeadbeef"));
247+
final TraceFrame traceFrame =
248+
traceFrame(
249+
frame,
250+
OpCodeTracerConfigBuilder.createFrom(OpCodeTracerConfig.DEFAULT)
251+
.traceStorage(false)
252+
.traceMemory(false)
253+
.traceStack(false)
254+
.traceReturnData(false)
255+
.build(),
256+
false);
257+
assertThat(traceFrame.getReturnData()).isEmpty();
258+
}
259+
225260
@Test
226261
void shouldNotAddGasWhenDisabled() {
227262
final TraceFrame traceFrame =

0 commit comments

Comments
 (0)