diff options
-rw-r--r-- | .hgtags | 1 | ||||
-rw-r--r-- | indra/llmessage/CMakeLists.txt | 8 | ||||
-rw-r--r-- | indra/llmessage/tests/llhttpclient_test.cpp (renamed from indra/test/llhttpclient_tut.cpp) | 39 | ||||
-rw-r--r-- | indra/llmessage/tests/llsdmessage_test.cpp | 2 | ||||
-rw-r--r-- | indra/llmessage/tests/test_llsdmessage_peer.py | 19 | ||||
-rw-r--r-- | indra/newview/tests/llcapabilitylistener_test.cpp | 2 | ||||
-rw-r--r-- | indra/test/CMakeLists.txt | 1 |
7 files changed, 40 insertions, 32 deletions
@@ -300,6 +300,7 @@ c623bbc854b6f7ee1b33a3718f76715046aa2937 viewer-release-candidate 675668bd24d3bea570814f71762a2a806f7e1b8d viewer-release-candidate 675668bd24d3bea570814f71762a2a806f7e1b8d 3.3.2-release 675668bd24d3bea570814f71762a2a806f7e1b8d viewer-release-candidate +600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162 24a7281bef42bd4430ceb25db8b195449c2c7de3 DRTVWR-153 15e90b52dc0297921b022b90d10d797436b8a1bd viewer-release-candidate 6414ecdabc5d89515b08d1f872cf923ed3a5523a DRTVWR-148 diff --git a/indra/llmessage/CMakeLists.txt b/indra/llmessage/CMakeLists.txt index 0f40a670fa..d98781e9e6 100644 --- a/indra/llmessage/CMakeLists.txt +++ b/indra/llmessage/CMakeLists.txt @@ -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}") diff --git a/indra/test/llhttpclient_tut.cpp b/indra/llmessage/tests/llhttpclient_test.cpp index 4b4046632c..843c3bcc4b 100644 --- a/indra/test/llhttpclient_tut.cpp +++ b/indra/llmessage/tests/llhttpclient_test.cpp @@ -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 diff --git a/indra/llmessage/tests/llsdmessage_test.cpp b/indra/llmessage/tests/llsdmessage_test.cpp index 6871ac0d52..44b024a83f 100644 --- a/indra/llmessage/tests/llsdmessage_test.cpp +++ b/indra/llmessage/tests/llsdmessage_test.cpp @@ -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"; diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py index 22edd9dad8..fe4f3a8c01 100644 --- a/indra/llmessage/tests/test_llsdmessage_peer.py +++ b/indra/llmessage/tests/test_llsdmessage_peer.py @@ -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 diff --git a/indra/newview/tests/llcapabilitylistener_test.cpp b/indra/newview/tests/llcapabilitylistener_test.cpp index 2ad08dc1f3..e1cbd28f92 100644 --- a/indra/newview/tests/llcapabilitylistener_test.cpp +++ b/indra/newview/tests/llcapabilitylistener_test.cpp @@ -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"; diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt index 328ab4ca51..816f1d7175 100644 --- a/indra/test/CMakeLists.txt +++ b/indra/test/CMakeLists.txt @@ -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 |