fix style and tests
This commit is contained in:
@@ -27,7 +27,9 @@ class SubscribeNodeStatus(
|
|||||||
req.flatMapMany {
|
req.flatMapMany {
|
||||||
val knownUpstreams = ConcurrentHashMap<String, Boolean>()
|
val knownUpstreams = ConcurrentHashMap<String, Boolean>()
|
||||||
// send known upstreams details immediately
|
// send known upstreams details immediately
|
||||||
val descriptions = Flux.fromIterable(multistreams.all().flatMap { multiStream ->
|
val descriptions = Flux.fromIterable(
|
||||||
|
multistreams.all()
|
||||||
|
.flatMap { multiStream ->
|
||||||
multiStream.getAll().map { up ->
|
multiStream.getAll().map { up ->
|
||||||
NodeStatusResponse.newBuilder()
|
NodeStatusResponse.newBuilder()
|
||||||
.setNodeId(up.getId())
|
.setNodeId(up.getId())
|
||||||
@@ -35,18 +37,24 @@ class SubscribeNodeStatus(
|
|||||||
.setStatus(buildStatus(up.getStatus(), up.getHead().getCurrentHeight()))
|
.setStatus(buildStatus(up.getStatus(), up.getHead().getCurrentHeight()))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// subscribe on head/status updates for known upstreams
|
// subscribe on head/status updates for known upstreams
|
||||||
val upstreamUpdates = Flux.merge(multistreams.all().flatMap { ms ->
|
val upstreamUpdates = Flux.merge(
|
||||||
|
multistreams.all()
|
||||||
|
.flatMap { ms ->
|
||||||
ms.getAll().map { up ->
|
ms.getAll().map { up ->
|
||||||
knownUpstreams[up.getId()] = true
|
knownUpstreams[up.getId()] = true
|
||||||
subscribeUpstreamUpdates(ms.chain, up)
|
subscribeUpstreamUpdates(ms.chain, up)
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// subscribe on head/status updates for just added upstreams
|
// subscribe on head/status updates for just added upstreams
|
||||||
val muliStreamUpdates = Flux.merge(multistreams.all().map { ms ->
|
val muliStreamUpdates = Flux.merge(
|
||||||
|
multistreams.all()
|
||||||
|
.map { ms ->
|
||||||
ms.subscribeAddedUpstreams()
|
ms.subscribeAddedUpstreams()
|
||||||
.distinctUntilChanged {
|
.distinctUntilChanged {
|
||||||
it.getId()
|
it.getId()
|
||||||
@@ -60,10 +68,12 @@ class SubscribeNodeStatus(
|
|||||||
.setDescription(buildDescription(ms.chain, it))
|
.setDescription(buildDescription(ms.chain, it))
|
||||||
.setStatus(buildStatus(it.getStatus(), it.getHead().getCurrentHeight()))
|
.setStatus(buildStatus(it.getStatus(), it.getHead().getCurrentHeight()))
|
||||||
.build()
|
.build()
|
||||||
), subscribeUpstreamUpdates(ms.chain, it)
|
),
|
||||||
|
subscribeUpstreamUpdates(ms.chain, it)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
Flux.concat(descriptions, Flux.merge(upstreamUpdates, muliStreamUpdates))
|
Flux.concat(descriptions, Flux.merge(upstreamUpdates, muliStreamUpdates))
|
||||||
}
|
}
|
||||||
@@ -96,14 +106,16 @@ class SubscribeNodeStatus(
|
|||||||
private fun buildDescription(chain: Chain, up: Upstream): NodeDescription.Builder =
|
private fun buildDescription(chain: Chain, up: Upstream): NodeDescription.Builder =
|
||||||
NodeDescription.newBuilder()
|
NodeDescription.newBuilder()
|
||||||
.setChain(Common.ChainRef.forNumber(chain.id))
|
.setChain(Common.ChainRef.forNumber(chain.id))
|
||||||
.addAllLabels(up.getLabels().flatMap { labels ->
|
.addAllLabels(
|
||||||
|
up.getLabels().flatMap { labels ->
|
||||||
labels.map {
|
labels.map {
|
||||||
BlockchainOuterClass.Label.newBuilder()
|
BlockchainOuterClass.Label.newBuilder()
|
||||||
.setName(it.key)
|
.setName(it.key)
|
||||||
.setValue(it.value)
|
.setValue(it.value)
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
)
|
||||||
.addAllSupportedMethods(up.getMethods().getSupportedMethods())
|
.addAllSupportedMethods(up.getMethods().getSupportedMethods())
|
||||||
|
|
||||||
private fun buildStatus(status: UpstreamAvailability, height: Long?): NodeStatus.Builder =
|
private fun buildStatus(status: UpstreamAvailability, height: Long?): NodeStatus.Builder =
|
||||||
|
|||||||
@@ -86,6 +86,11 @@ class MultistreamHolderMock implements MultistreamHolder {
|
|||||||
return upstreams.containsKey(chain)
|
return upstreams.containsKey(chain)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
List<Multistream> all() {
|
||||||
|
return upstreams.values().toList()
|
||||||
|
}
|
||||||
|
|
||||||
static class EthereumMultistreamMock extends EthereumPosMultiStream {
|
static class EthereumMultistreamMock extends EthereumPosMultiStream {
|
||||||
|
|
||||||
EthereumCachingReader customReader = null
|
EthereumCachingReader customReader = null
|
||||||
|
|||||||
Reference in New Issue
Block a user