Skip to content

Commit

Permalink
pss: remove ut and rewrite tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jpeletier committed Sep 17, 2019
1 parent 6469432 commit c56f5a3
Show file tree
Hide file tree
Showing 13 changed files with 104 additions and 76 deletions.
2 changes: 0 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ require (
github.com/docker/go-units v0.4.0 // indirect
github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c // indirect
github.com/elastic/gosigar v0.0.0-20180330100440-37f05ff46ffa // indirect
github.com/epiclabs-io/diff3 v0.0.0-20181217103619-05282cece609 // indirect
github.com/epiclabs-io/ut v0.0.0-20190416122157-8da7fe4b4947
github.com/ethereum/go-ethereum v1.9.2
github.com/ethersphere/go-sw3 v0.1.0
github.com/fatih/color v1.7.0 // indirect
Expand Down
4 changes: 0 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,6 @@ github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt
github.com/elastic/gosigar v0.0.0-20180330100440-37f05ff46ffa h1:o8OuEkracbk3qH6GvlI6XpEN1HTSxkzOG42xZpfDv/s=
github.com/elastic/gosigar v0.0.0-20180330100440-37f05ff46ffa/go.mod h1:cdorVVzy1fhmEqmtgqkoE3bYtCfSCkVyjTyCIo22xvs=
github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
github.com/epiclabs-io/diff3 v0.0.0-20181217103619-05282cece609 h1:KHcpmcC/8cnCDXDm6SaCTajWF/vyUbBE1ovA27xYYEY=
github.com/epiclabs-io/diff3 v0.0.0-20181217103619-05282cece609/go.mod h1:tM499ZoH5jQRF3wlMnl59SJQwVYXIBdJRZa/K71p0IM=
github.com/epiclabs-io/ut v0.0.0-20190416122157-8da7fe4b4947 h1:5jyZq+mwwE90FnIyzAorlWF0Nrg8AB48KsDxofSAyBw=
github.com/epiclabs-io/ut v0.0.0-20190416122157-8da7fe4b4947/go.mod h1:Sm6PW7b/nLOHEn3XxuUOXFYA4xFkLUnyAWUOcTGcRZ4=
github.com/ethereum/go-ethereum v1.9.2 h1:RMIHDO/diqXEgORSVzYx8xW9x2+S32PoAX5lQwya0Lw=
github.com/ethereum/go-ethereum v1.9.2/go.mod h1:PwpWDrCLZrV+tfrhqqF6kPknbISMHaJv9Ln3kPCZLwY=
github.com/ethersphere/go-sw3 v0.1.0 h1:XMaWxiBhFtrxfOel2tXmxuan3eCfFw/NcftV6sUVtIc=
Expand Down
39 changes: 26 additions & 13 deletions pss/message/flags_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,22 @@ package message_test
import (
"encoding/hex"
"fmt"
"reflect"
"testing"

"github.com/epiclabs-io/ut"
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethersphere/swarm/pss/message"
)

var bools = []bool{true, false}
var flagsFixture = map[string]string{
"r=false; s=false": "00",
"r=false; s=true": "01",
"r=true; s=false": "02",
"r=true; s=true": "03",
}

func TestFlags(tx *testing.T) {
t := ut.BeginTest(tx, false)
defer t.FinishTest()
func TestFlags(t *testing.T) {

for _, r := range bools {
for _, s := range bools {
Expand All @@ -24,25 +28,34 @@ func TestFlags(tx *testing.T) {
}
// Test encoding:
bytes, err := rlp.EncodeToBytes(&f)
t.Ok(err)
t.EqualsKey(fmt.Sprintf("r=%t; s=%t", r, s), hex.EncodeToString(bytes))
if err != nil {
t.Fatal(err)
}
expected := flagsFixture[fmt.Sprintf("r=%t; s=%t", r, s)]
actual := hex.EncodeToString(bytes)
if expected != actual {
t.Fatalf("Expected RLP encoding of the flags to be %s, got %s", expected, actual)
}

// Test decoding:

var f2 message.Flags
err = rlp.DecodeBytes(bytes, &f2)
t.Ok(err)
t.Equals(f, f2)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(f, f2) {
t.Fatalf("Expected RLP decoding to return the same object. Got %v", f2)
}
}
}

}

func TestFlagsErrors(tx *testing.T) {
t := ut.BeginTest(tx, false)
defer t.FinishTest()

func TestFlagsErrors(t *testing.T) {
var f2 message.Flags
err := rlp.DecodeBytes([]byte{0x82, 0xFF, 0xFF}, &f2)
t.MustFailWith(err, message.ErrIncorrectFlagsFieldLength)
if err != message.ErrIncorrectFlagsFieldLength {
t.Fatalf("Expected an message.ErrIncorrectFlagsFieldLength error. Got %v", err)
}
}
67 changes: 53 additions & 14 deletions pss/message/message_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,38 @@ package message_test

import (
"encoding/hex"
"fmt"
"math/rand"
"reflect"
"testing"

"github.com/epiclabs-io/ut"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethersphere/swarm/pss/message"
)

func TestMessage(tx *testing.T) {
t := ut.BeginTest(tx, false) // set to true to generate test results
defer t.FinishTest()
type messageFixture struct {
digest string
rlp string
stringer string
}

var messageFixtures = []messageFixture{{"4b34781cfa28a5ad653855567273675eabb8535461e57e4f4bfc81504d0a828d", "dd94fa12f92afbe00f8508d0e83bab9cf8cebf42e25e03808491273d4980", "PssMsg: Recipient: 0xfa12f92afbe00f8508d0e83bab9cf8cebf42e25e, Topic: 0x91273d49"},
{"7f076bc036335b5d587d48c985d1b6ef8cd7015d6e484d0c7a72faddaa2aceaa", "e794210fc7bb818639ac48a4c6afa2f1581a8b9525e2000184ba78973d8aa84f7f80296fda3fd8df", "PssMsg: Recipient: 0x210fc7bb818639ac48a4c6afa2f1581a8b9525e2, Topic: 0xba78973d"},
{"a3cb8298779bef44c33461f072c54391a39c09b7a726e55d60384d7484760559", "f194e2aadcd868ce028477f86e430140149b0300a9a5020284a6b46dd094f4b754a41bd4d5d11330e2924ff403c95bb84fa5", "PssMsg: Recipient: 0xe2aadcd868ce028477f86e430140149b0300a9a5, Topic: 0xa6b46dd0"},
{"a82a894a753dffad41330dc1abbc85e5bc1791c393eba682eaf3cee56e6b0d9a", "f83b9460f9e0fa212bac5db82b22cee5272ee19a067256000384f013aa4b9e2fb3c9afcd593f3c5d3a96fecc1b7672562cc1b8828888269264bb976ed2", "PssMsg: Recipient: 0x60f9e0fa212bac5db82b22cee5272ee19a067256, Topic: 0xf013aa4b"},
{"8ba6836253a10cf02e5031695ab39917e816b9677d53b4e4b2af5e439b05d362", "f845941dd4751f899d743d0780c9644375aae21132781803048426f57386a834dab59240ba3bcec68fd648a62ba94062413e5b5f89c0441b5809fff0a51dd1084e8f06fce30971", "PssMsg: Recipient: 0x1dd4751f899d743d0780c9644375aae211327818, Topic: 0x26f57386"},
}

func RandomArray(i, length int) []byte {
source := rand.NewSource(int64(i))
r := rand.New(source)
b := make([]byte, length)
for n := 0; n < length; n++ {
b[n] = byte(r.Intn(256))
}
return b
}
func TestMessage(t *testing.T) {

// generate some test messages deterministically
for i, topicString := range someTopics {
Expand All @@ -23,29 +43,48 @@ func TestMessage(tx *testing.T) {
}

msg := message.New(flags)
msg.To = ut.RandomArray(i, common.AddressLength)
msg.To = RandomArray(i, common.AddressLength)
msg.Expire = uint32(i)
msg.Topic = message.NewTopic([]byte(topicString))
msg.Payload = ut.RandomArray(i*9361, i*10)
msg.Payload = RandomArray(i*9361, i*10)

// test digest function:
digest := msg.Digest()
t.EqualsKey(fmt.Sprintf("msg%d-digest", i), hex.EncodeToString(digest[:]))

actual := hex.EncodeToString(digest[:])
expected := messageFixtures[i].digest
if expected != actual {
t.Fatalf("Expected digest to be %s, got %s", expected, actual)
}

// test stringer:
st := msg.String()
t.EqualsKey(fmt.Sprintf("msg%d-string", i), st)
expected = messageFixtures[i].stringer
actual = msg.String()
if expected != actual {
t.Fatalf("Expected stringer to return %s, got %s", expected, actual)
}

// Test RLP encoding:
bytes, err := rlp.EncodeToBytes(&msg)
t.Ok(err)
t.EqualsKey(fmt.Sprintf("msg%d-rlp", i), hex.EncodeToString(bytes))
if err != nil {
t.Fatal(err)
}

expected = messageFixtures[i].rlp
actual = hex.EncodeToString(bytes)
if expected != actual {
t.Fatalf("Expected RLP serialization to return %s, got %s", expected, actual)
}

// Test decoding:
var msg2 message.Message
err = rlp.DecodeBytes(bytes, &msg2)
t.Ok(err)
t.Equals(msg, &msg2)
if err != nil {
t.Fatal(err)
}

if !reflect.DeepEqual(msg, &msg2) {
t.Fatalf("Expected RLP decoding return %v, got %v", msg, &msg2)
}
}
}
6 changes: 0 additions & 6 deletions pss/message/testdata/TestFlags/results.json

This file was deleted.

17 changes: 0 additions & 17 deletions pss/message/testdata/TestMessage/results.json

This file was deleted.

7 changes: 0 additions & 7 deletions pss/message/testdata/TestTopic/results.json

This file was deleted.

1 change: 0 additions & 1 deletion pss/message/testdata/TestTopic/topic0.json

This file was deleted.

1 change: 0 additions & 1 deletion pss/message/testdata/TestTopic/topic1.json

This file was deleted.

1 change: 0 additions & 1 deletion pss/message/testdata/TestTopic/topic2.json

This file was deleted.

1 change: 0 additions & 1 deletion pss/message/testdata/TestTopic/topic3.json

This file was deleted.

1 change: 0 additions & 1 deletion pss/message/testdata/TestTopic/topic4.json

This file was deleted.

33 changes: 25 additions & 8 deletions pss/message/topic_test.go
Original file line number Diff line number Diff line change
@@ -1,28 +1,45 @@
package message_test

import (
"fmt"
"encoding/json"
"reflect"
"testing"

"github.com/epiclabs-io/ut"
"github.com/ethersphere/swarm/pss/message"
)

// test that topic conversion functions give predictable results
var someTopics = []string{"These", "are", "some", "topics", "A topic can be very long as well, longer than TopicLength"}
var fixtureTopicHash = []string{`"0x91273d49"`, `"0xba78973d"`, `"0xa6b46dd0"`, `"0xf013aa4b"`, `"0x26f57386"`}
var fixtureTopicStringer = []string{"0x91273d49", "0xba78973d", "0xa6b46dd0", "0xf013aa4b", "0x26f57386"}

func TestTopic(tx *testing.T) {
t := ut.BeginTest(tx, false) // set to true to generate test results
defer t.FinishTest()
func TestTopic(t *testing.T) {

for i, topicString := range someTopics {
topic := message.NewTopic([]byte(topicString))

// Test marshalling and unmarshalling the topic as JSON:
t.TestJSONMarshaller(fmt.Sprintf("topic%d.json", i), topic)
jsonBytes, err := json.Marshal(topic)
if err != nil {
t.Fatal(err)
}
expected := fixtureTopicHash[i]
actual := string(jsonBytes)
if expected != actual {
t.Fatalf("Expected JSON serialization to return %s, got %s", expected, actual)
}

var topic2 message.Topic
err = json.Unmarshal(jsonBytes, &topic2)
if !reflect.DeepEqual(topic, topic2) {
t.Fatalf("Expected JSON decoding to return the same object, got %v", topic2)
}

// test Stringer:
s := topic.String()
t.EqualsKey(fmt.Sprintf("topic%d", i), s)
expected = fixtureTopicStringer[i]
actual = topic.String()
if expected != actual {
t.Fatalf("Expected topic stringer to return %s, got %s", expected, actual)
}
}
}

0 comments on commit c56f5a3

Please sign in to comment.