mirror of
https://gitee.com/rainbond/Rainbond.git
synced 2024-12-05 13:17:42 +08:00
75 lines
1.4 KiB
Go
75 lines
1.4 KiB
Go
package zmq4_test
|
|
|
|
import (
|
|
zmq "github.com/pebbe/zmq4"
|
|
|
|
"testing"
|
|
)
|
|
|
|
func TestRemoteEndpoint(t *testing.T) {
|
|
|
|
if _, minor, _ := zmq.Version(); minor < 1 {
|
|
t.Skip("RemoteEndpoint not avalable in ZeroMQ versions prior to 4.1.0")
|
|
}
|
|
|
|
addr := "tcp://127.0.0.1:9560"
|
|
peer := "127.0.0.1"
|
|
|
|
var rep, req *zmq.Socket
|
|
defer func() {
|
|
for _, s := range []*zmq.Socket{rep, req} {
|
|
if s != nil {
|
|
s.SetLinger(0)
|
|
s.Close()
|
|
}
|
|
}
|
|
}()
|
|
|
|
rep, err := zmq.NewSocket(zmq.REP)
|
|
if err != nil {
|
|
t.Fatal("NewSocket:", err)
|
|
}
|
|
req, err = zmq.NewSocket(zmq.REQ)
|
|
if err != nil {
|
|
t.Fatal("NewSocket:", err)
|
|
}
|
|
|
|
if err = rep.Bind(addr); err != nil {
|
|
t.Fatal("rep.Bind:", err)
|
|
}
|
|
if err = req.Connect(addr); err != nil {
|
|
t.Fatal("req.Connect:", err)
|
|
}
|
|
|
|
tmp := "test"
|
|
if _, err = req.Send(tmp, 0); err != nil {
|
|
t.Fatal("req.Send:", err)
|
|
}
|
|
|
|
// get message with peer address (remote endpoint)
|
|
msg, props, err := rep.RecvWithMetadata(0, "Peer-Address")
|
|
if err != nil {
|
|
t.Fatal("rep.RecvWithMetadata:", err)
|
|
return
|
|
}
|
|
if msg != tmp {
|
|
t.Errorf("rep.RecvWithMetadata: expected %q, got %q", tmp, msg)
|
|
}
|
|
|
|
if p := props["Peer-Address"]; p != peer {
|
|
t.Errorf("rep.RecvWithMetadata: expected Peer-Address == %q, got %q", peer, p)
|
|
}
|
|
|
|
err = rep.Close()
|
|
rep = nil
|
|
if err != nil {
|
|
t.Fatal("rep.Close:", err)
|
|
}
|
|
|
|
err = req.Close()
|
|
req = nil
|
|
if err != nil {
|
|
t.Fatal("req.Close:", err)
|
|
}
|
|
}
|