Files
qsc20001102 142e5dc7d6
ci / Go checks (ubuntu-latest) (push) Has been cancelled
ci / Go checks (windows-latest) (push) Has been cancelled
初版功能完成
2026-08-29 13:12:17 +08:00

43 lines
1.3 KiB
Go

package subnet
import (
"context"
"net/netip"
"testing"
)
func TestSenderRejectsEnqueueAfterClose(t *testing.T) {
sender, err := NewSender(context.Background(), SenderConfig{
SessionID: 55,
LocalIP: netip.MustParseAddr("127.0.0.1"),
PeerIP: netip.MustParseAddr("127.0.0.2"),
PeerPort: 6200,
})
if err != nil {
t.Fatal(err)
}
if err := sender.Close(); err != nil {
t.Fatal(err)
}
if sender.Enqueue([]byte{1, 2, 3}) {
t.Fatal("closed Sender accepted a packet with no running consumer")
}
}
func TestValidateSenderConfigRejectsInvalidAddressRoles(t *testing.T) {
valid := SenderConfig{SessionID: 1, LocalIP: netip.MustParseAddr("127.0.0.1"), PeerIP: netip.MustParseAddr("127.0.0.2"), PeerPort: 6200}
if err := validateSenderConfig(valid); err != nil {
t.Fatalf("valid Sender config error = %v", err)
}
invalid := []SenderConfig{
{SessionID: 1, LocalIP: netip.IPv4Unspecified(), PeerIP: valid.PeerIP, PeerPort: 6200},
{SessionID: 1, LocalIP: valid.LocalIP, PeerIP: netip.MustParseAddr("224.0.0.1"), PeerPort: 6200},
{SessionID: 1, LocalIP: valid.LocalIP, PeerIP: valid.LocalIP, PeerPort: 6200},
}
for _, current := range invalid {
if err := validateSenderConfig(current); err == nil {
t.Errorf("invalid Sender config accepted: %+v", current)
}
}
}