freedom_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. packet := v2net.NewPacket(v2net.TCPDestination(v2net.IPAddress([]byte{127, 0, 0, 1}), port), payload, false)
  32. err = freedom.Dispatch(packet, traffic)
  33. assert.Error(err).IsNil()
  34. traffic.InboundInput().Close()
  35. respPayload, err := traffic.InboundOutput().Read()
  36. assert.Error(err).IsNil()
  37. assert.Bytes(respPayload.Value).Equals([]byte("Processed: Data to be sent to remote"))
  38. tcpServer.Close()
  39. }
  40. func TestUnreachableDestination(t *testing.T) {
  41. v2testing.Current(t)
  42. freedom := &FreedomConnection{}
  43. traffic := ray.NewRay()
  44. data2Send := "Data to be sent to remote"
  45. payload := alloc.NewSmallBuffer().Clear().Append([]byte(data2Send))
  46. packet := v2net.NewPacket(v2net.TCPDestination(v2net.IPAddress([]byte{127, 0, 0, 1}), 128), payload, false)
  47. err := freedom.Dispatch(packet, traffic)
  48. assert.Error(err).IsNotNil()
  49. }