From 74eb42ba73b72e12b960312b33625de0b021473a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Flc=E3=82=9B?= Date: Thu, 28 Dec 2023 23:21:52 +0800 Subject: [PATCH] feat(udp): Added udp server --- udp/server_test.go | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 udp/server_test.go diff --git a/udp/server_test.go b/udp/server_test.go new file mode 100644 index 00000000..98167022 --- /dev/null +++ b/udp/server_test.go @@ -0,0 +1,62 @@ +package udp + +import ( + "context" + "net" + "sync" + "testing" + "time" +) + +func TestServer(t *testing.T) { + var ( + server *Server + wg sync.WaitGroup + done = make(chan []byte, 1) + ) + + wg.Add(3) + + go func() { + defer wg.Done() + + server = NewServer(":12190", WithHandler(func(conn net.PacketConn, buf []byte, addr net.Addr) { + done <- buf + }), WithRecoveryHandler(func(conn net.PacketConn, buf []byte, addr net.Addr, err interface{}) { + t.Log(err) + }), WithBufSize(1024)) + + server.Start(context.Background()) + }() + + go func() { + defer wg.Done() + + c, err := net.Dial("udp", ":12190") + if err != nil { + t.Error(err) + return + } + defer c.Close() + + _, err = c.Write([]byte("test")) + if err != nil { + t.Error(err) + return + } + }() + + go func() { + defer wg.Done() + + time.Sleep(time.Second * 1) + server.Stop(context.Background()) + }() + + wg.Wait() + + buf := <-done + if string(buf) != "test" { + t.Fatal("buf not equal test") + } +}