@@ -8,6 +8,9 @@ cluster:
|
||||
upstreams:
|
||||
- id: test-1
|
||||
chain: ethereum
|
||||
methods:
|
||||
enabled:
|
||||
- name: debug_traceTransaction
|
||||
options:
|
||||
disable-validation: true
|
||||
connection:
|
||||
|
||||
@@ -5,9 +5,11 @@ import com.fasterxml.jackson.databind.ObjectMapper
|
||||
class BlocksHandler implements CallHandler {
|
||||
|
||||
ObjectMapper objectMapper
|
||||
ResourceResponse resourceResponse
|
||||
|
||||
BlocksHandler(ObjectMapper objectMapper) {
|
||||
this.objectMapper = objectMapper
|
||||
this.resourceResponse = new ResourceResponse(objectMapper)
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -18,22 +20,13 @@ class BlocksHandler implements CallHandler {
|
||||
if (method == "eth_getBlockByNumber") {
|
||||
String blockId = params[0]
|
||||
println("get block $blockId")
|
||||
def result = getResource("block-${blockId}.json")
|
||||
return Result.ok(result)
|
||||
return resourceResponse.respondWith("block-${blockId}.json")
|
||||
}
|
||||
if (method == "eth_getTransactionByHash") {
|
||||
String txId = params[0]
|
||||
def result = getResource("tx-${txId}.json")
|
||||
return Result.ok(result)
|
||||
return resourceResponse.respondWith("tx-${txId}.json")
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
Object getResource(String name) {
|
||||
String json = BlocksHandler.class.getResourceAsStream("/" + name)?.text
|
||||
if (json == null) {
|
||||
return null
|
||||
}
|
||||
return objectMapper.readValue(json, Map)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package testing
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
|
||||
class ResourceResponse {
|
||||
|
||||
ObjectMapper objectMapper
|
||||
|
||||
ResourceResponse(ObjectMapper objectMapper) {
|
||||
this.objectMapper = objectMapper
|
||||
}
|
||||
|
||||
Object getResource(String name) {
|
||||
String json = BlocksHandler.class.getResourceAsStream("/" + name)?.text
|
||||
if (json == null) {
|
||||
return null
|
||||
}
|
||||
return objectMapper.readValue(json, Map)
|
||||
}
|
||||
|
||||
CallHandler.Result respondWith(String name) {
|
||||
return CallHandler.Result.ok(getResource(name))
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,7 +13,7 @@ class SimpleUpstream {
|
||||
void prepare() {
|
||||
objectMapper = new ObjectMapper()
|
||||
|
||||
handlers << new TestcaseHandler()
|
||||
handlers << new TestcaseHandler(objectMapper)
|
||||
handlers << new CommonHandlers()
|
||||
handlers << new BlocksHandler(objectMapper)
|
||||
handlers << new InvalidCallHandler()
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
package testing
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
|
||||
class TestcaseHandler implements CallHandler {
|
||||
|
||||
ObjectMapper objectMapper
|
||||
ResourceResponse resourceResponse
|
||||
|
||||
TestcaseHandler(ObjectMapper objectMapper) {
|
||||
this.objectMapper = objectMapper
|
||||
this.resourceResponse = new ResourceResponse(objectMapper)
|
||||
}
|
||||
|
||||
@Override
|
||||
Result handle(String method, List<Object> params) {
|
||||
// https://github.com/emeraldpay/dshackle/issues/35
|
||||
@@ -9,6 +19,11 @@ class TestcaseHandler implements CallHandler {
|
||||
&& params[0].to?.toLowerCase() == "0x542156d51D10Db5acCB99f9Db7e7C91B74E80a2c".toLowerCase()) {
|
||||
return Result.error(-32015, "VM execution error.")
|
||||
}
|
||||
// https://github.com/emeraldpay/dshackle/issues/43
|
||||
if (method == "debug_traceTransaction"
|
||||
&& params[0].toLowerCase() == "0xd949bc0fe1a5d16f4522bc47933554dcc4ada0493ff71ee1973b2410257af9fe".toLowerCase()) {
|
||||
return resourceResponse.respondWith("trace-0xd949bc.json")
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
6966
testing/simple-upstream/src/main/resources/trace-0xd949bc.json
Normal file
6966
testing/simple-upstream/src/main/resources/trace-0xd949bc.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user