forked from FunStuff/pproxies
-
Notifications
You must be signed in to change notification settings - Fork 0
/
proxypool_test.go
69 lines (62 loc) · 1.23 KB
/
proxypool_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package pproxies
import (
"fmt"
"os"
"strconv"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/xlaurent/pproxies/proxy"
"github.com/xlaurent/pproxies/testutil"
)
const (
serverPort = 9999
proxyStart = 8000
proxyNum = 20
srcChunkSize = 10
)
var state int = 0
func fakeSrc(timeout time.Duration) ([]proxy.Proxy, error) {
var proxies []proxy.Proxy
for j := state * srcChunkSize; j < (state+1)*srcChunkSize; j++ {
proxies = append(proxies, proxy.Proxy{
true,
"127.0.0.1",
strconv.Itoa(proxyStart + j),
})
}
if state == proxyNum/srcChunkSize {
state = 0
} else {
state++
}
return proxies, nil
}
func TestMain(m *testing.M) {
for i := 0; i < proxyNum; i++ {
go testutil.RunHTTPProxy(i + proxyStart)
}
go testutil.TestServer(serverPort)
os.Exit(m.Run())
}
func TestPool(t *testing.T) {
pool := NewPool([]proxy.ProxySrc{fakeSrc})
pool.Start(&Option{
6,
5 * time.Second,
fmt.Sprintf("http://127.0.0.1:%d", serverPort),
})
recv := pool.RecvCh
var proxies []proxy.Proxy
for i := 0; i < proxyNum; i++ {
p := <-recv
proxies = append(proxies, p)
}
assert.Len(t, proxies, 20)
pool.Stop()
select {
case <-recv:
case <-time.After(10 * time.Second):
t.Error("can't stop\n")
}
}