最近要拿 ab test 來做 http service 測試
怎麼做 HTTP POST/PUT
一般情況下做 ab test 是
ab -n COUNT -c CONCURRENT URL
要做 POST/PUT 就要改成
#POST ab -n COUNT -c CONCURRENT -p POSTDATA URL #PUT ab -n COUNT -c CONCURRENT -u POSTDATA URL
POSTDATA怎麼產生
一般狀況下 POSTDATA 用文字編輯器就可以編輯,像是這樣
your_name=Peter&fruit=Apple
可是如果是要將檔案資料 POST/PUT 的話,要產生 multipart/form-data 的資料,比方說要將 apple.jpg 這張照片以參數 fruit_pic 上傳到 web server。
--1234567890 Content-Disposition: form-data; name="your_name" Peter --1234567890 Content-Disposition: form-data; name="fruit" Apple --1234567890 Content-Disposition: form-data; name="fruit_pic"; filename="apple.jpg" Content-Type: image/jpeg [base64 encoded file content here] --1234567890--
要注意的是在結尾的boundary(在上面例子中為 1234567890)要多在後面加上–
怎麼產生 base64 encoding 資料?
cat apple.jpg | base64 >> postdata.txt
設定 content type, 指定 boundary, 設定header
ab -n COUNT -c CONCURRENT -p POSTDATA -H HEADER_SETTING -T "multipart/form-data;boundary=1234567890" URL
其中 HEADER_SETTING 的格式為 Header:Header_value。例如:
ab -n 20000 -c 50 -p POSTDATA.txt -H "AuthKey:0123494911" -T "multipart/form-data;boundary=1234567890" http://www.testurl.com/
用 python 跟 c# 的可以參考這篇