Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfe28613

Browse files
committed
Fixing Asynchronous Server Test to look like the Hello World Server test.
1 parente13b7b4 commitfe28613

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

‎libs/network/test/http/server_async.cpp

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,49 @@
99
#include<boost/config/warning_disable.hpp>
1010
#include<boost/network/include/http/server.hpp>
1111
#include<boost/network/utils/thread_pool.hpp>
12+
#include<boost/range/algorithm/find_if.hpp>
1213

14+
namespacenet= boost::network;
1315
namespacehttp= boost::network::http;
1416
namespaceutils= boost::network::utils;
1517

1618
structasync_hello_world;
1719
typedef http::async_server<async_hello_world> server;
1820

1921
structasync_hello_world {
22+
23+
structis_content_length {
24+
template<classHeader>
25+
booloperator()(Headerconst & header) {
26+
returnboost::iequals(name(header),"content-length");
27+
}
28+
};
29+
2030
voidoperator()(server::requestconst & request, server::connection_ptr connection) {
2131
static server::response_header headers[] = {
2232
{"Connection","close"}
2333
, {"Content-Type","text/plain"}
24-
, {"Server","cpp-netlib/0.8-devel"}
34+
, {"Server","cpp-netlib/0.9-devel"}
2535
};
2636
if (request.method =="HEAD") {
2737
connection->set_status(server::connection::ok);
2838
connection->set_headers(boost::make_iterator_range(headers, headers+3));
29-
}elseif (request.method =="GET") {
30-
//static char const lorem_ipsum_10k[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse non eros nisl. Proin in risus quam, non pellentesque est. Suspendisse vehicula condimentum odio, id suscipit libero vehicula id. Mauris quis cursus tellus. Sed interdum pretium rutrum. Etiam sagittis dolor sit amet lacus fermentum volutpat. Sed fermentum accumsan ante id aliquet. Morbi cursus imperdiet eros, vitae molestie nibh luctus quis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quis nulla elit, vitae consequat felis. Mauris in blandit nibh. Aenean ac ultricies magna. Quisque aliquet tellus vitae ipsum egestas vitae semper turpis consectetur. Mauris vitae mauris id mi pulvinar ullamcorper. Cras iaculis, orci tempor aliquet malesuada, lacus enim consequat augue, ut consectetur orci mauris nec justo. Nulla metus libero, tempor et lobortis quis, cursus eu sapien. Morbi volutpat odio sed elit tincidunt sed imperdiet sem sagittis.Donec sapien enim, pharetra vehicula blandit ac, faucibus eu ipsum. Integer vehicula dolor nisi. Nunc quis quam eget lectus feugiat interdum id at quam. Donec hendrerit neque a lorem elementum elementum. Ut non ornare neque. Nulla venenatis tempus leo lobortis condimentum. Fusce eros magna, pellentesque non mollis interdum, porttitor a tellus. Suspendisse at erat non lorem aliquam aliquet ornare id felis. Praesent tincidunt, lectus nec dignissim pharetra, ipsum elit sodales massa, eget accumsan eros purus at metus. Sed sodales dolor vitae magna blandit eget bibendum sapien consectetur. Mauris a viverra felis. Donec sodales tempor lorem, vitae mollis tellus scelerisque quis. Praesent ullamcorper auctor sapien sit amet condimentum. In hac habitasse platea dictumst. In nec laoreet nisi.Nulla facilisi. Nunc varius lectus in nisl condimentum ut bibendum turpis dapibus. Nam a lacus sem. Integer ultricies varius eros, viverra scelerisque diam semper non. In risus est, mattis sed condimentum at, scelerisque at urna. Sed nunc lorem, convallis quis accumsan et, aliquam eu mauris. Nulla fringilla orci metus. Etiam ut purus metus, sed placerat lacus. Morbi porta mauris eget nunc vehicula consectetur. In scelerisque pharetra lacinia. Curabitur ultrices vestibulum ante eget consectetur. Donec nec augue sapien. Donec at feugiat risus. Nulla sit amet justo ac tortor ullamcorper pharetra at sit amet enim. Suspendisse ac massa metus. Quisque pretium, nunc eu vehicula lobortis, lorem ante posuere nisl, sit amet iaculis felis odio quis massa. Duis nec lorem urna, ac porttitor mauris. Nunc blandit, massa vel tincidunt interdum, turpis libero tincidunt eros, sit amet posuere nisi ipsum a nunc. In porta adipiscing sodales. Etiam blandit, nisl eget ultrices laoreet, mauris massa commodo leo, in interdum metus elit vel velit. Quisque sodales lectus eu ligula auctor at scelerisque lectus commodo. Sed luctus nunc vel dui pretium posuere. Donec a ullamcorper odio. Integer eget nunc leo. Nulla facilisi. Vestibulum bibendum, sem quis porttitor lobortis, felis diam convallis diam, id malesuada lorem mi ut libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent cursus metus sit amet neque gravida eu ullamcorper mi fermentum. Sed ut erat ac sem facilisis blandit sit amet eget odio. Morbi a tortor lectus. Phasellus et erat vel tellus pharetra luctus. Nulla molestie sollicitudin sapien vitae commodo. Sed molestie fringilla velit eget varius. Nam augue augue, ultrices eget viverra quis, mattis a mi. Morbi varius sagittis tempor. Praesent a cursus elit. Etiam non molestie enim. Nullam eleifend, sapien ac varius suscipit, lectus orci bibendum nisl, eu pretium lectus dolor at nisl. Etiam posuere viverra condimentum. Etiam nulla urna, consequat eget laoreet vel, tempus nec lorem. Donec ut risus quam. Praesent vitae felis justo. Suspendisse eget magna sed leo suscipit semper. Suspendisse eget mauris lacus, sit amet viverra mauris. Cras sed ligula a tellus faucibus tincidunt. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dictum nisi eget dolor faucibus eu scelerisque ipsum posuere. Aenean varius ultricies est, non tristique lectus auctor a. Curabitur a augue non ligula mollis gravida. Aliquam erat volutpat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam pellentesque vehicula augue, quis posuere nunc dapibus a. Phasellus urna purus, dapibus ultricies iaculis a, laoreet nec sem. Nulla gravida purus eget urna elementum faucibus. Etiam magna neque, iaculis eget egestas et, consequat rutrum urna. Quisque euismod tempus enim, id pulvinar orci cursus a. Vestibulum in urna sapien, nec tempor ligula. Quisque viverra sapien eget justo elementum nec egestas erat placerat. Sed elementum mauris vel felis mattis id adipiscing tellus commodo. Quisque sapien odio, pharetra non accumsan ac, aliquam nec tortor. Sed vitae aliquam magna. Curabitur quam leo, eleifend id bibendum sit amet, viverra et elit. Duis elementum nulla quis nulla rhoncus consectetur. Cras id ante faucibus est viverra facilisis. Fusce vitae odio tortor. Etiam vitae est nunc, et molestie metus. Proin pellentesque, metus sed luctus venenatis, magna metus facilisis lectus, quis bibendum libero turpis eu arcu. Nunc dapibus nibh id eros ultrices vehicula. Vestibulum porta mauris et est vulputate vitae euismod sem ullamcorper. Pellentesque id accumsan sapien. Curabitur sodales viverra arcu ac facilisis. Sed congue facilisis sapien a tempus. Pellentesque elementum, metus sit amet rutrum volutpat, massa enim rutrum purus, ac rhoncus velit erat ac leo. Duis ornare sem vulputate ligula cursus volutpat. Aenean posuere accumsan elit non vestibulum. Duis nunc ligula, vulputate nec iaculis vitae, fermentum vel ante. Sed eget purus ipsum. Cras condimentum mattis hendrerit. Mauris congue arcu sed ante bibendum eget mattis odio feugiat. Donec felis turpis, dignissim mattis varius non, auctor a risus. Pellentesque elit mi, molestie et posuere non, volutpat adipiscing libero. Curabitur in interdum neque. Maecenas luctus pulvinar est, posuere pharetra magna placerat non. Fusce mollis elementum est ac venenatis. Nam quis metus id libero euismod faucibus eget ut tortor. Integer est nibh, hendrerit eget hendrerit in, pretium ac purus. Suspendisse sagittis, erat a placerat malesuada, risus sem condimentum magna, non congue nisi tellus at massa. Aliquam mattis erat id lorem tincidunt sagittis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque tempus blandit. Cras dignissim, nibh elementum tempor tempor, nisi odio iaculis lectus, eget suscipit dui lacus eu nunc. Aliquam quis sem turpis, quis condimentum nunc. Nunc ac justo leo, ut tempus elit. Cras in tempus ante. Suspendisse porttitor libero sit amet felis hendrerit ullamcorper. Ut tellus nunc, fermentum in tristique et, malesuada eget arcu. Nam mi massa, vehicula id fermentum vitae, vehicula quis diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla arcu lorem, ultrices ac ullamcorper id, aliquet vitae eros. Quisque ut arcu augue, eu faucibus leo. Ut mollis interdum felis vitae aliquam. Mauris metus nisi, dictum quis ornare ac, pellentesque in magna. Mauris tincidunt, justo vitae sollicitudin vehicula, sem arcu ullamcorper nunc, vitae tincidunt tellus massa nec diam. Duis pharetra venenatis convallis. Maecenas vulputate, orci eget adipiscing venenatis, nunc turpis congue odio, et lacinia nisi dolor varius lectus. Pellentesque vehicula, nulla in ultricies ullamcorper, magna enim lobortis velit, sed ornare arcu eros quis dui. Donec laoreet sem imperdiet ligula blandit sagittis. Suspendisse nisl felis, ultrices eget tristique quis, feugiat quis nisi. Curabitur iaculis blandit dui, vitae euismod lectus commodo vitae. Nam at tortor non ipsum commodo consequat. Donec tristique tellus id sem dignissim non pharetra nibh tristique. Duis a massa viverra odio ornare rhoncus. Curabitur et quam nisi, sagittis convallis odio. Vivamus justo justo, laoreet nec pellentesque vitae, porta non lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean ac nulla id turpis pharetra luctus in convallis magna. Curabitur id dolor ac tortor congue convallis varius eget lectus. Duis ultricies, tortor tincidunt porttitor condimentum, dui felis viverra magna, nec egestas libero lorem nec tellus. Integer viverra mauris id elit egestas rutrum et at turpis. Praesent pellentesque dignissim accumsan. Suspendisse cursus tempor ipsum, ut tempor lorem vehicula sit amet. Fusce feugiat blandit mauris sit amet dictum. Integer tempor vestibulum turpis, at rhoncus lectus sollicitudin et. Morbi nec sollicitudin sem. Nulla nisl nisl, fringilla in sollicitudin eu, lobortis ut nunc. Quisque euismod felis enim, at blandit velit. In tristique mollis quam, in faucibus mi hendrerit non. Phasellus laoreet posuere nunc sit amet congue. Nam laoreet, sapien eget lacinia lacinia, turpis erat tristique magna, id pellentesque turpis odio non augue. Donec tristique pharetra arcu, sed faucibus lorem tempus ac. Nulla facilisi. Aliquam sagittis, est eget dignissim pretium, massa lacus pulvinar diam, id pretium nibh urna quis tellus. Ut tristique volutpat libero id porta. Vivamus congue nisi vel nisi sagittis ut facilisis lorem facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent et nunc et ligula interdum mattis. Sed bibendum cursus nisl, ut tempus magna placerat vel. Sed porttitor lobortis tristique. Ut mauris orci, aliquet in pharetra et, volutpat vel metus. Quisque tincidunt, nisi at tempus consequat, lorem ligula consequat purus, vel ullamcorper lacus ligula in diam. Nulla a semper dolor. Integer porttitor lectus dolor, eget imperdiet tortor. Integer vitae feugiat nibh. Quisque nisi arcu, auctor pellentesque luctus dapibus, euismod vitae ligula. Aliquam quis purus sit amet orci porta auctor eu at mauris. Quisque ac justo nisl viverra fusce.";
31-
staticchar lorem_ipsum_10k[] ="Hello, World!";
32-
connection->set_status(server::connection::ok);
33-
connection->set_headers(boost::make_iterator_range(headers, headers+3));
34-
connection->write(lorem_ipsum_10k);
3539
}else {
36-
connection->set_status(server::connection::not_supported);
40+
if (request.method =="PUT" || request.method =="POST") {
41+
static std::stringbad_request("Bad Request.");
42+
server::request::headers_container_type::iterator found =
43+
boost::find_if(request.headers,is_content_length());
44+
if (found == request.headers.end()) {
45+
connection->set_status(server::connection::bad_request);
46+
connection->set_headers(boost::make_iterator_range(headers, headers+3));
47+
connection->write(bad_request);
48+
return;
49+
}
50+
}
51+
static std::stringhello_world("Hello, World!");
52+
connection->set_status(server::connection::ok);
3753
connection->set_headers(boost::make_iterator_range(headers, headers+3));
38-
connection->write("Unsupported method.");
54+
connection->write(hello_world);
3955
}
4056
}
4157
};

