mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-10 04:51:20 +00:00
85 lines
1.7 KiB
Go
85 lines
1.7 KiB
Go
|
package sentinel
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/ledgerwatch/erigon/cmd/lightclient/sentinel/communication"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func NewMockGossipManager() *GossipManager {
|
||
|
subs := map[string]*GossipSubscription{
|
||
|
"topic1": {
|
||
|
host: "host1",
|
||
|
},
|
||
|
"topic3": {
|
||
|
host: "host2",
|
||
|
},
|
||
|
"topic2": {
|
||
|
host: "host3",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
return &GossipManager{
|
||
|
ch: make(chan *communication.GossipContext, 1),
|
||
|
subscriptions: subs,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestCloseTopic(t *testing.T) {
|
||
|
gm := NewMockGossipManager()
|
||
|
|
||
|
testCases := []struct {
|
||
|
topic string
|
||
|
}{
|
||
|
{"topic1"},
|
||
|
{"topic2"},
|
||
|
}
|
||
|
|
||
|
for _, testCase := range testCases {
|
||
|
// check that it has the topic before it closes it
|
||
|
if _, ok := gm.subscriptions[testCase.topic]; !ok {
|
||
|
t.Errorf("attempted to close invalid topic")
|
||
|
}
|
||
|
|
||
|
gm.CloseTopic(testCase.topic)
|
||
|
|
||
|
// check that topic has been deleted after closing
|
||
|
if _, ok := gm.subscriptions[testCase.topic]; ok {
|
||
|
t.Errorf("closed topic but topic still exists")
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestGetSubscription(t *testing.T) {
|
||
|
gm := NewMockGossipManager()
|
||
|
|
||
|
testCases := []struct {
|
||
|
topic string
|
||
|
expectedSub *GossipSubscription
|
||
|
expectedBool bool
|
||
|
}{
|
||
|
{
|
||
|
topic: "topic1",
|
||
|
expectedSub: gm.subscriptions["topic1"],
|
||
|
expectedBool: true,
|
||
|
},
|
||
|
{
|
||
|
topic: "topic2",
|
||
|
expectedSub: gm.subscriptions["topic2"],
|
||
|
expectedBool: true,
|
||
|
},
|
||
|
{
|
||
|
topic: "topic4",
|
||
|
expectedSub: nil,
|
||
|
expectedBool: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, testCase := range testCases {
|
||
|
subscription, ok := gm.GetSubscription(testCase.topic)
|
||
|
require.EqualValues(t, subscription, testCase.expectedSub)
|
||
|
require.EqualValues(t, ok, testCase.expectedBool)
|
||
|
}
|
||
|
}
|