[httperf] Content-type patch for wsesslog
Jaime Peñalba
jpenalbae at gmail.com
Thu May 31 21:26:47 PDT 2007
Hi,
First of all, thanks to all the developers who contributed to httperf
for this handy tool.
After playing a bit with httperf to see if it meets my needs for some
http benchmarking, i found some weird behaviors at wsesslog when
building POST commands.
Lets see the following example:
httperf -d 5 --server=www.pc-workshop.da.ru --wsesslog=1,1,content-test2
content-test2 contains the following text:
------- content-test2 START --------
# session 1 definition
/test.php method=POST contents="user=jaime&pass=password"
------- content-test2 END --------
test.php contains the following code:
------- test.php START --------
<?php
echo "user: ".$_POST['user']."<br>\n";
echo "pass: ".$_POST['pass']."<br>\n";
?>
------- test.php END --------
Request is generated and sent fine, anyway the apache+php combo at my
server ignores post contents.
---- Debug START ----
do_recv.0: received reply data:
0000: 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d HTTP/1.1 200 OK.
0010: 0a 44 61 74 65 3a 20 46 72 69 2c 20 30 31 20 4a .Date: Fri, 01 J
0020: 75 6e 20 32 30 30 37 20 30 34 3a 31 30 3a 34 30 un 2007 04:10:40
0030: 20 47 4d 54 0d 0a 53 65 72 76 65 72 3a 20 41 70 GMT..Server: Ap
0040: 61 63 68 65 0d 0a 58 2d 50 6f 77 65 72 65 64 2d ache..X-Powered-
0050: 42 79 3a 20 50 48 50 2f 34 2e 34 2e 34 2d 38 2b By: PHP/4.4.4-8+
0060: 65 74 63 68 33 0d 0a 43 6f 6e 74 65 6e 74 2d 4c etch3..Content-L
0070: 65 6e 67 74 68 3a 20 32 34 0d 0a 43 6f 6e 74 65 ength: 24..Conte
0080: 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 nt-Type: text/ht
0090: 6d 6c 0d 0a 0d 0a 75 73 65 72 3a 20 3c 62 72 3e ml....user: <br>
00a0: 0a 70 61 73 73 3a 20 3c 62 72 3e 0a 0a 0a .pass: <br>...
---- Debug END ----
After some small research looking for differences between firefox post
request and httperf, i found it was related to the lack of
"Content-type" header at the request, so i added a small patch
attached to this mail to support this header.
Now if desired, the file supplied to wsseslog can contain a ctype
directive which may look like:
------- content-test2 START --------
# session 1 definition
/test.php method=POST ctype=application/x-www-form-urlencoded
contents="user=jaime&pass=password"
------- content-test2 END --------
This way my server handles POST contents on the right way, producing
the expected output:
---- Debug START ----
do_recv.0: received reply data:
0000: 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d HTTP/1.1 200 OK.
0010: 0a 44 61 74 65 3a 20 46 72 69 2c 20 30 31 20 4a .Date: Fri, 01 J
0020: 75 6e 20 32 30 30 37 20 30 34 3a 31 37 3a 31 31 un 2007 04:17:11
0030: 20 47 4d 54 0d 0a 53 65 72 76 65 72 3a 20 41 70 GMT..Server: Ap
0040: 61 63 68 65 0d 0a 58 2d 50 6f 77 65 72 65 64 2d ache..X-Powered-
0050: 42 79 3a 20 50 48 50 2f 34 2e 34 2e 34 2d 38 2b By: PHP/4.4.4-8+
0060: 65 74 63 68 33 0d 0a 43 6f 6e 74 65 6e 74 2d 4c etch3..Content-L
0070: 65 6e 67 74 68 3a 20 33 37 0d 0a 43 6f 6e 74 65 ength: 37..Conte
0080: 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 nt-Type: text/ht
0090: 6d 6c 0d 0a 0d 0a 75 73 65 72 3a 20 6a 61 69 6d ml....user: jaim
00a0: 65 3c 62 72 3e 0a 70 61 73 73 3a 20 70 61 73 73 e<br>.pass: pass
00b0: 77 6f 72 64 3c 62 72 3e 0a 0a 0a word<br>...
---- Debug END ----
Patch code can be improved and probably a better way to handle maximum
lengths for content-type and content-length can be achieved as the
patch is just a proof of concept.
I hope this could help someone as its basic (at least for me) when
trying to simulate sessions which use POST to authenticate and
retrieve a valid cookie to be handled by the new --session-cookies
option.
Regards,
Jaime.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: httperf-0.9.0-content_type.patch
Type: text/x-patch
Size: 2461 bytes
Desc: not available
Url : http://napali.hpl.hp.com/pipermail/httperf/attachments/20070601/318b59d5/httperf-0.9.0-content_type.bin
More information about the httperf
mailing list