mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-24 21:15:58 +00:00
Refactor beast core, http, tests, and examples:
* Fix warnings * Port cmake scripts to linux * Add command line options for running test suites * Add examples to CMakeLists * Return std::uint64_t from writer::content_length * basic_parser::write takes asio::const_buffer instead of pointer and size * Turn message test back on now that it passes * Rename to http::headers, use std::allocator, remove http_headers * http::message::method is now a string * Refactor to_string for ConstBufferSequence * Remove chunk_encode from the public interface * Initialize members for default constructed iterators * Disallow default construction for dependent buffer sequences Refactor http::message serialization: * Serialization no longer creates a copy of the headers and modifies them * New function prepare(), sets Connection, Transfer-Encoding, Content-Length based on the body attributes and caller options. Callers can use prepare() to have the fields set automatically, or they can set the fields manually. * Use write for operator<< * Tests for serialization
This commit is contained in:
@@ -11,7 +11,6 @@
|
||||
#include "message_fuzz.hpp"
|
||||
|
||||
#include <beast/streambuf.hpp>
|
||||
#include <beast/buffers_debug.hpp>
|
||||
#include <beast/write_streambuf.hpp>
|
||||
#include <beast/http/error.hpp>
|
||||
#include <beast/http/rfc2616.hpp>
|
||||
@@ -183,6 +182,7 @@ public:
|
||||
void
|
||||
testCallbacks()
|
||||
{
|
||||
using boost::asio::buffer;
|
||||
{
|
||||
cb_checker<true> p;
|
||||
error_code ec;
|
||||
@@ -192,7 +192,7 @@ public:
|
||||
"Content-Length: 1\r\n"
|
||||
"\r\n"
|
||||
"*";
|
||||
p.write(s.data(), s.size(), ec);
|
||||
p.write(buffer(s), ec);
|
||||
if( expect(! ec))
|
||||
{
|
||||
expect(p.method);
|
||||
@@ -214,7 +214,7 @@ public:
|
||||
"Content-Length: 1\r\n"
|
||||
"\r\n"
|
||||
"*";
|
||||
p.write(s.data(), s.size(), ec);
|
||||
p.write(buffer(s), ec);
|
||||
if( expect(! ec))
|
||||
{
|
||||
expect(p.reason);
|
||||
@@ -235,10 +235,11 @@ public:
|
||||
void
|
||||
parse(boost::string_ref const& m, F&& f)
|
||||
{
|
||||
using boost::asio::buffer;
|
||||
{
|
||||
error_code ec;
|
||||
Parser p;
|
||||
p.write(m.data(), m.size(), ec);
|
||||
p.write(buffer(m.data(), m.size()), ec);
|
||||
if(expect(p.complete()))
|
||||
if(expect(! ec, ec.message()))
|
||||
f(p);
|
||||
@@ -247,7 +248,7 @@ public:
|
||||
{
|
||||
error_code ec;
|
||||
Parser p;
|
||||
p.write(&m[0], i, ec);
|
||||
p.write(buffer(&m[0], i), ec);
|
||||
if(! expect(! ec, ec.message()))
|
||||
continue;
|
||||
if(p.complete())
|
||||
@@ -256,7 +257,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
p.write(&m[i], m.size() - i, ec);
|
||||
p.write(buffer(&m[i], m.size() - i), ec);
|
||||
if(! expect(! ec, ec.message()))
|
||||
continue;
|
||||
expect(p.complete());
|
||||
@@ -271,10 +272,11 @@ public:
|
||||
void
|
||||
parse_ev(boost::string_ref const& m, parse_error ev)
|
||||
{
|
||||
using boost::asio::buffer;
|
||||
{
|
||||
error_code ec;
|
||||
null_parser<isRequest> p;
|
||||
p.write(m.data(), m.size(), ec);
|
||||
p.write(buffer(m.data(), m.size()), ec);
|
||||
if(expect(! p.complete()))
|
||||
expect(ec == ev, ec.message());
|
||||
}
|
||||
@@ -282,7 +284,7 @@ public:
|
||||
{
|
||||
error_code ec;
|
||||
null_parser<isRequest> p;
|
||||
p.write(&m[0], i, ec);
|
||||
p.write(buffer(&m[0], i), ec);
|
||||
if(! expect(! p.complete()))
|
||||
continue;
|
||||
if(ec)
|
||||
@@ -290,7 +292,7 @@ public:
|
||||
expect(ec == ev, ec.message());
|
||||
continue;
|
||||
}
|
||||
p.write(&m[i], m.size() - i, ec);
|
||||
p.write(buffer(&m[i], m.size() - i), ec);
|
||||
if(! expect(! p.complete()))
|
||||
continue;
|
||||
if(! expect(ec == ev, ec.message()))
|
||||
@@ -449,11 +451,12 @@ public:
|
||||
void
|
||||
testUpgrade()
|
||||
{
|
||||
using boost::asio::buffer;
|
||||
null_parser<true> p;
|
||||
boost::string_ref s =
|
||||
"GET / HTTP/1.1\r\nConnection: upgrade\r\nUpgrade: WebSocket\r\n\r\n";
|
||||
error_code ec;
|
||||
p.write(s.data(), s.size(), ec);
|
||||
p.write(buffer(s.data(), s.size()), ec);
|
||||
if(! expect(! ec, ec.message()))
|
||||
return;
|
||||
expect(p.complete());
|
||||
@@ -481,6 +484,7 @@ public:
|
||||
void
|
||||
testRandomReq(std::size_t N)
|
||||
{
|
||||
using boost::asio::buffer;
|
||||
using boost::asio::buffer_cast;
|
||||
using boost::asio::buffer_size;
|
||||
message_fuzz mg;
|
||||
@@ -499,7 +503,7 @@ public:
|
||||
for(std::size_t j = 1; j < s.size() - 1; ++j)
|
||||
{
|
||||
error_code ec;
|
||||
p.write(&s[0], j, ec);
|
||||
p.write(buffer(&s[0], j), ec);
|
||||
if(! expect(! ec, ec.message()))
|
||||
{
|
||||
log << escaped_string(s);
|
||||
@@ -507,7 +511,7 @@ public:
|
||||
}
|
||||
if(! p.complete())
|
||||
{
|
||||
p.write(&s[j], s.size() - j, ec);
|
||||
p.write(buffer(&s[j], s.size() - j), ec);
|
||||
if(! expect(! ec, ec.message()))
|
||||
{
|
||||
log << escaped_string(s);
|
||||
@@ -528,6 +532,7 @@ public:
|
||||
void
|
||||
testRandomResp(std::size_t N)
|
||||
{
|
||||
using boost::asio::buffer;
|
||||
using boost::asio::buffer_cast;
|
||||
using boost::asio::buffer_size;
|
||||
message_fuzz mg;
|
||||
@@ -546,7 +551,7 @@ public:
|
||||
for(std::size_t j = 1; j < s.size() - 1; ++j)
|
||||
{
|
||||
error_code ec;
|
||||
p.write(&s[0], j, ec);
|
||||
p.write(buffer(&s[0], j), ec);
|
||||
if(! expect(! ec, ec.message()))
|
||||
{
|
||||
log << escaped_string(s);
|
||||
@@ -554,7 +559,7 @@ public:
|
||||
}
|
||||
if(! p.complete())
|
||||
{
|
||||
p.write(&s[j], s.size() - j, ec);
|
||||
p.write(buffer(&s[j], s.size() - j), ec);
|
||||
if(! expect(! ec, ec.message()))
|
||||
{
|
||||
log << escaped_string(s);
|
||||
|
||||
Reference in New Issue
Block a user