‎libs/network/test/httplib_acceptance.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#!/bin/env python
77

88
fromsysimportargv
9+
fromtimeimportsleep
910
importhttplib2ashttplib
1011
fromsubprocessimportPopen,PIPE
1112

@@ -19,6 +20,8 @@
1920
try:
2021
pipe=Popen(argv[1],executable=argv[1],stdin=PIPE,stdout=PIPE,close_fds=True)
2122
print('Done with spawning {0}.'.format(argv[1]))
23+
print('Sleeping to give the server a chance to run...')
24+
sleep(1)
2225
except:
2326
print('I cannot spawn\'{0}\' properly.'.format(argv[1]))
2427
exit(1)
@@ -33,7 +36,7 @@ def test(url, method, expected, headers={}, body=''):
3336
print('Request: {method} {url} body=\'{body}\''.format(method=method,url=url,body=body)),
3437
resp,content=client.request(url,method,headers=headers,body=body)
3538
ifcontent!=expected:
36-
print('ERROR:\'{0}\' !=\'{1}\''.format(content,expected))
39+
print('ERROR:\'{0}\' !=\'{1}\'; sizes: {2} != {3}'.format(content,expected,len(content),len(expected)))
3740
status=1
3841
else:
3942
print('... passed.')
@@ -47,7 +50,7 @@ def test_status(url, method, expected, headers={}, body=''):
4750
print('Request: {method} {url} body=\'{body}\''.format(method=method,url=url,body=body)),
4851
resp,content=client.request('http://localhost:8000/','PUT',body='')
4952
ifresp['status']!=expected:
50-
print('ERROR: response status ({0}) !=400'.format(resp['status']))
53+
print('ERROR: response status (got{0}) !=expecting {1}'.format(resp['status'],expected))
5154
status=1
5255
else:
5356
print('... passed.')

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp