12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /*
- valgrind.tst - Valgrind tests on Unix-like systems
- */
- let PORT = 4150
- let valgrind = Cmd.locate('valgrind')
- if (Config.OS == 'linux' && tdepth() >= 4 && valgrind) {
- let host = '127.0.0.1:' + PORT
- let httpCmd = testme.bin.join('http').portable + ' -q --zero '
- let goahead = testme.bin.join('goahead-test').portable + ' --name api.valgrind'
- valgrind += ' -q --tool=memcheck --leak-check=yes --suppressions=../../../build/bin/mpr.supp ' + goahead + ' -v'
- // Run http
- function run(args): String {
- try {
- // print(httpCmd, args)
- let cmd = Cmd(httpCmd + args)
- if (cmd.status != 0) {
- print('STATUS ' + cmd.status)
- print(cmd.error)
- print(cmd.response)
- }
- ttrue(cmd.status == 0)
- return cmd.response
- } catch (e) {
- ttrue(false, e)
- }
- return null
- }
- /*
- Start valgrind and wait till ready
- */
- // print('VALGRIND CMD: ' + valgrind)
- let cmd = Cmd(valgrind, {detach: true})
- let http
- for (i in 10) {
- http = new Http
- try {
- http.get(host + '/index.html')
- if (http.status == 200) break
- } catch (e) {}
- App.sleep(1000)
- http.close()
- }
- if (http.status != 200) {
- throw 'Cannot start goahead-test for valgrind'
- }
- run('-i 100 ' + PORT + '/index.html')
- if (thas('ME_GOAHEAD_CGI')) {
- run(PORT + '/test.cgi')
- }
- run(PORT + '/exit.esp')
- let ok = cmd.wait(10000)
- if (cmd.status != 0) {
- App.log.error('valgrind status: ' + cmd.status)
- App.log.error('valgrind error: ' + cmd.error)
- App.log.error('valgrind output: ' + cmd.response)
- }
- ttrue(cmd.status == 0)
- cmd.stop()
- } else {
- if (Config.OS == 'linux' && !valgrind) {
- tskip('Run with valgrind installed')
- } else {
- tskip('Run on Linux at depth 4 with valgrind installed')
- }
- }
|