1*6236dae4SAndroid Build Coastguard Worker<testcase> 2*6236dae4SAndroid Build Coastguard Worker<info> 3*6236dae4SAndroid Build Coastguard Worker<keywords> 4*6236dae4SAndroid Build Coastguard WorkerHTTP 5*6236dae4SAndroid Build Coastguard WorkerHTTP POST 6*6236dae4SAndroid Build Coastguard WorkerHTTP MIME POST 7*6236dae4SAndroid Build Coastguard Worker</keywords> 8*6236dae4SAndroid Build Coastguard Worker</info> 9*6236dae4SAndroid Build Coastguard Worker 10*6236dae4SAndroid Build Coastguard Worker# 11*6236dae4SAndroid Build Coastguard Worker# Server-side 12*6236dae4SAndroid Build Coastguard Worker<reply> 13*6236dae4SAndroid Build Coastguard Worker<data> 14*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 200 OK 15*6236dae4SAndroid Build Coastguard WorkerDate: Tue, 09 Nov 2010 14:49:00 GMT 16*6236dae4SAndroid Build Coastguard WorkerServer: test-server/fake swsclose 17*6236dae4SAndroid Build Coastguard WorkerConnection: close 18*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html 19*6236dae4SAndroid Build Coastguard Worker 20*6236dae4SAndroid Build Coastguard Workerhello 21*6236dae4SAndroid Build Coastguard Worker</data> 22*6236dae4SAndroid Build Coastguard Worker<datacheck> 23*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 200 OK 24*6236dae4SAndroid Build Coastguard WorkerDate: Tue, 09 Nov 2010 14:49:00 GMT 25*6236dae4SAndroid Build Coastguard WorkerServer: test-server/fake swsclose 26*6236dae4SAndroid Build Coastguard WorkerConnection: close 27*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html 28*6236dae4SAndroid Build Coastguard Worker 29*6236dae4SAndroid Build Coastguard Workerhello 30*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 200 OK 31*6236dae4SAndroid Build Coastguard WorkerDate: Tue, 09 Nov 2010 14:49:00 GMT 32*6236dae4SAndroid Build Coastguard WorkerServer: test-server/fake swsclose 33*6236dae4SAndroid Build Coastguard WorkerConnection: close 34*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html 35*6236dae4SAndroid Build Coastguard Worker 36*6236dae4SAndroid Build Coastguard Workerhello 37*6236dae4SAndroid Build Coastguard Worker</datacheck> 38*6236dae4SAndroid Build Coastguard Worker</reply> 39*6236dae4SAndroid Build Coastguard Worker 40*6236dae4SAndroid Build Coastguard Worker# Client-side 41*6236dae4SAndroid Build Coastguard Worker<client> 42*6236dae4SAndroid Build Coastguard Worker<features> 43*6236dae4SAndroid Build Coastguard WorkerMime 44*6236dae4SAndroid Build Coastguard Worker</features> 45*6236dae4SAndroid Build Coastguard Worker<server> 46*6236dae4SAndroid Build Coastguard Workerhttp 47*6236dae4SAndroid Build Coastguard Worker</server> 48*6236dae4SAndroid Build Coastguard Worker# tool is what to use instead of 'curl' 49*6236dae4SAndroid Build Coastguard Worker<tool> 50*6236dae4SAndroid Build Coastguard Workerlib%TESTNUMBER 51*6236dae4SAndroid Build Coastguard Worker</tool> 52*6236dae4SAndroid Build Coastguard Worker 53*6236dae4SAndroid Build Coastguard Worker<name> 54*6236dae4SAndroid Build Coastguard WorkerHTTP multi-part chunked mimepost using read callback for the file part 55*6236dae4SAndroid Build Coastguard Worker</name> 56*6236dae4SAndroid Build Coastguard Worker<command> 57*6236dae4SAndroid Build Coastguard Workerhttp://%HOSTIP:%HTTPPORT/%TESTNUMBER 58*6236dae4SAndroid Build Coastguard Worker</command> 59*6236dae4SAndroid Build Coastguard Worker</client> 60*6236dae4SAndroid Build Coastguard Worker 61*6236dae4SAndroid Build Coastguard Worker# 62*6236dae4SAndroid Build Coastguard Worker# Verify data after the test has been "shot" 63*6236dae4SAndroid Build Coastguard Worker<verify> 64*6236dae4SAndroid Build Coastguard Worker<strippart> 65*6236dae4SAndroid Build Coastguard Workers/^--------------------------[A-Za-z0-9]*/------------------------------/ 66*6236dae4SAndroid Build Coastguard Workers/boundary=------------------------[A-Za-z0-9]*/boundary=----------------------------/ 67*6236dae4SAndroid Build Coastguard Worker</strippart> 68*6236dae4SAndroid Build Coastguard Worker# Note that the stripping above removes 12 bytes from every occurrence of the 69*6236dae4SAndroid Build Coastguard Worker# boundary string and since 5 of them are in the body contents, we see 70*6236dae4SAndroid Build Coastguard Worker# (5*12) == 60 bytes less 71*6236dae4SAndroid Build Coastguard Worker<protocol> 72*6236dae4SAndroid Build Coastguard WorkerPOST /%TESTNUMBER HTTP/1.1 73*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 74*6236dae4SAndroid Build Coastguard WorkerAccept: */* 75*6236dae4SAndroid Build Coastguard WorkerTransfer-Encoding: chunked 76*6236dae4SAndroid Build Coastguard WorkerContent-Type: multipart/form-data; boundary=---------------------------- 77*6236dae4SAndroid Build Coastguard WorkerExpect: 100-continue 78*6236dae4SAndroid Build Coastguard Worker 79*6236dae4SAndroid Build Coastguard Worker%if hyper 80*6236dae4SAndroid Build Coastguard Worker7C 81*6236dae4SAndroid Build Coastguard Worker%else 82*6236dae4SAndroid Build Coastguard Worker7c 83*6236dae4SAndroid Build Coastguard Worker%endif 84*6236dae4SAndroid Build Coastguard Worker------------------------------ 85*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="sendfile"; filename="postit2.c" 86*6236dae4SAndroid Build Coastguard Worker 87*6236dae4SAndroid Build Coastguard Workerd 88*6236dae4SAndroid Build Coastguard Worker1 89*6236dae4SAndroid Build Coastguard Workeru 90*6236dae4SAndroid Build Coastguard Worker1 91*6236dae4SAndroid Build Coastguard Workerm 92*6236dae4SAndroid Build Coastguard Worker1 93*6236dae4SAndroid Build Coastguard Workerm 94*6236dae4SAndroid Build Coastguard Worker1 95*6236dae4SAndroid Build Coastguard Workery 96*6236dae4SAndroid Build Coastguard Worker1 97*6236dae4SAndroid Build Coastguard Worker 98*6236dae4SAndroid Build Coastguard Worker 99*6236dae4SAndroid Build Coastguard Worker%if hyper 100*6236dae4SAndroid Build Coastguard Worker6B 101*6236dae4SAndroid Build Coastguard Worker%else 102*6236dae4SAndroid Build Coastguard Worker6b 103*6236dae4SAndroid Build Coastguard Worker%endif 104*6236dae4SAndroid Build Coastguard Worker 105*6236dae4SAndroid Build Coastguard Worker------------------------------ 106*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="callbackdata" 107*6236dae4SAndroid Build Coastguard Worker 108*6236dae4SAndroid Build Coastguard Worker 109*6236dae4SAndroid Build Coastguard Worker1 110*6236dae4SAndroid Build Coastguard Workerd 111*6236dae4SAndroid Build Coastguard Worker1 112*6236dae4SAndroid Build Coastguard Workeru 113*6236dae4SAndroid Build Coastguard Worker1 114*6236dae4SAndroid Build Coastguard Workerm 115*6236dae4SAndroid Build Coastguard Worker1 116*6236dae4SAndroid Build Coastguard Workerm 117*6236dae4SAndroid Build Coastguard Worker1 118*6236dae4SAndroid Build Coastguard Workery 119*6236dae4SAndroid Build Coastguard Worker1 120*6236dae4SAndroid Build Coastguard Worker 121*6236dae4SAndroid Build Coastguard Worker 122*6236dae4SAndroid Build Coastguard Worker%if hyper 123*6236dae4SAndroid Build Coastguard Worker1B2 124*6236dae4SAndroid Build Coastguard Worker%else 125*6236dae4SAndroid Build Coastguard Worker1b2 126*6236dae4SAndroid Build Coastguard Worker%endif 127*6236dae4SAndroid Build Coastguard Worker 128*6236dae4SAndroid Build Coastguard Worker------------------------------ 129*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="filename" 130*6236dae4SAndroid Build Coastguard Worker 131*6236dae4SAndroid Build Coastguard Workerpostit2.c 132*6236dae4SAndroid Build Coastguard Worker------------------------------ 133*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="submit" 134*6236dae4SAndroid Build Coastguard Worker 135*6236dae4SAndroid Build Coastguard Workersend 136*6236dae4SAndroid Build Coastguard Worker------------------------------ 137*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="somename"; filename="somefile.txt" 138*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/plain 139*6236dae4SAndroid Build Coastguard Worker 140*6236dae4SAndroid Build Coastguard Workerblah blah 141*6236dae4SAndroid Build Coastguard Worker-------------------------------- 142*6236dae4SAndroid Build Coastguard Worker 143*6236dae4SAndroid Build Coastguard Worker0 144*6236dae4SAndroid Build Coastguard Worker 145*6236dae4SAndroid Build Coastguard WorkerPOST /%TESTNUMBER HTTP/1.1 146*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 147*6236dae4SAndroid Build Coastguard WorkerAccept: */* 148*6236dae4SAndroid Build Coastguard WorkerTransfer-Encoding: chunked 149*6236dae4SAndroid Build Coastguard WorkerContent-Type: multipart/form-data; boundary=---------------------------- 150*6236dae4SAndroid Build Coastguard WorkerExpect: 100-continue 151*6236dae4SAndroid Build Coastguard Worker 152*6236dae4SAndroid Build Coastguard Worker%if hyper 153*6236dae4SAndroid Build Coastguard Worker8A 154*6236dae4SAndroid Build Coastguard Worker%else 155*6236dae4SAndroid Build Coastguard Worker8a 156*6236dae4SAndroid Build Coastguard Worker%endif 157*6236dae4SAndroid Build Coastguard Worker------------------------------ 158*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="sendfile alternative"; filename="file name 2" 159*6236dae4SAndroid Build Coastguard Worker 160*6236dae4SAndroid Build Coastguard Workerd 161*6236dae4SAndroid Build Coastguard Worker1 162*6236dae4SAndroid Build Coastguard Workeru 163*6236dae4SAndroid Build Coastguard Worker1 164*6236dae4SAndroid Build Coastguard Workerm 165*6236dae4SAndroid Build Coastguard Worker1 166*6236dae4SAndroid Build Coastguard Workerm 167*6236dae4SAndroid Build Coastguard Worker1 168*6236dae4SAndroid Build Coastguard Workery 169*6236dae4SAndroid Build Coastguard Worker1 170*6236dae4SAndroid Build Coastguard Worker 171*6236dae4SAndroid Build Coastguard Worker 172*6236dae4SAndroid Build Coastguard Worker%if hyper 173*6236dae4SAndroid Build Coastguard Worker6B 174*6236dae4SAndroid Build Coastguard Worker%else 175*6236dae4SAndroid Build Coastguard Worker6b 176*6236dae4SAndroid Build Coastguard Worker%endif 177*6236dae4SAndroid Build Coastguard Worker 178*6236dae4SAndroid Build Coastguard Worker------------------------------ 179*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="callbackdata" 180*6236dae4SAndroid Build Coastguard Worker 181*6236dae4SAndroid Build Coastguard Worker 182*6236dae4SAndroid Build Coastguard Worker1 183*6236dae4SAndroid Build Coastguard Workerd 184*6236dae4SAndroid Build Coastguard Worker1 185*6236dae4SAndroid Build Coastguard Workeru 186*6236dae4SAndroid Build Coastguard Worker1 187*6236dae4SAndroid Build Coastguard Workerm 188*6236dae4SAndroid Build Coastguard Worker1 189*6236dae4SAndroid Build Coastguard Workerm 190*6236dae4SAndroid Build Coastguard Worker1 191*6236dae4SAndroid Build Coastguard Workery 192*6236dae4SAndroid Build Coastguard Worker1 193*6236dae4SAndroid Build Coastguard Worker 194*6236dae4SAndroid Build Coastguard Worker 195*6236dae4SAndroid Build Coastguard Worker%if hyper 196*6236dae4SAndroid Build Coastguard Worker1B2 197*6236dae4SAndroid Build Coastguard Worker%else 198*6236dae4SAndroid Build Coastguard Worker1b2 199*6236dae4SAndroid Build Coastguard Worker%endif 200*6236dae4SAndroid Build Coastguard Worker 201*6236dae4SAndroid Build Coastguard Worker------------------------------ 202*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="filename" 203*6236dae4SAndroid Build Coastguard Worker 204*6236dae4SAndroid Build Coastguard Workerpostit2.c 205*6236dae4SAndroid Build Coastguard Worker------------------------------ 206*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="submit" 207*6236dae4SAndroid Build Coastguard Worker 208*6236dae4SAndroid Build Coastguard Workersend 209*6236dae4SAndroid Build Coastguard Worker------------------------------ 210*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="somename"; filename="somefile.txt" 211*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/plain 212*6236dae4SAndroid Build Coastguard Worker 213*6236dae4SAndroid Build Coastguard Workerblah blah 214*6236dae4SAndroid Build Coastguard Worker-------------------------------- 215*6236dae4SAndroid Build Coastguard Worker 216*6236dae4SAndroid Build Coastguard Worker0 217*6236dae4SAndroid Build Coastguard Worker 218*6236dae4SAndroid Build Coastguard Worker</protocol> 219*6236dae4SAndroid Build Coastguard Worker</verify> 220*6236dae4SAndroid Build Coastguard Worker</testcase> 221