-
Notifications
You must be signed in to change notification settings - Fork 6
/
cgi_test.go
139 lines (127 loc) · 3.77 KB
/
cgi_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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package main
import (
//"crypto/md5"
"fmt"
//"io"
"net"
"net/http"
"net/http/fcgi"
"net/url"
"time"
)
// cgi server for test
type FastCGIServer struct{}
var ipPort = "127.0.0.1:59000"
func (s FastCGIServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
req.ParseMultipartForm(100000000)
queue := req.FormValue("queue")
if queue == "TestQueue" {
resp.Header().Set("Code", "200")
fmt.Fprintln(resp, "TestQueue")
} else {
resp.Header().Set("Code", "400")
fmt.Fprintln(resp, "TestErrorQueue")
}
}
// TestCgiClients for test inject
type TestCgiClients struct {
}
func (tcc *TestCgiClients) sendToCgi(env map[string]string, params url.Values) (*WorkerResponse, error) {
return &WorkerResponse{}, nil
}
// test proc
func init() {
go func() {
listener, err := net.Listen("tcp", ipPort)
if err != nil {
// handle error
fmt.Println("listener creatation failed: ", err)
}
srv := new(FastCGIServer)
fcgi.Serve(listener, srv)
}()
time.Sleep(time.Microsecond * 50)
fmt.Println("===========================================")
fmt.Println("===========================================")
fmt.Println("===========================================")
fmt.Println()
fmt.Println("------------ FAKE CGI UNIT TEST -----------")
fmt.Println()
fmt.Println("===========================================")
fmt.Println("===========================================")
fmt.Println("===========================================")
}
// func TestSendToCGIBuffer(t *testing.T) {
// // no need to test
// // TestCgiManager := NewCgiManager(&CgiConfig{})
// // TestCgiManager.clients = &TestCgiClients{}
// // TestCgiManager.SendToCGIBuffer(&Jobs{})
// //t.Log("no bad news is good news")
// t.Log("no need to test")
// }
//
// func TestSendToCgi(t *testing.T) {
// env := make(map[string]string)
// env["REQUEST_METHOD"] = "GET"
// env["SERVER_PROTOCOL"] = "HTTP/1.1"
//
// params := url.Values{
// "queue": []string{string("TestQueue")},
// "topic": []string{string("TestTopic")},
// }
//
// clients := NewCgiClients(ipPort, 3*time.Second, 3*time.Second, 3*time.Second)
//
// res, err := clients.sendToCgi(env, params)
//
// if err != nil {
// t.Fatalf("AddJobs Case want err = nil returns, but receive err = %v", err)
// } else if strings.TrimRight(res.Msg, "\n") == "TestQueue" {
// t.Log(res, err)
// } else {
// t.Fatalf("AddJobs Case want r.Msg = TestQueue returns, but receive r = %v", res)
// }
// }
//
// func TestSendToCgiTimeoutCase(t *testing.T) {
// env := make(map[string]string)
// env["REQUEST_METHOD"] = "GET"
// env["SERVER_PROTOCOL"] = "HTTP/1.1"
//
// params := url.Values{
// "queue": []string{string("TestTimeoutQueue")},
// "topic": []string{string("TestTimeoutTopic")},
// }
//
// clients := NewCgiClients(ipPort, time.Nanosecond, time.Nanosecond, time.Nanosecond)
//
// res, err := clients.sendToCgi(env, params)
// if err.Error() == "dial tcp 127.0.0.1:59000: i/o timeout" {
// t.Log(res, err)
// } else {
// t.Fatalf("AddJobs Case want err = 'dial tcp 127.0.0.1:59000: i/o timeout' returns, but receive r = %v", res)
// }
// }
//
// func TestSendToCgiErrorCase(t *testing.T) {
// env := make(map[string]string)
// env["REQUEST_METHOD"] = "GET"
// env["SERVER_PROTOCOL"] = "HTTP/1.1"
//
// params := url.Values{
// "queue": []string{string("TestErrorQueue")},
// "topic": []string{string("TestErrorTopic")},
// }
//
// clients := NewCgiClients(ipPort, 3*time.Second, 3*time.Second, 3*time.Second)
//
// res, err := clients.sendToCgi(env, params)
//
// if strings.TrimRight(res.Msg, "\n") == "TestErrorQueue" {
// t.Log(res, err)
// } else {
// t.Fatalf("AddJobs Case want r.Msg = TestErrorQueue returns, but receive r = %v", res)
// }
// }
//
// // todo, have not finish the test case: cgi.PostForm error and ioutil.ReadAll error in cgi.go