Fix solana subs (#449)

This commit is contained in:
KirillPamPam
2024-04-04 14:15:30 +04:00
committed by GitHub
parent 2f5963f4d6
commit 44fab693c5
2 changed files with 37 additions and 1 deletions

View File

@@ -38,7 +38,7 @@ class GenericSubscriptionConnect(
@Suppress("UNCHECKED_CAST")
override fun createConnection(): Flux<Any> {
return conn.subscribe(ChainRequest(topic, ListParams(getParams(params))))
return conn.subscribe(ChainRequest(topic, ListParams(getParams(params) as List<Any>)))
.data
.timeout(Duration.ofSeconds(60), Mono.empty())
.onErrorResume { Mono.empty() } as Flux<Any>

View File

@@ -0,0 +1,36 @@
package io.emeraldpay.dshackle.upstream.generic
import io.emeraldpay.dshackle.upstream.ChainRequest
import io.emeraldpay.dshackle.upstream.ethereum.WsSubscriptions
import io.emeraldpay.dshackle.upstream.rpcclient.ListParams
import org.junit.jupiter.api.Test
import org.mockito.Mockito.verify
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import reactor.core.publisher.Flux
import reactor.test.StepVerifier
import java.time.Duration
import java.util.concurrent.atomic.AtomicReference
class GenericSubscriptionConnectTest {
@Test
fun `test request param is flat list`() {
val param: List<Any> = listOf("all")
val topic = "topic"
val response = "hello".toByteArray()
val ws = mock<WsSubscriptions> {
on { subscribe(ChainRequest(topic, ListParams(param))) } doReturn
WsSubscriptions.SubscribeData(Flux.just(response), "", AtomicReference(""))
}
val genericSubscriptionConnect = GenericSubscriptionConnect(ws, topic, param)
StepVerifier.create(genericSubscriptionConnect.createConnection())
.expectNext(response)
.expectComplete()
.verify(Duration.ofSeconds(1))
verify(ws).subscribe(ChainRequest(topic, ListParams(param)))
}
}