sockopt_test.go 866 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package internet_test
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/google/go-cmp/cmp"
  6. "github.com/xtls/xray-core/common"
  7. "github.com/xtls/xray-core/common/buf"
  8. "github.com/xtls/xray-core/testing/servers/tcp"
  9. . "github.com/xtls/xray-core/transport/internet"
  10. )
  11. func TestTCPFastOpen(t *testing.T) {
  12. tcpServer := tcp.Server{
  13. MsgProcessor: func(b []byte) []byte {
  14. return b
  15. },
  16. }
  17. dest, err := tcpServer.StartContext(context.Background(), &SocketConfig{Tfo: 256})
  18. common.Must(err)
  19. defer tcpServer.Close()
  20. ctx := context.Background()
  21. dialer := DefaultSystemDialer{}
  22. conn, err := dialer.Dial(ctx, nil, dest, &SocketConfig{
  23. Tfo: 1,
  24. })
  25. common.Must(err)
  26. defer conn.Close()
  27. _, err = conn.Write([]byte("abcd"))
  28. common.Must(err)
  29. b := buf.New()
  30. common.Must2(b.ReadFrom(conn))
  31. if r := cmp.Diff(b.Bytes(), []byte("abcd")); r != "" {
  32. t.Fatal(r)
  33. }
  34. }