sockopt_linux_test.go 780 B

1234567891011121314151617181920212223242526272829303132
  1. // +build linux
  2. package tcp_test
  3. import (
  4. "context"
  5. "strings"
  6. "testing"
  7. "github.com/v2fly/v2ray-core/v4/common"
  8. "github.com/v2fly/v2ray-core/v4/testing/servers/tcp"
  9. "github.com/v2fly/v2ray-core/v4/transport/internet"
  10. . "github.com/v2fly/v2ray-core/v4/transport/internet/tcp"
  11. )
  12. func TestGetOriginalDestination(t *testing.T) {
  13. tcpServer := tcp.Server{}
  14. dest, err := tcpServer.Start()
  15. common.Must(err)
  16. defer tcpServer.Close()
  17. config, err := internet.ToMemoryStreamConfig(nil)
  18. common.Must(err)
  19. conn, err := Dial(context.Background(), dest, config)
  20. common.Must(err)
  21. defer conn.Close()
  22. originalDest, err := GetOriginalDestination(conn)
  23. if !(dest == originalDest || strings.Contains(err.Error(), "failed to call getsockopt")) {
  24. t.Error("unexpected state")
  25. }
  26. }