Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

base_network_test.go 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package network_test
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/dolonet/mtg-multi/mtglib"
  6. "github.com/dolonet/mtg-multi/network/v2"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/suite"
  9. )
  10. type BaseNetworkTestSuite struct {
  11. EchoServerTestSuite
  12. net mtglib.Network
  13. }
  14. func (suite *BaseNetworkTestSuite) SetupSuite() {
  15. suite.EchoServerTestSuite.SetupSuite()
  16. suite.net = network.New(nil, "agent", 0, 0, 0, network.DefaultKeepAliveConfig)
  17. }
  18. func (suite *BaseNetworkTestSuite) TestDialUnknownNetwork() {
  19. testData := []string{
  20. "udp",
  21. "udp4",
  22. "udp6",
  23. "unix",
  24. }
  25. for _, name := range testData {
  26. suite.T().Run(name, func(t *testing.T) {
  27. _, err := suite.net.Dial(name, suite.EchoServerAddr())
  28. assert.Error(t, err)
  29. })
  30. }
  31. }
  32. func (suite *BaseNetworkTestSuite) TestDial() {
  33. conn, err := suite.net.Dial("tcp4", suite.EchoServerAddr())
  34. suite.NoError(err)
  35. buf := []byte{1, 2, 3, 4, 5}
  36. n, err := conn.Write(buf)
  37. suite.Equal(5, n)
  38. suite.NoError(err)
  39. another := make([]byte, len(buf))
  40. n, err = conn.Read(another)
  41. suite.NoError(err)
  42. suite.Equal(len(another), n)
  43. suite.Equal(buf, another)
  44. }
  45. func (suite *BaseNetworkTestSuite) TestDialContextOk() {
  46. conn, err := suite.net.DialContext(context.Background(), "tcp4", suite.EchoServerAddr())
  47. suite.NoError(err)
  48. buf := []byte{1, 2, 3, 4, 5}
  49. n, err := conn.Write(buf)
  50. suite.Equal(5, n)
  51. suite.NoError(err)
  52. another := make([]byte, len(buf))
  53. n, err = conn.Read(another)
  54. suite.NoError(err)
  55. suite.Equal(len(another), n)
  56. suite.Equal(buf, another)
  57. }
  58. func (suite *BaseNetworkTestSuite) TestDialContextClosed() {
  59. ctx, cancel := context.WithCancel(context.Background())
  60. cancel()
  61. _, err := suite.net.DialContext(ctx, "tcp4", suite.EchoServerAddr())
  62. suite.ErrorIs(err, ctx.Err())
  63. }
  64. func TestNetworkBase(t *testing.T) {
  65. t.Parallel()
  66. suite.Run(t, &BaseNetworkTestSuite{})
  67. }