2019-07-01 20:37:39 +03:00
|
|
|
package tunnel
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2019-07-07 12:37:34 +03:00
|
|
|
"github.com/micro/go-micro/network/transport"
|
2019-07-01 20:37:39 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestTunnelSocket(t *testing.T) {
|
|
|
|
s := &socket{
|
|
|
|
id: "1",
|
|
|
|
closed: make(chan bool),
|
|
|
|
remote: "remote",
|
|
|
|
local: "local",
|
|
|
|
send: make(chan *message, 1),
|
|
|
|
recv: make(chan *message, 1),
|
|
|
|
wait: make(chan bool),
|
|
|
|
}
|
|
|
|
|
|
|
|
// check addresses local and remote
|
|
|
|
if s.Local() != s.local {
|
|
|
|
t.Fatalf("Expected s.Local %s got %s", s.local, s.Local())
|
|
|
|
}
|
|
|
|
if s.Remote() != s.remote {
|
|
|
|
t.Fatalf("Expected s.Remote %s got %s", s.remote, s.Remote())
|
|
|
|
}
|
|
|
|
|
|
|
|
// send a message
|
|
|
|
s.Send(&transport.Message{Header: map[string]string{}})
|
|
|
|
|
|
|
|
// get sent message
|
|
|
|
msg := <-s.send
|
|
|
|
|
|
|
|
if msg.id != s.id {
|
|
|
|
t.Fatalf("Expected sent message id %s got %s", s.id, msg.id)
|
|
|
|
}
|
|
|
|
|
|
|
|
// recv a message
|
|
|
|
msg.data.Header["Foo"] = "bar"
|
|
|
|
s.recv <- msg
|
|
|
|
|
|
|
|
m := new(transport.Message)
|
|
|
|
s.Recv(m)
|
|
|
|
|
|
|
|
// check header
|
|
|
|
if m.Header["Foo"] != "bar" {
|
|
|
|
t.Fatalf("Did not receive correct message %+v", m)
|
|
|
|
}
|
|
|
|
|
|
|
|
// close the connection
|
|
|
|
s.Close()
|
|
|
|
|
|
|
|
// check connection
|
|
|
|
err := s.Send(m)
|
|
|
|
if err == nil {
|
|
|
|
t.Fatal("Expected closed connection")
|
|
|
|
}
|
|
|
|
err = s.Recv(m)
|
|
|
|
if err == nil {
|
|
|
|
t.Fatal("Expected closed connection")
|
|
|
|
}
|
|
|
|
}
|