1package tcp 2 3import ( 4 "bytes" 5 "fmt" 6 "testing" 7 "time" 8 9 log "github.com/schollz/logger" 10 "github.com/stretchr/testify/assert" 11) 12 13func BenchmarkConnection(b *testing.B) { 14 log.SetLevel("trace") 15 go Run("debug", "localhost", "8283", "pass123", "8284") 16 time.Sleep(100 * time.Millisecond) 17 b.ResetTimer() 18 for i := 0; i < b.N; i++ { 19 c, _, _, _ := ConnectToTCPServer("localhost:8283", "pass123", fmt.Sprintf("testroom%d", i), 1*time.Minute) 20 c.Close() 21 } 22} 23 24func TestTCP(t *testing.T) { 25 log.SetLevel("error") 26 timeToRoomDeletion = 100 * time.Millisecond 27 go Run("debug", "localhost", "8381", "pass123", "8382") 28 time.Sleep(timeToRoomDeletion) 29 err := PingServer("localhost:8381") 30 assert.Nil(t, err) 31 err = PingServer("localhost:8333") 32 assert.NotNil(t, err) 33 34 time.Sleep(timeToRoomDeletion) 35 c1, banner, _, err := ConnectToTCPServer("localhost:8381", "pass123", "testRoom", 1*time.Minute) 36 assert.Equal(t, banner, "8382") 37 assert.Nil(t, err) 38 c2, _, _, err := ConnectToTCPServer("localhost:8381", "pass123", "testRoom") 39 assert.Nil(t, err) 40 _, _, _, err = ConnectToTCPServer("localhost:8381", "pass123", "testRoom") 41 assert.NotNil(t, err) 42 _, _, _, err = ConnectToTCPServer("localhost:8381", "pass123", "testRoom", 1*time.Nanosecond) 43 assert.NotNil(t, err) 44 45 // try sending data 46 assert.Nil(t, c1.Send([]byte("hello, c2"))) 47 var data []byte 48 for { 49 data, err = c2.Receive() 50 if bytes.Equal(data, []byte{1}) { 51 continue 52 } 53 break 54 } 55 assert.Nil(t, err) 56 assert.Equal(t, []byte("hello, c2"), data) 57 58 assert.Nil(t, c2.Send([]byte("hello, c1"))) 59 for { 60 data, err = c1.Receive() 61 if bytes.Equal(data, []byte{1}) { 62 continue 63 } 64 break 65 } 66 assert.Nil(t, err) 67 assert.Equal(t, []byte("hello, c1"), data) 68 69 c1.Close() 70 time.Sleep(300 * time.Millisecond) 71} 72