package test import ( "testing" "encoding/hex" "strings" ) func TestUpperHook(t *testing.T) { const msg = "Hello, World!" c, s := newClientServer(t) defer closeClientServer(c, s) tunnel := "add name %s listen,addr=127.0.0.1:0 upper loop" c.Exec(tunnel, t.Name()) addr := c.Send("get tunnel.%s.listen", t.Name()) conn := xDial(t, "tcp", addr) defer conn.Close() xWrite(t, conn, msg) buf := make([]byte, len(msg)) xReadFull(t, conn, buf) if r := string(buf); r != strings.ToUpper(msg) { t.Fatalf("wrong reply: send '%s', recv '%s'", msg, r) } } func TestHexHook(t *testing.T) { const msg = "Hello, World!" c, s := newClientServer(t) defer closeClientServer(c, s) listen := xListen(t, "tcp", "127.0.0.1:0") defer listen.Close() addr := c.AddListenTunnel(t.Name(), "hex dial,addr=%s", listen.Addr()) out := xDial(t, "tcp", addr) defer out.Close() in := xAccept(t, listen) defer in.Close() xWrite(t, out, msg) buf := make([]byte, 2*len(msg)) xReadFull(t, in, buf) if r := string(buf); r != hex.EncodeToString([]byte(msg)) { t.Fatalf("wrong reply: send '%s', recv '%s'", msg, r) } }