alt/services/worker/internal/socket/server_test.go
toki 3ee268816b refactor: update API socket handlers and contract parsers
- Add parser map for contract type resolution
- Update socket handlers with new message routing
- Add parser map tests
- Remove outdated code review and plan docs for G07
2026-05-30 19:14:07 +09:00

65 lines
1.7 KiB
Go

package socket
import (
"context"
"net"
"testing"
"time"
altv1 "git.toki-labs.com/toki/alt/packages/contracts/gen/go/alt/v1"
"git.toki-labs.com/toki/alt/services/worker/internal/config"
workerContracts "git.toki-labs.com/toki/alt/services/worker/internal/contracts"
protoSocket "git.toki-labs.com/toki/proto-socket/go"
)
func TestWorkerSocketServerHello(t *testing.T) {
// Get temporary port
l, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatalf("failed to listen on temporary port: %v", err)
}
port := l.Addr().(*net.TCPAddr).Port
l.Close()
cfg := config.Config{
Host: "127.0.0.1",
Port: port,
SocketPath: "/socket",
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
server := NewServer(cfg)
if err := server.Start(ctx); err != nil {
t.Fatalf("failed to start worker socket server: %v", err)
}
defer server.Stop()
// Wait slightly for server setup
time.Sleep(50 * time.Millisecond)
// Dial
client, err := protoSocket.DialWs(ctx, "127.0.0.1", port, "/socket", workerContracts.ParserMap())
if err != nil {
t.Fatalf("failed to dial worker socket server: %v", err)
}
defer client.Close()
// Send HelloRequest
req := &altv1.HelloRequest{
AltProtocolVersion: "alt.v1",
}
res, err := protoSocket.SendRequestTyped[*altv1.HelloRequest, *altv1.HelloResponse](&client.Communicator, req, 2*time.Second)
if err != nil {
t.Fatalf("failed to send HelloRequest: %v", err)
}
if res.ServerName != "alt-worker" {
t.Errorf("expected ServerName to be %q, got %q", "alt-worker", res.ServerName)
}
if res.AltProtocolVersion != "alt.v1" {
t.Errorf("expected AltProtocolVersion to be %q, got %q", "alt.v1", res.AltProtocolVersion)
}
}