[tahoe-lafs-trac-stream] [Tahoe-LAFS] #3347: Tor integration tests fail on Windows
Tahoe-LAFS
trac at tahoe-lafs.org
Sun Jul 19 13:14:56 UTC 2020
#3347: Tor integration tests fail on Windows
------------------------------------+-----------------------
Reporter: sajith | Owner:
Type: defect | Status: new
Priority: normal | Milestone: undecided
Component: dev-infrastructure | Version: n/a
Resolution: | Keywords:
Launchpad Bug: |
------------------------------------+-----------------------
Comment (by sajith):
!GitHub may purge the logs eventually, so here's the failure for future
reference:
{{{
2020-06-23T00:15:45.2583036Z
integration/test_aaa_aardvark.py::test_create_flogger PASSED [
5%]
2020-06-23T00:15:57.6151796Z
integration/test_aaa_aardvark.py::test_create_introducer PASSED [
11%]
2020-06-23T00:16:23.5543904Z
integration/test_aaa_aardvark.py::test_create_storage PASSED [
16%]
2020-06-23T00:16:40.1798875Z
integration/test_servers_of_happiness.py::test_upload_immutable PASSED [
22%]
2020-06-23T00:17:49.9033565Z
integration/test_streaming_logs.py::test_streaming_logs PASSED [
27%]
2020-06-23T00:17:50.0034080Z
integration/test_tor.py::test_onion_service_storage ERROR [
33%]
2020-06-23T00:17:50.4545168Z integration/test_web.py::test_index PASSED
[ 38%]
2020-06-23T00:17:50.5339962Z integration/test_web.py::test_index_json
PASSED [ 44%]
2020-06-23T00:17:50.7801376Z integration/test_web.py::test_upload_download
PASSED [ 50%]
2020-06-23T00:17:50.8310376Z integration/test_web.py::test_put PASSED
[ 55%]
2020-06-23T00:17:51.0641041Z integration/test_web.py::test_helper_status
PASSED [ 61%]
2020-06-23T00:17:52.2467157Z integration/test_web.py::test_deep_stats
PASSED [ 66%]
2020-06-23T00:17:53.0700293Z integration/test_web.py::test_status PASSED
[ 72%]
2020-06-23T00:17:58.8040475Z
integration/test_web.py::test_directory_deep_check PASSED [
77%]
2020-06-23T00:17:58.8255745Z integration/test_web.py::test_storage_info
PASSED [ 83%]
2020-06-23T00:17:58.8256523Z
integration/test_web.py::test_storage_info_json PASSED [
88%]
2020-06-23T00:17:58.8256982Z integration/test_web.py::test_introducer_info
PASSED [ 94%]
2020-06-23T00:18:01.0832885Z
integration/test_web.py::test_mkdir_with_children PASSED
[100%]
2020-06-23T00:18:01.0906746Z
2020-06-23T00:18:01.0907325Z =================================== ERRORS
====================================
2020-06-23T00:18:01.0907627Z ________________ ERROR at setup of
test_onion_service_storage _________________
2020-06-23T00:18:01.0907836Z
2020-06-23T00:18:01.0908090Z reactor =
<twisted.internet.selectreactor.SelectReactor object at
0x00000000033DE108>
2020-06-23T00:18:01.0908397Z temp_dir =
'c:\\users\\runner~1\\appdata\\local\\temp\\tahoeheselp'
2020-06-23T00:18:01.0908724Z
2020-06-23T00:18:01.0908971Z @pytest.fixture(scope='session')
2020-06-23T00:18:01.0909238Z def chutney(reactor, temp_dir):
2020-06-23T00:18:01.0909489Z chutney_dir = join(temp_dir,
'chutney')
2020-06-23T00:18:01.0909734Z mkdir(chutney_dir)
2020-06-23T00:18:01.0909971Z
2020-06-23T00:18:01.0910206Z # TODO:
2020-06-23T00:18:01.0910437Z
2020-06-23T00:18:01.0910648Z # check for 'tor' binary explicitly
and emit a "skip" if we can't
2020-06-23T00:18:01.0910905Z # find it
2020-06-23T00:18:01.0911136Z
2020-06-23T00:18:01.0911386Z # XXX yuck! should add a setup.py to
chutney so we can at least
2020-06-23T00:18:01.0911648Z # "pip install <path to tarball>"
and/or depend on chutney in "pip
2020-06-23T00:18:01.0912005Z # install -e .[dev]" (i.e. in the
'dev' extra)
2020-06-23T00:18:01.0912220Z #
2020-06-23T00:18:01.0912485Z #
https://trac.torproject.org/projects/tor/ticket/20343
2020-06-23T00:18:01.0912736Z proto = _DumpOutputProtocol(None)
2020-06-23T00:18:01.0912948Z reactor.spawnProcess(
2020-06-23T00:18:01.0913158Z proto,
2020-06-23T00:18:01.0913452Z 'git',
2020-06-23T00:18:01.0913599Z (
2020-06-23T00:18:01.0913786Z 'git', 'clone', '--depth=1',
2020-06-23T00:18:01.0913998Z
'https://git.torproject.org/chutney.git',
2020-06-23T00:18:01.0914204Z chutney_dir,
2020-06-23T00:18:01.0914413Z ),
2020-06-23T00:18:01.0914598Z > env=environ,
2020-06-23T00:18:01.0914789Z )
2020-06-23T00:18:01.0914935Z
2020-06-23T00:18:01.0915080Z integration\conftest.py:384:
2020-06-23T00:18:01.0915275Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2020-06-23T00:18:01.0915482Z .tox\integration\lib\site-
packages\twisted\internet\posixbase.py:353: in spawnProcess
2020-06-23T00:18:01.0917093Z return Process(self, processProtocol,
executable, args, env, path)
2020-06-23T00:18:01.1659932Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2020-06-23T00:18:01.1673656Z
2020-06-23T00:18:01.1679573Z self = <Process pid=None>
2020-06-23T00:18:01.1682355Z reactor =
<twisted.internet.selectreactor.SelectReactor object at
0x00000000033DE108>
2020-06-23T00:18:01.1685766Z protocol =
<integration.util._DumpOutputProtocol instance at 0x00000000085AEB88>
2020-06-23T00:18:01.1793792Z command = 'git'
2020-06-23T00:18:01.1804563Z args = ['git', 'clone', '--depth=1',
'https://git.torproject.org/chutney.git',
'c:\users\runner~1\appdata\local\temp\tahoeheselp\chutney']
2020-06-23T00:18:01.1807055Z environment = {'COMSPEC':
'C:\\windows\\system32\\cmd.exe', 'COVERAGE_PROCESS_START': '.coveragerc',
'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\runneradmin', ...}
2020-06-23T00:18:01.1815417Z path = None
2020-06-23T00:18:01.1999481Z
2020-06-23T00:18:01.2001061Z def __init__(self, reactor, protocol,
command, args, environment, path):
2020-06-23T00:18:01.2019596Z """
2020-06-23T00:18:01.2022230Z Create a new child process.
2020-06-23T00:18:01.2052576Z """
2020-06-23T00:18:01.2063732Z
_pollingfile._PollingTimer.__init__(self, reactor)
2020-06-23T00:18:01.2072475Z BaseProcess.__init__(self, protocol)
2020-06-23T00:18:01.2084363Z
2020-06-23T00:18:01.2085961Z # security attributes for pipes
2020-06-23T00:18:01.2086536Z sAttrs =
win32security.SECURITY_ATTRIBUTES()
2020-06-23T00:18:01.2086828Z sAttrs.bInheritHandle = 1
2020-06-23T00:18:01.2217916Z
2020-06-23T00:18:01.2218420Z # create the pipes which will connect
to the secondary process
2020-06-23T00:18:01.2218727Z self.hStdoutR, hStdoutW =
win32pipe.CreatePipe(sAttrs, 0)
2020-06-23T00:18:01.2219042Z self.hStderrR, hStderrW =
win32pipe.CreatePipe(sAttrs, 0)
2020-06-23T00:18:01.2219342Z hStdinR, self.hStdinW =
win32pipe.CreatePipe(sAttrs, 0)
2020-06-23T00:18:01.2219763Z
2020-06-23T00:18:01.2220032Z
win32pipe.SetNamedPipeHandleState(self.hStdinW,
2020-06-23T00:18:01.2220324Z
win32pipe.PIPE_NOWAIT,
2020-06-23T00:18:01.2220616Z
None,
2020-06-23T00:18:01.2220954Z
None)
2020-06-23T00:18:01.2221207Z
2020-06-23T00:18:01.2221469Z # set the info structure for the new
process.
2020-06-23T00:18:01.2221744Z StartupInfo =
win32process.STARTUPINFO()
2020-06-23T00:18:01.2221974Z StartupInfo.hStdOutput = hStdoutW
2020-06-23T00:18:01.2222237Z StartupInfo.hStdError = hStderrW
2020-06-23T00:18:01.2222500Z StartupInfo.hStdInput = hStdinR
2020-06-23T00:18:01.2222770Z StartupInfo.dwFlags =
win32process.STARTF_USESTDHANDLES
2020-06-23T00:18:01.2223026Z
2020-06-23T00:18:01.2223300Z # Create new handles whose
inheritance property is false
2020-06-23T00:18:01.2223578Z currentPid =
win32api.GetCurrentProcess()
2020-06-23T00:18:01.2223831Z
2020-06-23T00:18:01.2224129Z tmp =
win32api.DuplicateHandle(currentPid, self.hStdoutR, currentPid, 0, 0,
2020-06-23T00:18:01.2224441Z
win32con.DUPLICATE_SAME_ACCESS)
2020-06-23T00:18:01.2224717Z win32file.CloseHandle(self.hStdoutR)
2020-06-23T00:18:01.2224983Z self.hStdoutR = tmp
2020-06-23T00:18:01.2225482Z
2020-06-23T00:18:01.2225890Z tmp =
win32api.DuplicateHandle(currentPid, self.hStderrR, currentPid, 0, 0,
2020-06-23T00:18:01.2226279Z
win32con.DUPLICATE_SAME_ACCESS)
2020-06-23T00:18:01.2226656Z win32file.CloseHandle(self.hStderrR)
2020-06-23T00:18:01.2226914Z self.hStderrR = tmp
2020-06-23T00:18:01.2227086Z
2020-06-23T00:18:01.2227308Z tmp =
win32api.DuplicateHandle(currentPid, self.hStdinW, currentPid, 0, 0,
2020-06-23T00:18:01.2227651Z
win32con.DUPLICATE_SAME_ACCESS)
2020-06-23T00:18:01.2228065Z win32file.CloseHandle(self.hStdinW)
2020-06-23T00:18:01.2228304Z self.hStdinW = tmp
2020-06-23T00:18:01.2228532Z
2020-06-23T00:18:01.2228780Z # Add the specified environment to
the current environment - this is
2020-06-23T00:18:01.2229044Z # necessary because certain
operations are only supported on Windows
2020-06-23T00:18:01.2229299Z # if certain environment variables
are present.
2020-06-23T00:18:01.2229535Z
2020-06-23T00:18:01.2229769Z env = os.environ.copy()
2020-06-23T00:18:01.2230012Z env.update(environment or {})
2020-06-23T00:18:01.2230212Z newenv = {}
2020-06-23T00:18:01.2230457Z for key, value in items(env):
2020-06-23T00:18:01.2230686Z
2020-06-23T00:18:01.2230922Z key = _fsdecode(key)
2020-06-23T00:18:01.2231164Z value = _fsdecode(value)
2020-06-23T00:18:01.2231396Z
2020-06-23T00:18:01.2231632Z newenv[key] = value
2020-06-23T00:18:01.2231865Z
2020-06-23T00:18:01.2232094Z env = newenv
2020-06-23T00:18:01.2232322Z
2020-06-23T00:18:01.2232577Z # Make sure all the arguments are
Unicode.
2020-06-23T00:18:01.2232826Z args = [_fsdecode(x) for x in args]
2020-06-23T00:18:01.2233058Z
2020-06-23T00:18:01.2233292Z cmdline = quoteArguments(args)
2020-06-23T00:18:01.2233525Z
2020-06-23T00:18:01.2233733Z # The command, too, needs to be
Unicode, if it is a value.
2020-06-23T00:18:01.2233989Z command = _fsdecode(command) if
command else command
2020-06-23T00:18:01.2234244Z path = _fsdecode(path) if path else
path
2020-06-23T00:18:01.2234479Z
2020-06-23T00:18:01.2234720Z # TODO: error detection here. See
#2787 and #4184.
2020-06-23T00:18:01.2234962Z def doCreate():
2020-06-23T00:18:01.2235249Z flags = win32con.CREATE_NO_WINDOW
2020-06-23T00:18:01.2235512Z self.hProcess, self.hThread,
self.pid, dwTid = win32process.CreateProcess(
2020-06-23T00:18:01.2235867Z command, cmdline, None, None,
1, flags, env, path, StartupInfo)
2020-06-23T00:18:01.2236116Z try:
2020-06-23T00:18:01.2236355Z doCreate()
2020-06-23T00:18:01.2236600Z except pywintypes.error as pwte:
2020-06-23T00:18:01.2236809Z if not _invalidWin32App(pwte):
2020-06-23T00:18:01.2237087Z # This behavior isn't
_really_ documented, but let's make it
2020-06-23T00:18:01.2237352Z # consistent with the
behavior that is documented.
2020-06-23T00:18:01.2237598Z > raise OSError(pwte)
2020-06-23T00:18:01.2238987Z E OSError: (2, 'CreateProcess',
'The system cannot find the file specified.')
2020-06-23T00:18:01.2239225Z
2020-06-23T00:18:01.2239481Z .tox\integration\lib\site-
packages\twisted\internet\_dumbwin32proc.py:232: OSError
2020-06-23T00:18:01.2239757Z ==================== 17 passed, 1 error in
142.26 seconds =====================
2020-06-23T00:18:01.2240128Z ERROR: InvocationError for command 'D:\a
\tahoe-lafs\tahoe-lafs\.tox\integration\Scripts\py.test.EXE' --coverage -v
integration (exited with code 1)
2020-06-23T00:18:01.2240372Z ___________________________________ summary
___________________________________
2020-06-23T00:18:01.2240590Z ERROR: integration: commands failed
2020-06-23T00:18:06.4175335Z ##[error]Process completed with exit code 1.
}}}
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3347#comment:1>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list