Break METADAPT-A client/server environment from TestConnA
This commit is contained in:
parent
c0bfcc02f7
commit
a83aedc128
@ -24,21 +24,34 @@ func TestConnA(test *testing.T) {
|
|||||||
"world",
|
"world",
|
||||||
"When the impostor is sus!",
|
"When the impostor is sus!",
|
||||||
}
|
}
|
||||||
|
|
||||||
network := "tcp"
|
|
||||||
addr := "localhost:7959"
|
|
||||||
|
|
||||||
// server
|
clientFunc := func(a Conn) {
|
||||||
listener, err := net.Listen(network, addr)
|
test.Log("CLIENT accepting transaction")
|
||||||
if err != nil { test.Fatal(err) }
|
trans, err := a.AcceptTrans()
|
||||||
test.Cleanup(func() { listener.Close() })
|
if err != nil { test.Fatal("CLIENT", err) }
|
||||||
go func() {
|
test.Log("CLIENT accepted transaction")
|
||||||
test.Log("SERVER listening")
|
test.Cleanup(func() { trans.Close() })
|
||||||
conn, err := listener.Accept()
|
for method, payload := range payloads {
|
||||||
if err != nil { test.Error("SERVER", err); return }
|
test.Log("CLIENT waiting...")
|
||||||
defer conn.Close()
|
gotMethod, gotPayloadBytes, err := trans.Receive()
|
||||||
test.Cleanup(func() { conn.Close() })
|
if err != nil { test.Fatal("CLIENT", err) }
|
||||||
a := AdaptA(conn, ServerSide)
|
gotPayload := string(gotPayloadBytes)
|
||||||
|
test.Log("CLIENT m:", gotMethod, "p:", gotPayload)
|
||||||
|
if int(gotMethod) != method {
|
||||||
|
test.Errorf("CLIENT method not equal")
|
||||||
|
}
|
||||||
|
if gotPayload != payload {
|
||||||
|
test.Errorf("CLIENT payload not equal")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
test.Log("CLIENT waiting for transaction close...")
|
||||||
|
_, _, err = trans.Receive()
|
||||||
|
if !errors.Is(err, io.EOF) {
|
||||||
|
test.Fatal("CLIENT wrong error:", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
serverFunc := func(a Conn) {
|
||||||
trans, err := a.OpenTrans()
|
trans, err := a.OpenTrans()
|
||||||
if err != nil { test.Error("SERVER", err); return }
|
if err != nil { test.Error("SERVER", err); return }
|
||||||
test.Cleanup(func() { trans.Close() })
|
test.Cleanup(func() { trans.Close() })
|
||||||
@ -48,40 +61,9 @@ func TestConnA(test *testing.T) {
|
|||||||
if err != nil { test.Error("SERVER", err); return }
|
if err != nil { test.Error("SERVER", err); return }
|
||||||
}
|
}
|
||||||
test.Log("SERVER closing connection")
|
test.Log("SERVER closing connection")
|
||||||
}()
|
}
|
||||||
|
|
||||||
// client
|
clientServerEnvironment(test, clientFunc, serverFunc)
|
||||||
test.Log("CLIENT dialing")
|
|
||||||
conn, err := net.Dial(network, addr)
|
|
||||||
if err != nil { test.Fatal("CLIENT", err) }
|
|
||||||
test.Log("CLIENT dialed")
|
|
||||||
a := AdaptA(conn, ClientSide)
|
|
||||||
test.Cleanup(func() { a.Close() })
|
|
||||||
test.Log("CLIENT accepting transaction")
|
|
||||||
trans, err := a.AcceptTrans()
|
|
||||||
if err != nil { test.Fatal("CLIENT", err) }
|
|
||||||
test.Log("CLIENT accepted transaction")
|
|
||||||
test.Cleanup(func() { trans.Close() })
|
|
||||||
for method, payload := range payloads {
|
|
||||||
test.Log("CLIENT waiting...")
|
|
||||||
gotMethod, gotPayloadBytes, err := trans.Receive()
|
|
||||||
if err != nil { test.Fatal("CLIENT", err) }
|
|
||||||
gotPayload := string(gotPayloadBytes)
|
|
||||||
test.Log("CLIENT m:", gotMethod, "p:", gotPayload)
|
|
||||||
if int(gotMethod) != method {
|
|
||||||
test.Errorf("CLIENT method not equal")
|
|
||||||
}
|
|
||||||
if gotPayload != payload {
|
|
||||||
test.Errorf("CLIENT payload not equal")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
test.Log("CLIENT waiting for connection close...")
|
|
||||||
_, _, err = trans.Receive()
|
|
||||||
if !errors.Is(err, io.EOF) {
|
|
||||||
test.Fatal("CLIENT wrong error:", err)
|
|
||||||
}
|
|
||||||
test.Log("CLIENT done")
|
|
||||||
conn.Close()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEncodeMessageA(test *testing.T) {
|
func TestEncodeMessageA(test *testing.T) {
|
||||||
@ -144,3 +126,42 @@ func TestDecodeMessageAErr(test *testing.T) {
|
|||||||
test.Fatalf("wrong error: %v", err)
|
test.Fatalf("wrong error: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func clientServerEnvironment(test *testing.T, clientFunc func(conn Conn), serverFunc func(conn Conn)) {
|
||||||
|
network := "tcp"
|
||||||
|
addr := "localhost:7959"
|
||||||
|
|
||||||
|
// server
|
||||||
|
listener, err := net.Listen(network, addr)
|
||||||
|
if err != nil { test.Fatal(err) }
|
||||||
|
test.Cleanup(func() { listener.Close() })
|
||||||
|
go func() {
|
||||||
|
test.Log("SERVER listening")
|
||||||
|
conn, err := listener.Accept()
|
||||||
|
if err != nil { test.Error("SERVER", err); return }
|
||||||
|
defer conn.Close()
|
||||||
|
test.Cleanup(func() { conn.Close() })
|
||||||
|
a := AdaptA(conn, ServerSide)
|
||||||
|
test.Cleanup(func() { a.Close() })
|
||||||
|
|
||||||
|
serverFunc(a)
|
||||||
|
}()
|
||||||
|
|
||||||
|
// client
|
||||||
|
test.Log("CLIENT dialing")
|
||||||
|
conn, err := net.Dial(network, addr)
|
||||||
|
if err != nil { test.Fatal("CLIENT", err) }
|
||||||
|
test.Log("CLIENT dialed")
|
||||||
|
a := AdaptA(conn, ClientSide)
|
||||||
|
test.Cleanup(func() { a.Close() })
|
||||||
|
|
||||||
|
clientFunc(a)
|
||||||
|
|
||||||
|
test.Log("CLIENT waiting for connection close...")
|
||||||
|
_, err = a.AcceptTrans()
|
||||||
|
if !errors.Is(err, io.EOF) {
|
||||||
|
test.Fatal("CLIENT wrong error:", err)
|
||||||
|
}
|
||||||
|
test.Log("CLIENT DONE")
|
||||||
|
conn.Close()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user