summaryrefslogtreecommitdiff
path: root/indra/llcorehttp
diff options
context:
space:
mode:
authorMonty Brandenberg <monty@lindenlab.com>2012-07-12 17:46:53 +0000
committerMonty Brandenberg <monty@lindenlab.com>2012-07-12 17:46:53 +0000
commitd45b2e7caece787dce4be501b103432c0f06c0f2 (patch)
tree0f386545e330ad0a2cf98ddb96a78ff72995283b /indra/llcorehttp
parent7010459f04177aef1875a110b3d33e10c8ec5cad (diff)
SH-3183 Use valgrind on the library.
Using http_texture_load as the test subject, library looks clean. Did some better shutdown in the program itself and it looks better. Libcurl itself is making a lot of noise. Adapted testrunner to run valgrind as well but the memory allocation tester in the tools themselves grossly interferes with Valgrind operations.
Diffstat (limited to 'indra/llcorehttp')
-rw-r--r--indra/llcorehttp/examples/http_texture_load.cpp3
-rw-r--r--indra/llcorehttp/tests/test_llcorehttp_peer.py14
-rw-r--r--indra/llcorehttp/tests/testrunner.py5
3 files changed, 20 insertions, 2 deletions
diff --git a/indra/llcorehttp/examples/http_texture_load.cpp b/indra/llcorehttp/examples/http_texture_load.cpp
index bcb322bd5c..998dc9240b 100644
--- a/indra/llcorehttp/examples/http_texture_load.cpp
+++ b/indra/llcorehttp/examples/http_texture_load.cpp
@@ -269,7 +269,10 @@ int main(int argc, char** argv)
<< std::endl;
// Clean up
+ hr->requestStopThread(NULL);
+ ms_sleep(1000);
delete hr;
+ LLCore::HttpRequest::destroyService();
term_curl();
return 0;
diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py
index 58b5bedd09..489e8b2979 100644
--- a/indra/llcorehttp/tests/test_llcorehttp_peer.py
+++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py
@@ -33,6 +33,7 @@ import os
import sys
import time
import select
+import getopt
from threading import Thread
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from SocketServer import ThreadingMixIn
@@ -152,6 +153,13 @@ class Server(ThreadingMixIn, HTTPServer):
allow_reuse_address = False
if __name__ == "__main__":
+ do_valgrind = False
+ path_search = False
+ options, args = getopt.getopt(sys.argv[1:], "V", ["valgrind"])
+ for option, value in options:
+ if option == "-V" or option == "--valgrind":
+ do_valgrind = True
+
# Instantiate a Server(TestHTTPRequestHandler) on the first free port
# in the specified port range. Doing this inline is better than in a
# daemon thread: if it blows up here, we'll get a traceback. If it blew up
@@ -159,10 +167,14 @@ if __name__ == "__main__":
# subject test program anyway.
httpd, port = freeport(xrange(8000, 8020),
lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
+
# Pass the selected port number to the subject test program via the
# environment. We don't want to impose requirements on the test program's
# command-line parsing -- and anyway, for C++ integration tests, that's
# performed in TUT code rather than our own.
os.environ["LL_TEST_PORT"] = str(port)
debug("$LL_TEST_PORT = %s", port)
- sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:]))
+ if do_valgrind:
+ args = ["valgrind", "--log-file=./valgrind.log"] + args
+ path_search = True
+ sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), use_path=path_search, *args))
diff --git a/indra/llcorehttp/tests/testrunner.py b/indra/llcorehttp/tests/testrunner.py
index 5b9beb359b..9a2de71142 100644
--- a/indra/llcorehttp/tests/testrunner.py
+++ b/indra/llcorehttp/tests/testrunner.py
@@ -168,7 +168,10 @@ def run(*args, **kwds):
# executable passed as our first arg,
# - [no e] child should inherit this process's environment.
debug("Running %s...", " ".join(args))
- rc = os.spawnv(os.P_WAIT, args[0], args)
+ if kwds.get("use_path", False):
+ rc = os.spawnvp(os.P_WAIT, args[0], args)
+ else:
+ rc = os.spawnv(os.P_WAIT, args[0], args)
debug("%s returned %s", args[0], rc)
return rc