refactor(tunnel): improve error handling in gRPC stream tests

- Updated test cases to handle potential stream closure more gracefully by checking for send errors before proceeding with receive operations.
- Enhanced clarity in test logic to ensure that expected errors are correctly asserted when metadata is missing or channel IDs are non-existent.

Made-with: Cursor
This commit is contained in:
Max 2026-03-13 20:02:50 +08:00
parent b667ec310b
commit f20f7797a3

View file

@ -204,13 +204,16 @@ func TestForward_MissingMetadata(t *testing.T) {
if err != nil {
t.Fatal(err)
}
err = stream.Send(&taipb.ForwardData{Data: []byte("hello")})
if err != nil {
t.Fatal(err)
// Server may close the stream before or after Send completes (race).
// Either Send or Recv returning an error confirms the server rejected.
sendErr := stream.Send(&taipb.ForwardData{Data: []byte("hello")})
if sendErr != nil {
return // server already closed stream — pass
}
_, err = stream.Recv()
if err == nil {
_, recvErr := stream.Recv()
if recvErr == nil {
t.Fatal("expected error for missing channel_id metadata")
}
}
@ -224,13 +227,14 @@ func TestForward_NoPendingChannel(t *testing.T) {
if err != nil {
t.Fatal(err)
}
err = stream.Send(&taipb.ForwardData{Data: []byte("hello")})
if err != nil {
t.Fatal(err)
sendErr := stream.Send(&taipb.ForwardData{Data: []byte("hello")})
if sendErr != nil {
return // server already closed stream — pass
}
_, err = stream.Recv()
if err == nil {
_, recvErr := stream.Recv()
if recvErr == nil {
t.Fatal("expected error for non-existent channel_id")
}
}