fix whisper tests (#1867)
This commit is contained in:
parent
849492fda9
commit
cc8e786702
|
@ -22,6 +22,7 @@ import (
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"math"
|
"math"
|
||||||
mrand "math/rand"
|
mrand "math/rand"
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -945,7 +946,7 @@ func TestSendP2PDirect(t *testing.T) {
|
||||||
rwStub.messages = nil
|
rwStub.messages = nil
|
||||||
|
|
||||||
// send a batch of envelopes
|
// send a batch of envelopes
|
||||||
err = w.SendP2PDirect(peerW, env, env, env)
|
err = w.SendP2PDirect(peerW.ID(), env, env, env)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to send envelope with seed %d: %s.", seed, err)
|
t.Fatalf("failed to send envelope with seed %d: %s.", seed, err)
|
||||||
}
|
}
|
||||||
|
@ -1064,7 +1065,11 @@ func testConfirmationsHandshake(t *testing.T, expectConfirmations bool) {
|
||||||
time.AfterFunc(5*time.Second, func() {
|
time.AfterFunc(5*time.Second, func() {
|
||||||
rw1.Close()
|
rw1.Close()
|
||||||
})
|
})
|
||||||
require.NoError(t, p2p.ExpectMsg(rw1, statusCode, []interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, expectConfirmations}))
|
require.NoError(t, p2p.ExpectMsg(
|
||||||
|
rw1,
|
||||||
|
statusCode,
|
||||||
|
[]interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, expectConfirmations, RateLimits{}},
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConfirmationHadnshakeExtension(t *testing.T) {
|
func TestConfirmationHadnshakeExtension(t *testing.T) {
|
||||||
|
@ -1091,7 +1096,11 @@ func TestConfirmationReceived(t *testing.T) {
|
||||||
time.AfterFunc(5*time.Second, func() {
|
time.AfterFunc(5*time.Second, func() {
|
||||||
rw1.Close()
|
rw1.Close()
|
||||||
})
|
})
|
||||||
require.NoError(t, p2p.ExpectMsg(rw1, statusCode, []interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true}))
|
require.NoError(t, p2p.ExpectMsg(
|
||||||
|
rw1,
|
||||||
|
statusCode,
|
||||||
|
[]interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true, RateLimits{}},
|
||||||
|
))
|
||||||
require.NoError(t, p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, true))
|
require.NoError(t, p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, true))
|
||||||
|
|
||||||
e := Envelope{
|
e := Envelope{
|
||||||
|
@ -1126,8 +1135,15 @@ func TestMessagesResponseWithError(t *testing.T) {
|
||||||
err := w.HandlePeer(p, rw2)
|
err := w.HandlePeer(p, rw2)
|
||||||
errorc <- err
|
errorc <- err
|
||||||
}()
|
}()
|
||||||
require.NoError(t, p2p.ExpectMsg(rw1, statusCode, []interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true}))
|
require.NoError(t, p2p.ExpectMsg(
|
||||||
require.NoError(t, p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, true))
|
rw1,
|
||||||
|
statusCode,
|
||||||
|
[]interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true, RateLimits{}},
|
||||||
|
))
|
||||||
|
require.NoError(
|
||||||
|
t,
|
||||||
|
p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, true),
|
||||||
|
)
|
||||||
|
|
||||||
failed := Envelope{
|
failed := Envelope{
|
||||||
Expiry: uint32(time.Now().Add(time.Hour).Unix()),
|
Expiry: uint32(time.Now().Add(time.Hour).Unix()),
|
||||||
|
@ -1174,7 +1190,11 @@ func testConfirmationEvents(t *testing.T, envelope Envelope, envelopeErrors []En
|
||||||
time.AfterFunc(5*time.Second, func() {
|
time.AfterFunc(5*time.Second, func() {
|
||||||
rw1.Close()
|
rw1.Close()
|
||||||
})
|
})
|
||||||
require.NoError(t, p2p.ExpectMsg(rw1, statusCode, []interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true}))
|
require.NoError(t, p2p.ExpectMsg(
|
||||||
|
rw1,
|
||||||
|
statusCode,
|
||||||
|
[]interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true, RateLimits{}},
|
||||||
|
))
|
||||||
require.NoError(t, p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, true))
|
require.NoError(t, p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, true))
|
||||||
|
|
||||||
require.NoError(t, w.Send(&envelope))
|
require.NoError(t, w.Send(&envelope))
|
||||||
|
@ -1227,7 +1247,8 @@ func TestConfirmationEventsExtendedWithErrors(t *testing.T) {
|
||||||
Hash: e.Hash(),
|
Hash: e.Hash(),
|
||||||
Code: EnvelopeTimeNotSynced,
|
Code: EnvelopeTimeNotSynced,
|
||||||
Description: "test error",
|
Description: "test error",
|
||||||
}})
|
}},
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEventsWithoutConfirmation(t *testing.T) {
|
func TestEventsWithoutConfirmation(t *testing.T) {
|
||||||
|
@ -1250,7 +1271,11 @@ func TestEventsWithoutConfirmation(t *testing.T) {
|
||||||
time.AfterFunc(5*time.Second, func() {
|
time.AfterFunc(5*time.Second, func() {
|
||||||
rw1.Close()
|
rw1.Close()
|
||||||
})
|
})
|
||||||
require.NoError(t, p2p.ExpectMsg(rw1, statusCode, []interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true}))
|
require.NoError(t, p2p.ExpectMsg(
|
||||||
|
rw1,
|
||||||
|
statusCode,
|
||||||
|
[]interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true, RateLimits{}},
|
||||||
|
))
|
||||||
require.NoError(t, p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, false))
|
require.NoError(t, p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, false))
|
||||||
|
|
||||||
e := Envelope{
|
e := Envelope{
|
||||||
|
@ -1400,14 +1425,14 @@ func TestSyncMessages(t *testing.T) {
|
||||||
|
|
||||||
t.Run("WithoutPeer", func(t *testing.T) {
|
t.Run("WithoutPeer", func(t *testing.T) {
|
||||||
w := New(nil)
|
w := New(nil)
|
||||||
w.RegisterServer(&stubMailServer{})
|
w.RegisterMailServer(&stubMailServer{})
|
||||||
err := w.SyncMessages([]byte{0x01, 0x02}, SyncMailRequest{})
|
err := w.SyncMessages([]byte{0x01, 0x02}, SyncMailRequest{})
|
||||||
require.EqualError(t, err, "Could not find peer with ID: 0102")
|
require.EqualError(t, err, "Could not find peer with ID: 0102")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("WithInvalidRequest", func(t *testing.T) {
|
t.Run("WithInvalidRequest", func(t *testing.T) {
|
||||||
w := New(nil)
|
w := New(nil)
|
||||||
w.RegisterServer(&stubMailServer{})
|
w.RegisterMailServer(&stubMailServer{})
|
||||||
|
|
||||||
p := p2p.NewPeer(enode.ID{0x01}, "peer01", nil)
|
p := p2p.NewPeer(enode.ID{0x01}, "peer01", nil)
|
||||||
rw1, _ := p2p.MsgPipe()
|
rw1, _ := p2p.MsgPipe()
|
||||||
|
@ -1420,7 +1445,7 @@ func TestSyncMessages(t *testing.T) {
|
||||||
|
|
||||||
t.Run("AllGood", func(t *testing.T) {
|
t.Run("AllGood", func(t *testing.T) {
|
||||||
w := New(nil)
|
w := New(nil)
|
||||||
w.RegisterServer(&stubMailServer{})
|
w.RegisterMailServer(&stubMailServer{})
|
||||||
|
|
||||||
p := p2p.NewPeer(enode.ID{0x01}, "peer01", nil)
|
p := p2p.NewPeer(enode.ID{0x01}, "peer01", nil)
|
||||||
rw1, rw2 := p2p.MsgPipe()
|
rw1, rw2 := p2p.MsgPipe()
|
||||||
|
@ -1441,13 +1466,23 @@ func TestSendSyncResponse(t *testing.T) {
|
||||||
p := p2p.NewPeer(enode.ID{0x01}, "peer01", nil)
|
p := p2p.NewPeer(enode.ID{0x01}, "peer01", nil)
|
||||||
rw1, rw2 := p2p.MsgPipe()
|
rw1, rw2 := p2p.MsgPipe()
|
||||||
whisperPeer := newPeer(w, p, rw1)
|
whisperPeer := newPeer(w, p, rw1)
|
||||||
|
w.peers[whisperPeer] = struct{}{}
|
||||||
|
errC := make(chan error, 2)
|
||||||
|
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
wg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
err := w.SendSyncResponse(whisperPeer, SyncResponse{})
|
errC <- w.SendSyncResponse(whisperPeer.ID(), SyncResponse{})
|
||||||
require.NoError(t, err)
|
wg.Done()
|
||||||
|
}()
|
||||||
|
wg.Add(1)
|
||||||
|
go func() {
|
||||||
|
errC <- p2p.ExpectMsg(rw2, p2pSyncResponseCode, nil)
|
||||||
|
wg.Done()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
require.NoError(t, p2p.ExpectMsg(rw2, p2pSyncResponseCode, nil))
|
require.NoError(t, <-errC)
|
||||||
|
require.NoError(t, <-errC)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHandleP2PSyncRequestCode(t *testing.T) {
|
func TestHandleP2PSyncRequestCode(t *testing.T) {
|
||||||
|
@ -1455,10 +1490,10 @@ func TestHandleP2PSyncRequestCode(t *testing.T) {
|
||||||
peer := newPeer(nil, p2p.NewPeer(enode.ID{}, "test", nil), nil)
|
peer := newPeer(nil, p2p.NewPeer(enode.ID{}, "test", nil), nil)
|
||||||
|
|
||||||
mailMock := &mockMailServer{}
|
mailMock := &mockMailServer{}
|
||||||
mailMock.On("SyncMail", peer, mock.Anything).Return(nil)
|
mailMock.On("SyncMail", peer.ID(), mock.Anything).Return(nil)
|
||||||
|
|
||||||
w := New(nil)
|
w := New(nil)
|
||||||
w.RegisterServer(mailMock)
|
w.RegisterMailServer(mailMock)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
err := p2p.Send(rw1, p2pSyncRequestCode, SyncMailRequest{Limit: 10})
|
err := p2p.Send(rw1, p2pSyncRequestCode, SyncMailRequest{Limit: 10})
|
||||||
|
@ -1482,7 +1517,7 @@ func TestHandleP2PSyncRequestCodeWithInvalidRequest(t *testing.T) {
|
||||||
mailMock.On("SyncMail", peer, mock.Anything).Return(nil)
|
mailMock.On("SyncMail", peer, mock.Anything).Return(nil)
|
||||||
|
|
||||||
w := New(nil)
|
w := New(nil)
|
||||||
w.RegisterServer(mailMock)
|
w.RegisterMailServer(mailMock)
|
||||||
|
|
||||||
// create an invalid request
|
// create an invalid request
|
||||||
req := SyncMailRequest{Limit: 10, Lower: 10, Upper: 5}
|
req := SyncMailRequest{Limit: 10, Lower: 10, Upper: 5}
|
||||||
|
@ -1509,7 +1544,7 @@ func TestHandleP2PSyncResponseCode(t *testing.T) {
|
||||||
mailMock.On("Archive", mock.Anything)
|
mailMock.On("Archive", mock.Anything)
|
||||||
|
|
||||||
w := New(nil)
|
w := New(nil)
|
||||||
w.RegisterServer(mailMock)
|
w.RegisterMailServer(mailMock)
|
||||||
|
|
||||||
envelopesCount := 3
|
envelopesCount := 3
|
||||||
|
|
||||||
|
@ -1559,7 +1594,11 @@ func TestRateLimiterIntegration(t *testing.T) {
|
||||||
err := w.HandlePeer(p, rw2)
|
err := w.HandlePeer(p, rw2)
|
||||||
errorc <- err
|
errorc <- err
|
||||||
}()
|
}()
|
||||||
require.NoError(t, p2p.ExpectMsg(rw1, statusCode, []interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true}))
|
require.NoError(t, p2p.ExpectMsg(
|
||||||
|
rw1,
|
||||||
|
statusCode,
|
||||||
|
[]interface{}{ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), false, true, w.RateLimits()},
|
||||||
|
))
|
||||||
require.NoError(t, p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, true))
|
require.NoError(t, p2p.SendItems(rw1, statusCode, ProtocolVersion, math.Float64bits(w.MinPow()), w.BloomFilter(), true, true))
|
||||||
|
|
||||||
envelope := Envelope{
|
envelope := Envelope{
|
||||||
|
@ -1579,10 +1618,10 @@ func TestRateLimiterIntegration(t *testing.T) {
|
||||||
|
|
||||||
type stubMailServer struct{}
|
type stubMailServer struct{}
|
||||||
|
|
||||||
func (stubMailServer) Archive(*Envelope) {}
|
func (stubMailServer) Archive(*Envelope) {}
|
||||||
func (stubMailServer) DeliverMail(*Peer, *Envelope) {}
|
func (stubMailServer) DeliverMail([]byte, *Envelope) {}
|
||||||
func (stubMailServer) Deliver(*Peer, MessagesRequest) {}
|
func (stubMailServer) Deliver([]byte, MessagesRequest) {}
|
||||||
func (stubMailServer) SyncMail(*Peer, SyncMailRequest) error { return nil }
|
func (stubMailServer) SyncMail([]byte, SyncMailRequest) error { return nil }
|
||||||
|
|
||||||
type mockMailServer struct {
|
type mockMailServer struct {
|
||||||
mock.Mock
|
mock.Mock
|
||||||
|
@ -1592,15 +1631,15 @@ func (m *mockMailServer) Archive(env *Envelope) {
|
||||||
m.Called(env)
|
m.Called(env)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *mockMailServer) DeliverMail(p *Peer, env *Envelope) {
|
func (m *mockMailServer) DeliverMail(p []byte, env *Envelope) {
|
||||||
m.Called(p, env)
|
m.Called(p, env)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *mockMailServer) Deliver(p *Peer, r MessagesRequest) {
|
func (m *mockMailServer) Deliver(p []byte, r MessagesRequest) {
|
||||||
m.Called(p, r)
|
m.Called(p, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *mockMailServer) SyncMail(p *Peer, r SyncMailRequest) error {
|
func (m *mockMailServer) SyncMail(p []byte, r SyncMailRequest) error {
|
||||||
args := m.Called(p, r)
|
args := m.Called(p, r)
|
||||||
return args.Error(0)
|
return args.Error(0)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue