freedom_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package freedom_test
  2. import (
  3. "testing"
  4. "github.com/v2ray/v2ray-core/common/alloc"
  5. v2net "github.com/v2ray/v2ray-core/common/net"
  6. v2nettesting "github.com/v2ray/v2ray-core/common/net/testing"
  7. . "github.com/v2ray/v2ray-core/proxy/freedom"
  8. v2testing "github.com/v2ray/v2ray-core/testing"
  9. "github.com/v2ray/v2ray-core/testing/assert"
  10. "github.com/v2ray/v2ray-core/testing/servers/tcp"
  11. "github.com/v2ray/v2ray-core/transport/ray"
  12. )
  13. func TestSinglePacket(t *testing.T) {
  14. v2testing.Current(t)
  15. port := v2nettesting.PickPort()
  16. tcpServer := &tcp.Server{
  17. Port: port,
  18. MsgProcessor: func(data []byte) []byte {
  19. buffer := make([]byte, 0, 2048)
  20. buffer = append(buffer, []byte("Processed: ")...)
  21. buffer = append(buffer, data...)
  22. return buffer
  23. },
  24. }
  25. _, err := tcpServer.Start()
  26. assert.Error(err).IsNil()
  27. freedom := &FreedomConnection{}
  28. traffic := ray.NewRay()
  29. data2Send := "Data to be sent to remote"
  30. payload := alloc.NewSmallBuffer().Clear().Append([]byte(data2Send))
  31. go freedom.Dispatch(v2net.TCPDestination(v2net.LocalHostIP, port), payload, traffic)
  32. traffic.InboundInput().Close()
  33. respPayload, err := traffic.InboundOutput().Read()
  34. assert.Error(err).IsNil()
  35. assert.Bytes(respPayload.Value).Equals([]byte("Processed: Data to be sent to remote"))
  36. tcpServer.Close()
  37. }
  38. func TestUnreachableDestination(t *testing.T) {
  39. v2testing.Current(t)
  40. freedom := &FreedomConnection{}
  41. traffic := ray.NewRay()
  42. data2Send := "Data to be sent to remote"
  43. payload := alloc.NewSmallBuffer().Clear().Append([]byte(data2Send))
  44. err := freedom.Dispatch(v2net.TCPDestination(v2net.IPAddress([]byte{127, 0, 0, 1}), 128), payload, traffic)
  45. assert.Error(err).IsNotNil()
  46. }