Commits

Monty Brandenberg  committed 38382a5

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.

  • Participants
  • Parent commits 4692bdf

Comments (0)

Files changed (3)

File indra/llcorehttp/examples/http_texture_load.cpp

 			  << std::endl;
 
 	// Clean up
+	hr->requestStopThread(NULL);
+	ms_sleep(1000);
 	delete hr;
+	LLCore::HttpRequest::destroyService();
 	term_curl();
 	
     return 0;

File indra/llcorehttp/tests/test_llcorehttp_peer.py

 import sys
 import time
 import select
+import getopt
 from threading import Thread
 from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
 from SocketServer import ThreadingMixIn
     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
     # 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))

File indra/llcorehttp/tests/testrunner.py

     #   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