-
Notifications
You must be signed in to change notification settings - Fork 4
/
pprofweb_test.go
427 lines (416 loc) · 27.7 KB
/
pprofweb_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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
package main
import (
"bytes"
"encoding/base64"
"mime/multipart"
"net/http"
"net/http/httptest"
"testing"
)
func TestE2E(t *testing.T) {
allocsPprof, err := base64.StdEncoding.DecodeString(b64AllocsPprof)
if err != nil {
t.Fatal(err)
}
s := &server{}
handler := s.handler()
// write the pprof request
uploadReqBody := &bytes.Buffer{}
writer := multipart.NewWriter(uploadReqBody)
part, err := writer.CreateFormFile(fileFormID, "file.pprof")
if err != nil {
t.Fatal(err)
}
_, err = part.Write(allocsPprof)
if err != nil {
t.Fatal(err)
}
err = writer.Close()
if err != nil {
t.Fatal(err)
}
// send the request!
req := httptest.NewRequest(http.MethodPost, uploadPath, uploadReqBody)
req.Header.Set("Content-Type", writer.FormDataContentType())
w := httptest.NewRecorder()
handler.ServeHTTP(w, req)
resp := w.Result()
if resp.StatusCode != http.StatusSeeOther {
t.Error("unexpected Status:", resp.Status)
}
if resp.Header.Get("Location") != pprofWebPath {
t.Error("unexpected Location header:", resp.Header.Get("Location"))
}
// load the flame graph!
req = httptest.NewRequest(http.MethodGet, pprofWebPath+"flamegraph", nil)
w = httptest.NewRecorder()
handler.ServeHTTP(w, req)
resp = w.Result()
if resp.StatusCode != http.StatusOK {
t.Error("unexpected Status:", resp.Status)
}
if resp.Header.Get("Content-Type") != "text/html" {
t.Error("unexpected Content-Type:", resp.Header.Get("Content-Type"))
}
if resp.Header.Get("Content-Encoding") != "" {
t.Error("request without Accept-Encoding: should not set Content-Encoding:",
resp.Header.Get("Content-Encoding"))
}
// Chrome sends "gzip, deflate, br"
// See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
// req.Header.Set("Accept-Encoding", "deflate;q=0.1, gzip;q=1.0, *, identity, br")
req.Header.Set("Accept-Encoding", "gzip")
w = httptest.NewRecorder()
handler.ServeHTTP(w, req)
resp = w.Result()
if resp.StatusCode != http.StatusOK {
t.Error("unexpected Status:", resp.Status)
}
if resp.Header.Get("Content-Type") != "text/html" {
t.Error("unexpected Content-Type:", resp.Header.Get("Content-Type"))
}
if resp.Header.Get("Content-Encoding") != "gzip" {
t.Error("request with Accept-Encoding: should set Content-Encoding:",
resp.Header.Get("Content-Encoding"))
}
}
const b64AllocsPprof = `
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
qRlZU+ytqPjL/wsAAP//89xlkkbAAAA=
`