package buildrun import ( "testing" "git.novox.be/novox/mesh-sdk/go/delivery" ) func presenceValue(t *testing.T, online bool) []byte { t.Helper() b, err := delivery.EncodePresence(delivery.Presence{Online: online}) if err != nil { t.Fatal(err) } return b } func TestPresenceSetKnowsOnlyNodesTheWatchmanSawOnline(t *testing.T) { // 1607 review 3 var s PresenceSet if s.Online("ace") { t.Error("a node the watchman never wrote is online") } if !s.Put("ace", presenceValue(t, true), false) || !s.Online("ace") { t.Error("ace online was not taken in") } if s.Put("ace", presenceValue(t, true), false) { t.Error("the same presence again counted as a change") } if !s.Put("ace", presenceValue(t, false), false) || s.Online("ace") { t.Error("ace going offline was not taken in") } s.Put("g14", presenceValue(t, true), false) if !s.Put("g14", nil, true) || s.Online("g14") { t.Error("a deleted key is still online") } // A part's instance (part..) is not a node. if s.Put("part.mesh-delivery-builder.novox", presenceValue(t, true), false) || s.Online("part") { t.Error("a part's key was taken for a node") } if s.Put("novox", []byte("junk"), false) { t.Error("junk counted") } }