merge changes for DRTVWR-162
commit
680dda8ed2
1
.hgtags
1
.hgtags
|
|
@ -301,6 +301,7 @@ c623bbc854b6f7ee1b33a3718f76715046aa2937 viewer-release-candidate
|
|||
675668bd24d3bea570814f71762a2a806f7e1b8d viewer-release-candidate
|
||||
675668bd24d3bea570814f71762a2a806f7e1b8d 3.3.2-release
|
||||
675668bd24d3bea570814f71762a2a806f7e1b8d viewer-release-candidate
|
||||
600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162
|
||||
9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157
|
||||
a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159
|
||||
24a7281bef42bd4430ceb25db8b195449c2c7de3 DRTVWR-153
|
||||
|
|
|
|||
|
|
@ -254,6 +254,14 @@ if (LL_TESTS)
|
|||
"${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llsdmessage_peer.py"
|
||||
)
|
||||
|
||||
LL_ADD_INTEGRATION_TEST(
|
||||
llhttpclient
|
||||
"llhttpclient.cpp"
|
||||
"${test_libs}"
|
||||
${PYTHON_EXECUTABLE}
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llsdmessage_peer.py"
|
||||
)
|
||||
|
||||
LL_ADD_INTEGRATION_TEST(llavatarnamecache "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(llhost "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(llpartdata "" "${test_libs}")
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @file llhttpclient_tut.cpp
|
||||
* @file llhttpclient_test.cpp
|
||||
* @brief Testing the HTTP client classes.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2006&license=viewerlgpl$
|
||||
|
|
@ -33,9 +33,6 @@
|
|||
#include <tut/tut.hpp>
|
||||
#include "linden_common.h"
|
||||
|
||||
// These are too slow on Windows to actually include in the build. JC
|
||||
#if !LL_WINDOWS
|
||||
|
||||
#include "lltut.h"
|
||||
#include "llhttpclient.h"
|
||||
#include "llformat.h"
|
||||
|
|
@ -46,6 +43,7 @@
|
|||
#include "llsdhttpserver.h"
|
||||
#include "lliohttpserver.h"
|
||||
#include "lliosocket.h"
|
||||
#include "stringize.h"
|
||||
|
||||
namespace tut
|
||||
{
|
||||
|
|
@ -83,7 +81,8 @@ namespace tut
|
|||
struct HTTPClientTestData
|
||||
{
|
||||
public:
|
||||
HTTPClientTestData()
|
||||
HTTPClientTestData():
|
||||
local_server(STRINGIZE("http://127.0.0.1:" << getenv("PORT") << "/"))
|
||||
{
|
||||
apr_pool_create(&mPool, NULL);
|
||||
LLCurl::initClass(false);
|
||||
|
|
@ -134,13 +133,14 @@ namespace tut
|
|||
delete mServerPump;
|
||||
mServerPump = NULL;
|
||||
}
|
||||
|
||||
|
||||
const std::string local_server;
|
||||
|
||||
private:
|
||||
apr_pool_t* mPool;
|
||||
LLPumpIO* mServerPump;
|
||||
LLPumpIO* mClientPump;
|
||||
|
||||
|
||||
protected:
|
||||
void ensureStatusOK()
|
||||
{
|
||||
|
|
@ -257,7 +257,7 @@ namespace tut
|
|||
template<> template<>
|
||||
void HTTPClientTestObject::test<1>()
|
||||
{
|
||||
LLHTTPClient::get("http://www.google.com/", newResult());
|
||||
LLHTTPClient::get(local_server, newResult());
|
||||
runThePump();
|
||||
ensureStatusOK();
|
||||
ensure("result object wasn't destroyed", mResultDeleted);
|
||||
|
|
@ -266,8 +266,8 @@ namespace tut
|
|||
template<> template<>
|
||||
void HTTPClientTestObject::test<2>()
|
||||
{
|
||||
skip("error test depends on dev's local ISP not supplying \"helpful\" search page");
|
||||
LLHTTPClient::get("http://www.invalid", newResult());
|
||||
// Please nobody listen on this particular port...
|
||||
LLHTTPClient::get("http://127.0.0.1:7950", newResult());
|
||||
runThePump();
|
||||
ensureStatusError();
|
||||
}
|
||||
|
|
@ -344,18 +344,13 @@ namespace tut
|
|||
// won't ever let it run. Instead get from a known LLSD
|
||||
// source and compare results with the non-blocking get which
|
||||
// is tested against the mini server earlier.
|
||||
skip("secondlife.com is not reliable enough for unit tests.");
|
||||
|
||||
|
||||
LLSD expected;
|
||||
|
||||
LLHTTPClient::get("http://secondlife.com/xmlhttp/homepage.php", newResult());
|
||||
LLHTTPClient::get(local_server, newResult());
|
||||
runThePump();
|
||||
ensureStatusOK();
|
||||
expected = getResult();
|
||||
LLSD expected = getResult();
|
||||
|
||||
LLSD result;
|
||||
result = LLHTTPClient::blockingGet("http://secondlife.com/xmlhttp/homepage.php");
|
||||
result = LLHTTPClient::blockingGet(local_server);
|
||||
LLSD body = result["body"];
|
||||
ensure_equals("echoed result matches", body.size(), expected.size());
|
||||
}
|
||||
|
|
@ -364,20 +359,18 @@ namespace tut
|
|||
{
|
||||
// This is testing for the presence of the Header in the returned results
|
||||
// from an HTTP::get call.
|
||||
LLHTTPClient::get("http://www.google.com/", newResult());
|
||||
LLHTTPClient::get(local_server, newResult());
|
||||
runThePump();
|
||||
ensureStatusOK();
|
||||
LLSD header = getHeader();
|
||||
ensure_equals("got a header", header.emptyMap().asBoolean(), FALSE);
|
||||
ensure("got a header", ! header.emptyMap().asBoolean());
|
||||
}
|
||||
template<> template<>
|
||||
void HTTPClientTestObject::test<9>()
|
||||
{
|
||||
LLHTTPClient::head("http://www.google.com/", newResult());
|
||||
LLHTTPClient::head(local_server, newResult());
|
||||
runThePump();
|
||||
ensureStatusOK();
|
||||
ensure("result object wasn't destroyed", mResultDeleted);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // !LL_WINDOWS
|
||||
|
|
@ -115,7 +115,7 @@ namespace tut
|
|||
httpPump.post(request);
|
||||
ensure("got response", netio.pump());
|
||||
ensure("success response", success);
|
||||
ensure_equals(result.asString(), "success");
|
||||
ensure_equals(result["reply"].asString(), "success");
|
||||
|
||||
body["status"] = 499;
|
||||
body["reason"] = "custom error message";
|
||||
|
|
|
|||
|
|
@ -78,25 +78,32 @@ class TestHTTPRequestHandler(BaseHTTPRequestHandler):
|
|||
## debug("root node tag %s", tree.getroot().tag)
|
||||
## return llsd.to_python(tree.getroot())
|
||||
|
||||
def do_GET(self):
|
||||
def do_HEAD(self):
|
||||
self.do_GET(withdata=False)
|
||||
|
||||
def do_GET(self, withdata=True):
|
||||
# Of course, don't attempt to read data.
|
||||
self.answer(dict(reply="success", status=500,
|
||||
reason="Your GET operation requested failure"))
|
||||
data = dict(reply="success", body="avatar", random=17)
|
||||
self.answer(data, withdata=withdata)
|
||||
|
||||
def do_POST(self):
|
||||
# Read the provided POST data.
|
||||
self.answer(self.read_xml())
|
||||
|
||||
def answer(self, data):
|
||||
def answer(self, data, withdata=True):
|
||||
debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
|
||||
if "fail" not in self.path:
|
||||
response = llsd.format_xml(data.get("reply", llsd.LLSD("success")))
|
||||
data = data.copy() # we're going to modify
|
||||
# Ensure there's a "reply" key in data, even if there wasn't before
|
||||
data["reply"] = data.get("reply", llsd.LLSD("success"))
|
||||
response = llsd.format_xml(data)
|
||||
debug("success: %s", response)
|
||||
self.send_response(200)
|
||||
self.send_header("Content-type", "application/llsd+xml")
|
||||
self.send_header("Content-Length", str(len(response)))
|
||||
self.end_headers()
|
||||
self.wfile.write(response)
|
||||
if withdata:
|
||||
self.wfile.write(response)
|
||||
else: # fail requested
|
||||
status = data.get("status", 500)
|
||||
# self.responses maps an int status to a (short, long) pair of
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ namespace tut
|
|||
regionPump.post(request);
|
||||
ensure("got response", netio.pump());
|
||||
ensure("success response", success);
|
||||
ensure_equals(result.asString(), "success");
|
||||
ensure_equals(result["reply"].asString(), "success");
|
||||
|
||||
body["status"] = 499;
|
||||
body["reason"] = "custom error message";
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ set(test_SOURCE_FILES
|
|||
lldoubledispatch_tut.cpp
|
||||
llevents_tut.cpp
|
||||
llhttpdate_tut.cpp
|
||||
llhttpclient_tut.cpp
|
||||
llhttpnode_tut.cpp
|
||||
lliohttpserver_tut.cpp
|
||||
llmessageconfig_tut.cpp
|
||||
|
|
|
|||
Loading…
Reference in New Issue