sockopt_test.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package internet_test
  2. import (
  3. "context"
  4. "testing"
  5. "v2ray.com/core/common"
  6. "v2ray.com/core/common/buf"
  7. "v2ray.com/core/common/compare"
  8. "v2ray.com/core/testing/servers/tcp"
  9. . "v2ray.com/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(ContextWithStreamSettings(context.Background(), &MemoryStreamConfig{
  18. SocketSettings: &SocketConfig{
  19. Tfo: SocketConfig_Enable,
  20. },
  21. }))
  22. common.Must(err)
  23. defer tcpServer.Close()
  24. ctx := context.Background()
  25. ctx = ContextWithStreamSettings(ctx, &MemoryStreamConfig{
  26. SocketSettings: &SocketConfig{
  27. Tfo: SocketConfig_Enable,
  28. },
  29. })
  30. dialer := DefaultSystemDialer{}
  31. conn, err := dialer.Dial(ctx, nil, dest)
  32. common.Must(err)
  33. defer conn.Close()
  34. _, err = conn.Write([]byte("abcd"))
  35. common.Must(err)
  36. b := buf.New()
  37. common.Must(b.Reset(buf.ReadFrom(conn)))
  38. if err := compare.BytesEqualWithDetail(b.Bytes(), []byte("abcd")); err != nil {
  39. t.Fatal(err)
  40. }
  41. }