zyre_test.go
1 package lib_tests 2 3 import ( 4 "context" 5 "sync" 6 "testing" 7 "time" 8 9 "github.com/davecgh/go-spew/spew" 10 "github.com/go-zeromq/zyre" 11 ) 12 13 func TestZyre(t *testing.T) { 14 z1, cncl1 := makeNode() 15 defer cncl1() 16 17 z2, cncl2 := makeNode() 18 defer cncl2() 19 20 z1.SetVerbose() 21 z2.SetVerbose() 22 23 err := z1.Start() 24 if err != nil { 25 spew.Dump(err) 26 } 27 28 defer z1.Stop() 29 30 err = z2.Start() 31 if err != nil { 32 spew.Dump(err) 33 } 34 35 defer z2.Stop() 36 37 wg := new(sync.WaitGroup) 38 //wg.Add(1) 39 go watchEvents(t, wg, z1) 40 //wg.Add(1) 41 go watchEvents(t, wg, z2) 42 43 z1.Join("TALK") 44 z2.Join("TALK") 45 46 time.Sleep(time.Second) 47 z1.Shout("TALK", []byte("I am here")) 48 time.Sleep(time.Second) 49 z1.Shout("TALK", []byte("Hi world")) 50 51 //wg.Wait() 52 time.Sleep(5 * time.Second) 53 54 spew.Dump(z1.Peers(), z2.Peers()) 55 } 56 57 func makeNode() (*zyre.Zyre, context.CancelFunc) { 58 ctx, cncl := context.WithCancel(context.Background()) 59 z := zyre.NewZyre(ctx) 60 61 return z, cncl 62 } 63 64 func watchEvents(t *testing.T, wg *sync.WaitGroup, z *zyre.Zyre) { 65 select { 66 case e := <- z.Events(): 67 t.Log(spew.Sdump(e)) 68 if string(e.Msg) == "Hi world" { 69 //wg.Done() 70 return 71 } 72 } 73 }