merge changes for DRTVWR-162

meow-7.2.2
Oz Linden 2012-06-07 13:39:42 -04:00
commit 680dda8ed2
7 changed files with 40 additions and 32 deletions

View File

@ -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

View File

@ -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}")

View File

@ -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

View File

@ -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";

View File

@ -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

View File

@ -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";

View File

@ -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