@@ -55,8 +55,8 @@ func TestExecutorError(t *testing.T) {
5555 executor .Close ()
5656
5757 err := executor .Submit (func () {})
58- if err != ErrExecutorClosed {
59- t .Fatalf ("err %v != ErrExecutorClosed %v" , err , ErrExecutorClosed )
58+ if err != ErrExecutorIsClosed {
59+ t .Fatalf ("err %v != ErrExecutorIsClosed %v" , err , ErrExecutorIsClosed )
6060 }
6161
6262 executor = NewExecutor (workerNum )
@@ -67,3 +67,52 @@ func TestExecutorError(t *testing.T) {
6767 t .Fatalf ("err %v != ErrWorkerIsNil %v" , err , ErrWorkerIsNil )
6868 }
6969}
70+
71+ // go test -v -cover -run=^TestExecutorAvailableWorkers$
72+ func TestExecutorAvailableWorkers (t * testing.T ) {
73+ workerNum := 16
74+ executor := NewExecutor (workerNum )
75+
76+ if len (executor .workers ) != 1 {
77+ t .Fatalf ("len(executor.workers) %d != 1" , len (executor .workers ))
78+ }
79+
80+ if executor .AvailableWorkers () != 1 {
81+ t .Fatalf ("executor.AvailableWorkers() %d != 1" , executor .AvailableWorkers ())
82+ }
83+
84+ executor .workers = make ([]* worker , workerNum )
85+
86+ if executor .AvailableWorkers () != workerNum {
87+ t .Fatalf ("executor.AvailableWorkers() %d != workerNum %d" , executor .AvailableWorkers (), workerNum )
88+ }
89+ }
90+
91+ // go test -v -cover -run=^TestExecutorSpawnWorker$
92+ func TestExecutorSpawnWorker (t * testing.T ) {
93+ workerNum := 16
94+ executor := NewExecutor (workerNum )
95+
96+ if executor .AvailableWorkers () != 1 {
97+ t .Fatalf ("executor.AvailableWorkers() %d != 1" , executor .AvailableWorkers ())
98+ }
99+
100+ for range workerNum {
101+ executor .Submit (func () {})
102+ time .Sleep (time .Millisecond )
103+ }
104+
105+ if executor .AvailableWorkers () != 1 {
106+ t .Fatalf ("executor.AvailableWorkers() %d != 1" , executor .AvailableWorkers ())
107+ }
108+
109+ for range workerNum * 2 {
110+ executor .Submit (func () {
111+ time .Sleep (time .Millisecond )
112+ })
113+ }
114+
115+ if executor .AvailableWorkers () != workerNum {
116+ t .Fatalf ("executor.AvailableWorkers() %d != workerNum %d" , executor .AvailableWorkers (), workerNum )
117+ }
118+ }
0 commit comments