Skip to content
Snippets Groups Projects
Commit 13bf8163 authored by Jonah Husson's avatar Jonah Husson
Browse files

Add roundtracking and polltracker testing

parent e0a882b6
No related branches found
No related tags found
3 merge requests!510Release,!207WIP: Client Restructure,!203Symmetric broadcast
package cmix
import (
xxid "gitlab.com/xx_network/primitives/id"
"gitlab.com/xx_network/primitives/id/ephemeral"
"strings"
"testing"
"time"
)
func TestPollTracker(t *testing.T) {
// Create poll tracker
pt := newPollTracker()
// Init ID and first EID
id := xxid.NewIdFromString("zezima", xxid.User, t)
eid, _, _, err := ephemeral.GetId(id, 16, time.Now().UnixNano())
if err != nil {
t.Errorf("Failed to create eid for ID %s", id.String())
}
eid2, _, _, err := ephemeral.GetId(id, 16, time.Now().Add(time.Hour*24).UnixNano())
if err != nil {
t.Errorf("Failed to create second eid for ID %s", id.String())
}
// Track untracked id & eid
pt.Track(eid, id)
if i, ok := (*pt)[*id]; ok {
if j, ok2 := i[eid.Int64()]; ok2 {
if j != 1 {
t.Errorf("EID entry value not 1")
}
} else {
t.Errorf("No entry made for EID")
}
} else {
t.Errorf("No entry made for ID")
}
// track untracked eid on tracked id
pt.Track(eid2, id)
if i, ok := (*pt)[*id]; ok {
if j, ok2 := i[eid2.Int64()]; ok2 {
if j != 1 {
t.Errorf("EID entry value not 1")
}
} else {
t.Errorf("No entry made for EID")
}
} else {
t.Errorf("No entry made for ID")
}
// re-add tracked eid & id
pt.Track(eid2, id)
if i, ok := (*pt)[*id]; ok {
if j, ok2 := i[eid2.Int64()]; ok2 {
if j != 2 {
t.Errorf("EID entry value not 1")
}
} else {
t.Errorf("No entry made for EID")
}
} else {
t.Errorf("No entry made for ID")
}
// Check report output
s := strings.TrimSpace(pt.Report())
expectedReport := "Polled the network 3 times"
if s != expectedReport {
t.Errorf("Did not receive expected report\n\tExpected: %s\n\tReceived: %s\n", expectedReport, s)
}
}
......@@ -23,7 +23,7 @@ import (
type RoundState uint8
const (
Unchecked = iota
Unchecked RoundState = iota
Unknown
NoMessageAvailable
MessageAvailable
......
package cmix
import (
"gitlab.com/xx_network/primitives/id"
"testing"
)
func TestRoundTracker(t *testing.T) {
rt := NewRoundTracker()
rid := id.Round(2)
rt.denote(rid, MessageAvailable)
if rt.state[rid] != MessageAvailable {
t.Errorf("Round %d is not in expected state\n\tExpected: %s\n\tReceived: %s\n", rid, MessageAvailable, rt.state[rid])
}
rt.denote(rid, Unchecked)
if rt.state[rid] != MessageAvailable {
t.Errorf("Round %d is not in expected state\n\tExpected: %s\n\tReceived: %s\n", rid, MessageAvailable, rt.state[rid])
}
rt.denote(rid, Abandoned)
if rt.state[rid] != Abandoned {
t.Errorf("Round %d is not in expected state\n\tExpected: %s\n\tReceived: %s\n", rid, Abandoned, rt.state[rid])
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment