problem: no response on invalid request to proxy

rel: #43
This commit is contained in:
Igor Artamonov
2020-08-09 18:42:23 -04:00
parent 8bd13bdb0f
commit 2abe3023b6
13 changed files with 7148 additions and 26 deletions

View File

@@ -8,6 +8,9 @@ cluster:
upstreams:
- id: test-1
chain: ethereum
methods:
enabled:
- name: debug_traceTransaction
options:
disable-validation: true
connection:

View File

@@ -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)
}
}

View File

@@ -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))
}
}

View File

@@ -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()

View File

@@ -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
}
}

File diff suppressed because it is too large Load Diff