Create BroadcastReader based on quorum (#424)
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package io.emeraldpay.dshackle.reader
|
||||
|
||||
import io.emeraldpay.dshackle.quorum.BroadcastQuorum
|
||||
import io.emeraldpay.dshackle.quorum.CallQuorum
|
||||
import io.emeraldpay.dshackle.quorum.MaximumValueQuorum
|
||||
import io.emeraldpay.dshackle.quorum.QuorumRpcReader
|
||||
import io.emeraldpay.dshackle.reader.RpcReader.Result
|
||||
import io.emeraldpay.dshackle.upstream.Multistream
|
||||
@@ -65,7 +67,7 @@ interface RpcReaderFactory {
|
||||
|
||||
class Default : RpcReaderFactory {
|
||||
override fun create(data: RpcReaderData): RpcReader {
|
||||
if (data.method == "eth_sendRawTransaction" || data.method == "eth_getTransactionCount") {
|
||||
if (data.quorum is MaximumValueQuorum || data.quorum is BroadcastQuorum) {
|
||||
return BroadcastReader(data.multistream.getAll(), data.matcher, data.signer, data.quorum, data.tracer)
|
||||
}
|
||||
val apis = data.multistream.getApiSource(data.matcher)
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package io.emeraldpay.dshackle.reader
|
||||
|
||||
import io.emeraldpay.dshackle.quorum.BroadcastQuorum
|
||||
import io.emeraldpay.dshackle.quorum.MaximumValueQuorum
|
||||
import io.emeraldpay.dshackle.upstream.Multistream
|
||||
import io.emeraldpay.dshackle.upstream.Selector
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.params.ParameterizedTest
|
||||
import org.junit.jupiter.params.provider.Arguments
|
||||
import org.junit.jupiter.params.provider.MethodSource
|
||||
import org.mockito.kotlin.mock
|
||||
import org.springframework.cloud.sleuth.Tracer
|
||||
|
||||
class RpcReaderFactoryTest {
|
||||
private val defaultFactory = RpcReaderFactory.Default()
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
fun `create BroadcastReader for MaximumValueQuorum and BroadcastQuorum`(
|
||||
rpcReaderData: RpcReaderFactory.RpcReaderData,
|
||||
) {
|
||||
val reader = defaultFactory.create(rpcReaderData)
|
||||
|
||||
assertTrue(reader is BroadcastReader)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val ms = mock<Multistream>()
|
||||
private val tracer = mock<Tracer>()
|
||||
|
||||
@JvmStatic
|
||||
fun data(): List<Arguments> {
|
||||
return listOf(
|
||||
Arguments.of(
|
||||
RpcReaderFactory.RpcReaderData(
|
||||
ms,
|
||||
"method",
|
||||
Selector.empty,
|
||||
MaximumValueQuorum(),
|
||||
null,
|
||||
tracer,
|
||||
),
|
||||
),
|
||||
Arguments.of(
|
||||
RpcReaderFactory.RpcReaderData(
|
||||
ms,
|
||||
"method",
|
||||
Selector.empty,
|
||||
BroadcastQuorum(),
|
||||
null,
|
||||
tracer,
|
||||
),
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user