aboutsummaryrefslogtreecommitdiffstats
path: root/whisper
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2015-04-15 15:50:31 +0800
committerPéter Szilágyi <peterke@gmail.com>2015-04-15 15:50:31 +0800
commitbcf41797cacac35879d6bc153d3e4ce3cd9896f0 (patch)
treef3b377dac41c47e1f854fe3a8ffa4f16a577137e /whisper
parent4fb7ab5d090a49837ca50318fab468b056f2ec9f (diff)
downloaddexon-bcf41797cacac35879d6bc153d3e4ce3cd9896f0.tar
dexon-bcf41797cacac35879d6bc153d3e4ce3cd9896f0.tar.gz
dexon-bcf41797cacac35879d6bc153d3e4ce3cd9896f0.tar.bz2
dexon-bcf41797cacac35879d6bc153d3e4ce3cd9896f0.tar.lz
dexon-bcf41797cacac35879d6bc153d3e4ce3cd9896f0.tar.xz
dexon-bcf41797cacac35879d6bc153d3e4ce3cd9896f0.tar.zst
dexon-bcf41797cacac35879d6bc153d3e4ce3cd9896f0.zip
whisper: global message expiration tests, polishes
Diffstat (limited to 'whisper')
-rw-r--r--whisper/common_test.go3
-rw-r--r--whisper/peer_test.go36
-rw-r--r--whisper/whisper_test.go26
3 files changed, 49 insertions, 16 deletions
diff --git a/whisper/common_test.go b/whisper/common_test.go
index 4e221d6b1..76e6463e6 100644
--- a/whisper/common_test.go
+++ b/whisper/common_test.go
@@ -8,9 +8,8 @@ import (
"io/ioutil"
"math/rand"
- "github.com/ethereum/go-ethereum/p2p"
-
"github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/p2p/discover"
)
diff --git a/whisper/peer_test.go b/whisper/peer_test.go
index c9092dd23..5f24504da 100644
--- a/whisper/peer_test.go
+++ b/whisper/peer_test.go
@@ -38,6 +38,20 @@ func startTestPeer() *testPeer {
}
}
+func startTestPeerInited() (*testPeer, error) {
+ peer := startTestPeer()
+
+ if err := p2p.ExpectMsg(peer.stream, statusCode, []uint64{protocolVersion}); err != nil {
+ peer.stream.Close()
+ return nil, err
+ }
+ if err := p2p.SendItems(peer.stream, statusCode, protocolVersion); err != nil {
+ peer.stream.Close()
+ return nil, err
+ }
+ return peer, nil
+}
+
func TestPeerStatusMessage(t *testing.T) {
tester := startTestPeer()
@@ -102,15 +116,12 @@ func TestPeerHandshakeSuccess(t *testing.T) {
func TestPeerSend(t *testing.T) {
// Start a tester and execute the handshake
- tester := startTestPeer()
+ tester, err := startTestPeerInited()
+ if err != nil {
+ t.Fatalf("failed to start initialized peer: %v", err)
+ }
defer tester.stream.Close()
- if err := p2p.ExpectMsg(tester.stream, statusCode, []uint64{protocolVersion}); err != nil {
- t.Fatalf("status message mismatch: %v", err)
- }
- if err := p2p.SendItems(tester.stream, statusCode, protocolVersion); err != nil {
- t.Fatalf("failed to send status: %v", err)
- }
// Construct a message and inject into the tester
message := NewMessage([]byte("peer broadcast test message"))
envelope, err := message.Wrap(DefaultPoW, Options{
@@ -138,15 +149,12 @@ func TestPeerSend(t *testing.T) {
func TestPeerDeliver(t *testing.T) {
// Start a tester and execute the handshake
- tester := startTestPeer()
+ tester, err := startTestPeerInited()
+ if err != nil {
+ t.Fatalf("failed to start initialized peer: %v", err)
+ }
defer tester.stream.Close()
- if err := p2p.ExpectMsg(tester.stream, statusCode, []uint64{protocolVersion}); err != nil {
- t.Fatalf("status message mismatch: %v", err)
- }
- if err := p2p.SendItems(tester.stream, statusCode, protocolVersion); err != nil {
- t.Fatalf("failed to send status: %v", err)
- }
// Watch for all inbound messages
arrived := make(chan struct{}, 1)
tester.client.Watch(Filter{
diff --git a/whisper/whisper_test.go b/whisper/whisper_test.go
index df27a945e..c072ba26b 100644
--- a/whisper/whisper_test.go
+++ b/whisper/whisper_test.go
@@ -156,3 +156,29 @@ func testBroadcast(anonymous bool, t *testing.T) {
}
}
}
+
+func TestMessageExpiration(t *testing.T) {
+ // Start the single node cluster and inject a dummy message
+ node := startTestCluster(1)[0]
+
+ message := NewMessage([]byte("expiring message"))
+ envelope, err := message.Wrap(DefaultPoW, Options{
+ TTL: time.Second,
+ })
+ if err != nil {
+ t.Fatalf("failed to wrap message: %v", err)
+ }
+ if err := node.Send(envelope); err != nil {
+ t.Fatalf("failed to inject message: %v", err)
+ }
+ // Check that the message is inside the cache
+ if _, ok := node.messages[envelope.Hash()]; !ok {
+ t.Fatalf("message not found in cache")
+ }
+ // Wait for expiration and check cache again
+ time.Sleep(time.Second) // wait for expiration
+ time.Sleep(expirationTicks) // wait for cleanup cycle
+ if _, ok := node.messages[envelope.Hash()]; ok {
+ t.Fatalf("message not expired from cache")
+ }
+}