mesh/repo-check head c61212eba77c merged into trunk c6e669f71e8e — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…
mesh/merge-gate head c61212eba77c merged into trunk c6e669f71e8e — pass: group feat/r4d composed: every machine composes with the change as it did without …
mesh/delivery delivered
mesh/delivery-group group feat/r4d delivered: every member is delivered
mesh/check failed: unit: ..test: node:internal/modules/esm/resolve:241 | c61212eba77c on 5652312f09d2 | unit 1629 run, 0 kept, 3 skipped | integration…
46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
//go:build integration
|
|
|
|
package process
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"git.novox.be/novox/mesh-sdk/go/membership"
|
|
)
|
|
|
|
// A process connected pinned to a test bus hears the membership published for its node and module, and
|
|
// ignores what is not one (novox/hq issue 1633, AC2).
|
|
func TestFollowMembershipHearsWhatIsIssuedToTheAccount(t *testing.T) {
|
|
url, fingerprint := selfSignedServer(t)
|
|
account := mailSenderAccount(t, url, fingerprint)
|
|
conn, err := Connect(account)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer conn.Close()
|
|
|
|
got := make(chan membership.Membership, 1)
|
|
bad := make(chan error, 4)
|
|
if err := conn.FollowMembership(func(m membership.Membership) { got <- m }, func(e error) { bad <- e }); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := conn.nc.Publish(membership.Subject("novox", "mesh-mail"), []byte("not json")); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := conn.nc.Publish(membership.Subject("novox", "mesh-mail"), []byte(`{"node":"novox","module":"mesh-mail","mesh":["10.0.0.1"]}`)); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
select {
|
|
case m := <-got:
|
|
if m.Module != "mesh-mail" || len(m.Mesh) != 1 {
|
|
t.Fatalf("membership: %+v", m)
|
|
}
|
|
case <-time.After(5 * time.Second):
|
|
t.Fatal("no membership heard")
|
|
}
|
|
if len(bad) == 0 {
|
|
t.Error("the body that is not a membership was not reported")
|
|
}
|
|
}
|