zmq4_test.go
1 package lib_tests 2 3 import ( 4 "context" 5 "log" 6 "testing" 7 "time" 8 9 "github.com/go-zeromq/zmq4" 10 ) 11 12 func zmq4Req() { 13 logger := log.New(log.Writer(), "rrclient: ", log.LstdFlags) 14 15 req := zmq4.NewReq(context.Background()) 16 defer req.Close() 17 18 err := req.Dial("tcp://localhost:5559") 19 if err != nil { 20 logger.Fatalf("could not dial: %v", err) 21 } 22 23 for i := 0; i < 10; i++ { 24 err := req.Send(zmq4.NewMsgString("Hello")) 25 if err != nil { 26 logger.Fatalf("could not send greeting: %v", err) 27 } 28 29 msg, err := req.Recv() 30 if err != nil { 31 logger.Fatalf("could not recv greeting: %v", err) 32 } 33 logger.Printf("received reply %d [%s]\n", i, msg.Frames[0]) 34 } 35 } 36 37 func TestZMQ4Req(t *testing.T) { 38 zmq4Req() 39 } 40 41 func zmq4Rep() { 42 logger := log.New(log.Writer(), "rrworker: ", log.LstdFlags) 43 44 // Socket to talk to clients 45 rep := zmq4.NewRep(context.Background()) 46 defer rep.Close() 47 48 err := rep.Listen("tcp://*:5559") 49 if err != nil { 50 logger.Fatalf("could not dial: %v", err) 51 } 52 53 for { 54 // Wait for next request from client 55 msg, err := rep.Recv() 56 if err != nil { 57 logger.Fatalf("could not recv request: %v", err) 58 } 59 60 logger.Printf("received request: [%s]\n", msg.Frames[0]) 61 62 // Do some 'work' 63 time.Sleep(time.Second) 64 65 // Send reply back to client 66 err = rep.Send(zmq4.NewMsgString("World")) 67 if err != nil { 68 logger.Fatalf("could not send reply: %v", err) 69 } 70 } 71 } 72 73 func TestZMQ4Rep(t *testing.T) { 74 zmq4Rep() 75 } 76 77 func TestZMQ4ReqRep(t *testing.T){ 78 go zmq4Rep() 79 go zmq4Req() 80 81 time.Sleep(15 * time.Second) 82 }