client_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package mux_test
  2. import (
  3. "context"
  4. "testing"
  5. "time"
  6. "github.com/golang/mock/gomock"
  7. "v2ray.com/core/common"
  8. "v2ray.com/core/common/errors"
  9. "v2ray.com/core/common/mux"
  10. "v2ray.com/core/common/vio"
  11. "v2ray.com/core/testing/mocks"
  12. "v2ray.com/core/transport/pipe"
  13. )
  14. func TestIncrementalPickerFailure(t *testing.T) {
  15. mockCtl := gomock.NewController(t)
  16. defer mockCtl.Finish()
  17. mockWorkerFactory := mocks.NewMuxClientWorkerFactory(mockCtl)
  18. mockWorkerFactory.EXPECT().Create().Return(nil, errors.New("test"))
  19. picker := mux.IncrementalWorkerPicker{
  20. Factory: mockWorkerFactory,
  21. }
  22. _, err := picker.PickAvailable()
  23. if err == nil {
  24. t.Error("expected error, but nil")
  25. }
  26. }
  27. func TestClientWorkerEOF(t *testing.T) {
  28. reader, writer := pipe.New(pipe.WithoutSizeLimit())
  29. common.Must(writer.Close())
  30. worker, err := mux.NewClientWorker(vio.Link{Reader: reader, Writer: writer}, mux.ClientStrategy{})
  31. common.Must(err)
  32. time.Sleep(time.Millisecond * 500)
  33. f := worker.Dispatch(context.Background(), nil)
  34. if f {
  35. t.Error("expected failed dispatching, but actually not")
  36. }
  37. }