summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llmessage/CMakeLists.txt8
-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.cpp2
-rw-r--r--indra/llmessage/tests/test_llsdmessage_peer.py19
-rw-r--r--indra/newview/tests/llcapabilitylistener_test.cpp2
-rw-r--r--indra/test/CMakeLists.txt1
6 files changed, 39 insertions, 32 deletions
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 0f2c069303..31a791e4b4 100644
--- a/indra/llmessage/tests/llsdmessage_test.cpp
+++ b/indra/llmessage/tests/llsdmessage_test.cpp
@@ -143,7 +143,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