comparison tests/run-tests.py @ 40490:889424be7ad2

catapult: introduce HGTESTCATAPULTSERVERPIPE to control run-tests' tracing If unset, it will inherit its value from HGCATAPULTSERVERPIPE (which hg itself also respects). By setting only HGTESTCATAPULTSERVERPIPE, we can get per-command breakdowns of the test runtimes for the whole test suite without overloading the trace file with the contents of the tracing from hg (such as demandimport, etc.) Differential Revision: https://phab.mercurial-scm.org/D5216
author Kyle Lippincott <spectral@google.com>
date Thu, 01 Nov 2018 16:44:02 -0700
parents a9e00c48c5ef
children c311424ea579
comparison
equal deleted inserted replaced
40489:a9e00c48c5ef 40490:889424be7ad2
1082 env["HGUSER"] = "test" 1082 env["HGUSER"] = "test"
1083 env["HGENCODING"] = "ascii" 1083 env["HGENCODING"] = "ascii"
1084 env["HGENCODINGMODE"] = "strict" 1084 env["HGENCODINGMODE"] = "strict"
1085 env["HGHOSTNAME"] = "test-hostname" 1085 env["HGHOSTNAME"] = "test-hostname"
1086 env['HGIPV6'] = str(int(self._useipv6)) 1086 env['HGIPV6'] = str(int(self._useipv6))
1087 if 'HGCATAPULTSERVERPIPE' not in env: 1087 if 'HGTESTCATAPULTSERVERPIPE' not in env:
1088 env['HGCATAPULTSERVERPIPE'] = os.devnull 1088 # If we don't have HGTESTCATAPULTSERVERPIPE explicitly set, pull the
1089 # non-test one in as a default, otherwise set to devnull
1090 env['HGTESTCATAPULTSERVERPIPE'] = \
1091 env.get('HGCATAPULTSERVERPIPE', os.devnull)
1089 1092
1090 extraextensions = [] 1093 extraextensions = []
1091 for opt in self._extraconfigopts: 1094 for opt in self._extraconfigopts:
1092 section, key = opt.encode('utf-8').split(b'.', 1) 1095 section, key = opt.encode('utf-8').split(b'.', 1)
1093 if section != 'extensions': 1096 if section != 'extensions':
1380 script.append(b'echo %s %d $?\n' % (salt, line)) 1383 script.append(b'echo %s %d $?\n' % (salt, line))
1381 activetrace = [] 1384 activetrace = []
1382 session = str(uuid.uuid4()) 1385 session = str(uuid.uuid4())
1383 if PYTHON3: 1386 if PYTHON3:
1384 session = session.encode('ascii') 1387 session = session.encode('ascii')
1385 hgcatapult = os.getenv('HGCATAPULTSERVERPIPE') 1388 hgcatapult = os.getenv('HGTESTCATAPULTSERVERPIPE')
1386 def toggletrace(cmd=None): 1389 def toggletrace(cmd=None):
1387 if not hgcatapult or hgcatapult == os.devnull: 1390 if not hgcatapult or hgcatapult == os.devnull:
1388 return 1391 return
1389 1392
1390 if activetrace: 1393 if activetrace:
1391 script.append( 1394 script.append(
1392 b'echo END %s %s >> "$HGCATAPULTSERVERPIPE"\n' % ( 1395 b'echo END %s %s >> "$HGTESTCATAPULTSERVERPIPE"\n' % (
1393 session, activetrace[0])) 1396 session, activetrace[0]))
1394 if cmd is None: 1397 if cmd is None:
1395 return 1398 return
1396 1399
1397 if isinstance(cmd, str): 1400 if isinstance(cmd, str):
1398 quoted = shellquote(cmd.strip()) 1401 quoted = shellquote(cmd.strip())
1399 else: 1402 else:
1400 quoted = shellquote(cmd.strip().decode('utf8')).encode('utf8') 1403 quoted = shellquote(cmd.strip().decode('utf8')).encode('utf8')
1401 quoted = quoted.replace(b'\\', b'\\\\') 1404 quoted = quoted.replace(b'\\', b'\\\\')
1402 script.append( 1405 script.append(
1403 b'echo START %s %s >> "$HGCATAPULTSERVERPIPE"\n' % ( 1406 b'echo START %s %s >> "$HGTESTCATAPULTSERVERPIPE"\n' % (
1404 session, quoted)) 1407 session, quoted))
1405 activetrace[0:] = [quoted] 1408 activetrace[0:] = [quoted]
1406 1409
1407 script = [] 1410 script = []
1408 1411
1436 # closed by our echo commands. The still-running file gets 1439 # closed by our echo commands. The still-running file gets
1437 # reaped at the end of the script, which causes the while 1440 # reaped at the end of the script, which causes the while
1438 # loop to exit and closes the pipe. Sigh. 1441 # loop to exit and closes the pipe. Sigh.
1439 script.append( 1442 script.append(
1440 b'rtendtracing() {\n' 1443 b'rtendtracing() {\n'
1441 b' echo END %(session)s %(name)s >> $HGCATAPULTSERVERPIPE\n' 1444 b' echo END %(session)s %(name)s >> %(catapult)s\n'
1442 b' rm -f "$TESTTMP/.still-running"\n' 1445 b' rm -f "$TESTTMP/.still-running"\n'
1443 b'}\n' 1446 b'}\n'
1444 b'trap "rtendtracing" 0\n' 1447 b'trap "rtendtracing" 0\n'
1445 b'touch "$TESTTMP/.still-running"\n' 1448 b'touch "$TESTTMP/.still-running"\n'
1446 b'while [ -f "$TESTTMP/.still-running" ]; do sleep 1; done ' 1449 b'while [ -f "$TESTTMP/.still-running" ]; do sleep 1; done '
1447 b'> $HGCATAPULTSERVERPIPE &\n' 1450 b'> %(catapult)s &\n'
1448 b'HGCATAPULTSESSION=%(session)s ; export HGCATAPULTSESSION\n' 1451 b'HGCATAPULTSESSION=%(session)s ; export HGCATAPULTSESSION\n'
1449 b'echo START %(session)s %(name)s >> $HGCATAPULTSERVERPIPE\n' 1452 b'echo START %(session)s %(name)s >> %(catapult)s\n'
1450 % { 1453 % {
1451 'name': self.name, 1454 'name': self.name,
1452 'session': session, 1455 'session': session,
1456 'catapult': hgcatapult,
1453 } 1457 }
1454 ) 1458 )
1455 1459
1456 if self._case: 1460 if self._case:
1457 casestr = b'#'.join(self._case) 1461 casestr = b'#'.join(self._case)