mirror of https://github.com/v2ray/v2ray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
48 lines
1.1 KiB
package mux_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/golang/mock/gomock"
|
|
"v2ray.com/core/common"
|
|
"v2ray.com/core/common/errors"
|
|
"v2ray.com/core/common/mux"
|
|
"v2ray.com/core/testing/mocks"
|
|
"v2ray.com/core/transport"
|
|
"v2ray.com/core/transport/pipe"
|
|
)
|
|
|
|
func TestIncrementalPickerFailure(t *testing.T) {
|
|
mockCtl := gomock.NewController(t)
|
|
defer mockCtl.Finish()
|
|
|
|
mockWorkerFactory := mocks.NewMuxClientWorkerFactory(mockCtl)
|
|
mockWorkerFactory.EXPECT().Create().Return(nil, errors.New("test"))
|
|
|
|
picker := mux.IncrementalWorkerPicker{
|
|
Factory: mockWorkerFactory,
|
|
}
|
|
|
|
_, err := picker.PickAvailable()
|
|
if err == nil {
|
|
t.Error("expected error, but nil")
|
|
}
|
|
}
|
|
|
|
func TestClientWorkerEOF(t *testing.T) {
|
|
reader, writer := pipe.New(pipe.WithoutSizeLimit())
|
|
common.Must(writer.Close())
|
|
|
|
worker, err := mux.NewClientWorker(transport.Link{Reader: reader, Writer: writer}, mux.ClientStrategy{})
|
|
common.Must(err)
|
|
|
|
time.Sleep(time.Millisecond * 500)
|
|
|
|
f := worker.Dispatch(context.Background(), nil)
|
|
if f {
|
|
t.Error("expected failed dispatching, but actually not")
|
|
}
|
|
}
|