Diff of the two buildlogs: -- --- b1/build.log 2025-04-15 14:19:50.014622295 +0000 +++ b2/build.log 2025-04-15 17:44:08.509847714 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Mon May 18 08:19:38 -12 2026 -I: pbuilder-time-stamp: 1779135578 +I: Current time: Wed Apr 16 04:19:54 +14 2025 +I: pbuilder-time-stamp: 1744726794 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -27,52 +27,84 @@ dpkg-source: info: applying 1431.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/534803/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/1168310/tmp/hooks/D01_modify_environment starting +debug: Running on ionos1-amd64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Apr 15 14:20 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/1168310/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/1168310/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=40 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='d1dee05a4518409a9d18bafb30e66e70' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='534803' - PS1='# ' - PS2='> ' + INVOCATION_ID=e78f41086e2f4a95bfb5cf0d6459d5cb + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=1168310 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.T8qqaRJ3/pbuilderrc_lDMF --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.T8qqaRJ3/b1 --logfile b1/build.log tahoe-lafs_1.20.0-5.dsc' - SUDO_GID='110' - SUDO_UID='105' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://213.165.73.152:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.T8qqaRJ3/pbuilderrc_By9X --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.T8qqaRJ3/b2 --logfile b2/build.log tahoe-lafs_1.20.0-5.dsc' + SUDO_GID=110 + SUDO_UID=105 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos5-amd64 6.12.12+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.12-1~bpo12+1 (2025-02-23) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-33-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.133-1 (2025-04-10) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Mar 4 2025 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/534803/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Mar 4 11:20 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/1168310/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -367,7 +399,7 @@ Get: 191 http://deb.debian.org/debian unstable/main amd64 python3-txi2p-tahoe all 0.3.7-4 [28.5 kB] Get: 192 http://deb.debian.org/debian unstable/main amd64 python3-yaml amd64 6.0.2-1+b2 [136 kB] Get: 193 http://deb.debian.org/debian unstable/main amd64 python3-zfec amd64 1.5.7.4-0.2+b1 [52.1 kB] -Fetched 41.4 MB in 2s (20.4 MB/s) +Fetched 41.4 MB in 5s (7727 kB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19840 files and directories currently installed.) @@ -989,8 +1021,8 @@ Setting up tzdata (2025b-2) ... Current default time zone: 'Etc/UTC' -Local time is now: Mon May 18 20:20:53 UTC 2026. -Universal Time is now: Mon May 18 20:20:53 UTC 2026. +Local time is now: Tue Apr 15 14:22:32 UTC 2025. +Universal Time is now: Tue Apr 15 14:22:32 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20240727.1) ... @@ -1177,7 +1209,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/tahoe-lafs-1.20.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../tahoe-lafs_1.20.0-5_source.changes +I: user script /srv/workspace/pbuilder/1168310/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/1168310/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/tahoe-lafs-1.20.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../tahoe-lafs_1.20.0-5_source.changes dpkg-buildpackage: info: source package tahoe-lafs dpkg-buildpackage: info: source version 1.20.0-5 dpkg-buildpackage: info: source distribution unstable @@ -1207,7 +1243,7 @@ platform linux -- Python 3.13.3, pytest-8.3.5, pluggy-1.5.0 rootdir: /build/reproducible-path/tahoe-lafs-1.20.0 configfile: tox.ini -plugins: typeguard-4.4.2, hypothesis-6.130.5 +plugins: hypothesis-6.130.5, typeguard-4.4.2 collected 1847 items / 1 deselected / 1846 selected allmydata/test/cli/test_admin.py ....... [ 0%] @@ -1226,7 +1262,7 @@ allmydata/test/cli/test_list.py ...... [ 10%] allmydata/test/cli/test_mv.py .... [ 10%] allmydata/test/cli/test_put.py .............. [ 11%] -allmydata/test/cli/test_run.py ....... [ 11%] +allmydata/test/cli/test_run.py ......F [ 11%] allmydata/test/cli/test_status.py ................. [ 12%] allmydata/test/mutable/test_checker.py ......................... [ 13%] allmydata/test/mutable/test_datahandle.py ... [ 14%] @@ -1287,7 +1323,7 @@ allmydata/test/test_multi_introducers.py ....... [ 52%] allmydata/test/test_netstring.py .... [ 52%] allmydata/test/test_no_network.py .. [ 52%] -allmydata/test/test_node.py ............................................ [ 55%] +allmydata/test/test_node.py ......................................F..... [ 55%] ... [ 55%] allmydata/test/test_observer.py ....... [ 55%] allmydata/test/test_openmetrics.py . [ 55%] @@ -1301,11 +1337,11 @@ allmydata/test/test_storage.py ......................................... [ 62%] .................................................................. [ 65%] allmydata/test/test_storage_client.py ........................... [ 67%] -allmydata/test/test_storage_http.py .................................... [ 69%] -.............................. [ 70%] +allmydata/test/test_storage_http.py ..................F................. [ 69%] +....................F.......F. [ 70%] allmydata/test/test_storage_https.py ..... [ 71%] allmydata/test/test_storage_web.py ........................ [ 72%] -allmydata/test/test_system.py .............. [ 73%] +allmydata/test/test_system.py .......F.FEFEFFEFE [ 73%] allmydata/test/test_testing.py .... [ 73%] allmydata/test/test_time_format.py ........ [ 73%] allmydata/test/test_tor_provider.py ................................. [ 75%] @@ -1315,19 +1351,9347 @@ allmydata/test/test_util.py .................................. [ 82%] allmydata/test/web/test_common.py .......... [ 82%] allmydata/test/web/test_grid.py ............ [ 83%] -allmydata/test/web/test_introducer.py ..... [ 83%] +allmydata/test/web/test_introducer.py ..F.. [ 83%] allmydata/test/web/test_logs.py .. [ 83%] allmydata/test/web/test_private.py .... [ 83%] allmydata/test/web/test_root.py .... [ 84%] allmydata/test/web/test_status.py ... [ 84%] allmydata/test/web/test_util.py ...... [ 84%] -allmydata/test/web/test_web.py ......................................... [ 86%] -........................................................................ [ 90%] -........................................................................ [ 94%] -........................................................................ [ 98%] -................. [ 99%] +allmydata/test/web/test_web.py ......FE............F...............F.... [ 86%] +................F..........FFFFF.F.F.F.FFFFF...FFFFFF..FFFFFFFFFFF..FFFF [ 90%] +FF.FFF.F....FFFFF.FF..FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 94%] +FFFF.FF..FFFF..........FFFF.FFFFFFFFFFFFFFFFFFFFF.....FFFF.....F.......F [ 98%] +E.................. [ 99%] allmydata/test/web/test_webish.py ............ [100%] +==================================== ERRORS ==================================== +____________ ERROR at teardown of HTTPSystemTest.test_mutable_mdmf _____________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +twisted.trial.util.DirtyReactorAggregateError: Reactor was unclean. +DelayedCalls: (set twisted.internet.base.DelayedCall.debug = True to debug) +)> +(HTTPNativeStorageServer._connect, *(), **{})()> +)> +(HTTPNativeStorageServer._connect, *(), **{})()> +(HTTPNativeStorageServer._connect, *(), **{})()> +)> +(HTTPNativeStorageServer._connect, *(), **{})()> +(HTTPNativeStorageServer._connect, *(), **{})()> +(HTTPNativeStorageServer._connect, *(), **{})()> +(HTTPNativeStorageServer._connect, *(), **{})()> +(HTTPNativeStorageServer._connect, *(), **{})()> +(HTTPNativeStorageServer._connect, *(), **{})()> +(HTTPNativeStorageServer._connect, *(), **{})()> + +.timeItOut()> +.timeItOut()> + +.timeItOut()> +.timeItOut()> +.timeItOut()> +(HTTPNativeStorageServer._connect, *(), **{})()> + + +.timeItOut()> +.timeItOut()> +(CPUUsageMonitor.check, *(), **{})()> +(CPUUsageMonitor.check, *(), **{})()> +(HTTPNativeStorageServer._connect, *(), **{})()> +(HTTPNativeStorageServer._connect, *(), **{})()> + +(HTTPNativeStorageServer._connect, *(), **{})()> +.timeItOut()> +.timeItOut()> + + +.timeItOut()> +.timeItOut()> + + + + + + + + + + + + + + + + + + + + + + +(CPUUsageMonitor.check, *(), **{})()> + + +(CPUUsageMonitor.check, *(), **{})()> + +.timeItOut()> + + +(CPUUsageMonitor.check, *(), **{})()> + + + + + + + + + + + + + + + + + + + + + +)> +)> + + + + + + + + + + + +____________ ERROR at teardown of HTTPSystemTest.test_mutable_sdmf _____________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +twisted.trial.util.DirtyReactorAggregateError: Reactor was unclean. +Selectables: +< to ('127.0.0.1', 43059) at 7f4034359130> + +___ ERROR at teardown of HTTPSystemTest.test_upload_and_download_random_key ____ + +logger = +func = > +args = (, 242, 25), kw = {} +lp = 'FoolscapOrHttpForTub,42,127.0.0.1' + + def callWithLogger(logger, func, *args, **kw): + """ + Utility method which wraps a function in a try:/except:, logs a failure if + one occurs, and uses the system's logPrefix. + """ + try: + lp = logger.logPrefix() + except KeyboardInterrupt: + raise + except BaseException: + lp = "(buggy logPrefix method)" + err(system=lp) + try: +> return callWithContext({"system": lp}, func, *args, **kw) + +/usr/lib/python3/dist-packages/twisted/python/log.py:96: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/log.py:80: in callWithContext + return context.call({ILogContext: newCtx}, func, *args, **kw) +/usr/lib/python3/dist-packages/twisted/python/context.py:117: in callWithContext + return self.currentContext().callWithContext(ctx, func, *args, **kw) +/usr/lib/python3/dist-packages/twisted/python/context.py:82: in callWithContext + return func(*args, **kw) +/usr/lib/python3/dist-packages/twisted/internet/posixbase.py:504: in _doReadOrWrite + self._disconnectSelectable(selectable, why, inRead) +/usr/lib/python3/dist-packages/twisted/internet/posixbase.py:112: in _disconnectSelectable + selectable.connectionLost(f) +/usr/lib/python3/dist-packages/twisted/internet/tcp.py:328: in connectionLost + protocol.connectionLost(reason) +/usr/lib/python3/dist-packages/twisted/protocols/tls.py:409: in connectionLost + ProtocolWrapper.connectionLost(self, reason) +/usr/lib/python3/dist-packages/twisted/protocols/policies.py:114: in connectionLost + self.wrappedProtocol.connectionLost(reason) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +oself = +type = + + def __get__(self, oself, type=None): + """ + Retrieve the C{self.attributeName} property from I{oself}. + """ + if oself is None: + return _ProxiedClassMethod(self.attributeName, self.originalAttribute) +> original = getattr(oself, self.originalAttribute) +E AttributeError: '_GenericHTTPChannelProtocol' object has no attribute '_channel' + +/usr/lib/python3/dist-packages/twisted/python/components.py:405: AttributeError +----------------------------- Captured stdout call ----------------------------- +[] +----------------------------- Captured stderr call ----------------------------- +Unhandled Error +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/twisted/python/log.py", line 96, in callWithLogger + return callWithContext({"system": lp}, func, *args, **kw) + File "/usr/lib/python3/dist-packages/twisted/python/log.py", line 80, in callWithContext + return context.call({ILogContext: newCtx}, func, *args, **kw) + File "/usr/lib/python3/dist-packages/twisted/python/context.py", line 117, in callWithContext + return self.currentContext().callWithContext(ctx, func, *args, **kw) + File "/usr/lib/python3/dist-packages/twisted/python/context.py", line 82, in callWithContext + return func(*args, **kw) + File "/usr/lib/python3/dist-packages/twisted/internet/posixbase.py", line 504, in _doReadOrWrite + self._disconnectSelectable(selectable, why, inRead) + File "/usr/lib/python3/dist-packages/twisted/internet/posixbase.py", line 112, in _disconnectSelectable + selectable.connectionLost(f) + File "/usr/lib/python3/dist-packages/twisted/internet/tcp.py", line 328, in connectionLost + protocol.connectionLost(reason) + File "/usr/lib/python3/dist-packages/twisted/protocols/tls.py", line 409, in connectionLost + ProtocolWrapper.connectionLost(self, reason) + File "/usr/lib/python3/dist-packages/twisted/protocols/policies.py", line 114, in connectionLost + self.wrappedProtocol.connectionLost(reason) + File "/usr/lib/python3/dist-packages/twisted/python/components.py", line 405, in __get__ + original = getattr(oself, self.originalAttribute) +builtins.AttributeError: '_GenericHTTPChannelProtocol' object has no attribute '_channel' + +________________ ERROR at teardown of HTTPConnections.test_rref ________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +twisted.trial.util.DirtyReactorAggregateError: Reactor was unclean. +DelayedCalls: (set twisted.internet.base.DelayedCall.debug = True to debug) +(PollMixin._poll, *(>, 1744730247.4505367), **{})()> + +____________________ ERROR at teardown of Web.test_CSS_FILE ____________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +twisted.trial.util.DirtyReactorAggregateError: Reactor was unclean. +Selectables: +< to ('127.0.0.1', 39219) at 7f406574d040> +<_GenericHTTPChannelProtocol #0 on 39219> + +_____________________ ERROR at teardown of Web.test_static _____________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +twisted.trial.util.DirtyReactorAggregateError: Reactor was unclean. +Selectables: +<_GenericHTTPChannelProtocol #0 on 39891> +< to ('127.0.0.1', 39891) at 7f4034359220> + +=================================== FAILURES =================================== +________________________ RunTests.test_pidfile_contents ________________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +testtools.testresult.real._StringException: + Exception Group Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 216, in maybeDeferred + | result = f(*args, **kwargs) + | File "/usr/lib/python3/dist-packages/testtools/testcase.py", line 756, in _run_test_method + | return self._get_test_method()() + | ~~~~~~~~~~~~~~~~~~~~~~~^^ + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/eliotutil.py", line 156, in run_with_logging + | return test_method(*args, **kwargs) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_run.py", line 270, in test_pidfile_contents + | def test_pidfile_contents(self, content): + | ^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1837, in wrapped_test + | raise the_error_hypothesis_found + | hypothesis.errors.FlakyFailure: Hypothesis test_pidfile_contents(self=, content='LÖ\x02') produces unreliable results: Falsified on the first call but did not on a subsequent one (1 sub-exception) + | Falsifying example: test_pidfile_contents( + | self=, + | content='LÖ\x02', + | ) + | Unreliable test timings! On an initial run, this test took 264.25ms, which exceeded the deadline of 200.00ms, but on a subsequent run it took 157.93 ms, which did not. If you expect this sort of variability in your test timings, consider turning deadlines off for this test by setting deadline=None. + +-+---------------- 1 ---------------- + | Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1085, in _execute_once_for_engine + | result = self.execute_once(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1022, in execute_once + | result = self.test_runner(data, run) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 729, in default_executor + | return function(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 996, in run + | return test(*args, **kwargs) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_run.py", line 270, in test_pidfile_contents + | def test_pidfile_contents(self, content): + | ^^^^^^^^^^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 926, in test + | raise DeadlineExceeded( + | datetime.timedelta(seconds=runtime), self.settings.deadline + | ) + | hypothesis.errors.DeadlineExceeded: Test took 264.25ms, which exceeds the deadline of 200.00ms + +------------------------------------ + + +________________________ Listeners.test_multiple_ports _________________________ + + Exception Group Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 216, in maybeDeferred + | result = f(*args, **kwargs) + | File "/usr/lib/python3/dist-packages/twisted/internet/utils.py", line 227, in runWithWarningsSuppressed + | raise exc_info[1].with_traceback(exc_info[2]) + | File "/usr/lib/python3/dist-packages/twisted/internet/utils.py", line 223, in runWithWarningsSuppressed + | result = f(*a, **kw) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py", line 853, in test_multiple_ports + | def test_multiple_ports(self, ports): + | ^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1837, in wrapped_test + | raise the_error_hypothesis_found + | hypothesis.errors.FlakyFailure: Hypothesis test_multiple_ports(self=, ports={1, 60799}) produces unreliable results: Falsified on the first call but did not on a subsequent one (1 sub-exception) + | Falsifying example: test_multiple_ports( + | self=, + | ports={1, 60799}, + | ) + | Unreliable test timings! On an initial run, this test took 774.66ms, which exceeded the deadline of 200.00ms, but on a subsequent run it took 0.09 ms, which did not. If you expect this sort of variability in your test timings, consider turning deadlines off for this test by setting deadline=None. + +-+---------------- 1 ---------------- + | Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1085, in _execute_once_for_engine + | result = self.execute_once(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1022, in execute_once + | result = self.test_runner(data, run) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 729, in default_executor + | return function(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 996, in run + | return test(*args, **kwargs) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py", line 853, in test_multiple_ports + | def test_multiple_ports(self, ports): + | ^^^^^^^^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 926, in test + | raise DeadlineExceeded( + | datetime.timedelta(seconds=runtime), self.settings.deadline + | ) + | hypothesis.errors.DeadlineExceeded: Test took 774.66ms, which exceeds the deadline of 200.00ms + +------------------------------------ +___________ CustomHTTPServerTests.test_limited_content_does_not_fit ____________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +testtools.testresult.real._StringException: + Exception Group Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 216, in maybeDeferred + | result = f(*args, **kwargs) + | File "/usr/lib/python3/dist-packages/testtools/testcase.py", line 756, in _run_test_method + | return self._get_test_method()() + | ~~~~~~~~~~~~~~~~~~~~~~~^^ + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/eliotutil.py", line 156, in run_with_logging + | return test_method(*args, **kwargs) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_http.py", line 470, in test_limited_content_does_not_fit + | def test_limited_content_does_not_fit(self, length): + | ^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1837, in wrapped_test + | raise the_error_hypothesis_found + | hypothesis.errors.FlakyFailure: Hypothesis test_limited_content_does_not_fit(self=, length=388538) produces unreliable results: Falsified on the first call but did not on a subsequent one (1 sub-exception) + | Falsifying example: test_limited_content_does_not_fit( + | self=, + | length=388538, + | ) + | Unreliable test timings! On an initial run, this test took 2719.94ms, which exceeded the deadline of 200.00ms, but on a subsequent run it took 26.77 ms, which did not. If you expect this sort of variability in your test timings, consider turning deadlines off for this test by setting deadline=None. + +-+---------------- 1 ---------------- + | Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1085, in _execute_once_for_engine + | result = self.execute_once(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1022, in execute_once + | result = self.test_runner(data, run) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 729, in default_executor + | return function(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 996, in run + | return test(*args, **kwargs) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_http.py", line 470, in test_limited_content_does_not_fit + | def test_limited_content_does_not_fit(self, length): + | ^^^^^^^^^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 926, in test + | raise DeadlineExceeded( + | datetime.timedelta(seconds=runtime), self.settings.deadline + | ) + | hypothesis.errors.DeadlineExceeded: Test took 2719.94ms, which exceeds the deadline of 200.00ms + +------------------------------------ + + +_________________ ImmutableSharedTests.test_read_with_no_range _________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +testtools.testresult.real._StringException: + Exception Group Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 216, in maybeDeferred + | result = f(*args, **kwargs) + | File "/usr/lib/python3/dist-packages/testtools/testcase.py", line 756, in _run_test_method + | return self._get_test_method()() + | ~~~~~~~~~~~~~~~~~~~~~~~^^ + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/eliotutil.py", line 156, in run_with_logging + | return test_method(*args, **kwargs) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_http.py", line 1788, in test_read_with_no_range + | def test_read_with_no_range(self, data_length): + | ^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1837, in wrapped_test + | raise the_error_hypothesis_found + | hypothesis.errors.FlakyFailure: Hypothesis test_read_with_no_range(self=, data_length=232503) produces unreliable results: Falsified on the first call but did not on a subsequent one (1 sub-exception) + | Falsifying example: test_read_with_no_range( + | self=, + | data_length=232503, + | ) + | Unreliable test timings! On an initial run, this test took 2911.33ms, which exceeded the deadline of 200.00ms, but on a subsequent run it took 71.93 ms, which did not. If you expect this sort of variability in your test timings, consider turning deadlines off for this test by setting deadline=None. + +-+---------------- 1 ---------------- + | Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1085, in _execute_once_for_engine + | result = self.execute_once(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1022, in execute_once + | result = self.test_runner(data, run) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 729, in default_executor + | return function(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 996, in run + | return test(*args, **kwargs) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_http.py", line 1788, in test_read_with_no_range + | def test_read_with_no_range(self, data_length): + | ^^^^^^^^^^^^^^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 926, in test + | raise DeadlineExceeded( + | datetime.timedelta(seconds=runtime), self.settings.deadline + | ) + | hypothesis.errors.DeadlineExceeded: Test took 2911.33ms, which exceeds the deadline of 200.00ms + +------------------------------------ + + +__________________ MutableSharedTests.test_read_with_no_range __________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +testtools.testresult.real._StringException: + Exception Group Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 216, in maybeDeferred + | result = f(*args, **kwargs) + | File "/usr/lib/python3/dist-packages/testtools/testcase.py", line 756, in _run_test_method + | return self._get_test_method()() + | ~~~~~~~~~~~~~~~~~~~~~~~^^ + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/eliotutil.py", line 156, in run_with_logging + | return test_method(*args, **kwargs) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_http.py", line 1836, in test_read_with_no_range + | def test_read_with_no_range(self, data_length): + | ^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1837, in wrapped_test + | raise the_error_hypothesis_found + | hypothesis.errors.FlakyFailure: Hypothesis test_read_with_no_range(self=, data_length=146972) produces unreliable results: Falsified on the first call but did not on a subsequent one (1 sub-exception) + | Falsifying example: test_read_with_no_range( + | self=, + | data_length=146972, + | ) + | Unreliable test timings! On an initial run, this test took 2708.72ms, which exceeded the deadline of 200.00ms, but on a subsequent run it took 52.95 ms, which did not. If you expect this sort of variability in your test timings, consider turning deadlines off for this test by setting deadline=None. + +-+---------------- 1 ---------------- + | Traceback (most recent call last): + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1085, in _execute_once_for_engine + | result = self.execute_once(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1022, in execute_once + | result = self.test_runner(data, run) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 729, in default_executor + | return function(data) + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 996, in run + | return test(*args, **kwargs) + | File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_http.py", line 1836, in test_read_with_no_range + | def test_read_with_no_range(self, data_length): + | ^^^^^^^^^^^^^^^^^^^^ + | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 926, in test + | raise DeadlineExceeded( + | datetime.timedelta(seconds=runtime), self.settings.deadline + | ) + | hypothesis.errors.DeadlineExceeded: Test took 2708.72ms, which exceeds the deadline of 200.00ms + +------------------------------------ + + +________________________ HTTPSystemTest.test_filesystem ________________________ + +self = + + def _runCallbacks(self) -> None: + """ + Run the chain of callbacks once a result is available. + + This consists of a simple loop over all of the callbacks, calling each + with the current result and making the current result equal to the + return value (or raised exception) of that call. + + If L{_runningCallbacks} is true, this loop won't run at all, since + it is already running above us on the call stack. If C{self.paused} is + true, the loop also won't run, because that's what it means to be + paused. + + The loop will terminate before processing all of the callbacks if a + L{Deferred} without a result is encountered. + + If a L{Deferred} I{with} a result is encountered, that result is taken + and the loop proceeds. + + @note: The implementation is complicated slightly by the fact that + chaining (associating two L{Deferred}s with each other such that one + will wait for the result of the other, as happens when a Deferred is + returned from a callback on another L{Deferred}) is supported + iteratively rather than recursively, to avoid running out of stack + frames when processing long chains. + """ + if self._runningCallbacks: + # Don't recursively run callbacks + return + + # Keep track of all the Deferreds encountered while propagating results + # up a chain. The way a Deferred gets onto this stack is by having + # added its _continuation() to the callbacks list of a second Deferred + # and then that second Deferred being fired. ie, if ever had _chainedTo + # set to something other than None, you might end up on this stack. + chain: List[Deferred[Any]] = [self] + + while chain: + current = chain[-1] + + if current.paused: + # This Deferred isn't going to produce a result at all. All the + # Deferreds up the chain waiting on it will just have to... + # wait. + return + + finished = True + current._chainedTo = None + while current.callbacks: + item = current.callbacks.pop(0) + if not isinstance(current.result, Failure): + callback, args, kwargs = item[0] + else: + # type note: Callback signature also works for Errbacks in + # this context. + callback, args, kwargs = item[1] + + # Avoid recursion if we can. + if callback is _CONTINUE: + # Give the waiting Deferred our current result and then + # forget about that result ourselves. + + # We don't use cast() for performance reasons: + chainee: Deferred[object] = args[0] # type: ignore[assignment] + chainee.result = current.result + current.result = None + # Making sure to update _debugInfo + if current._debugInfo is not None: + current._debugInfo.failResult = None + chainee.paused -= 1 + chain.append(chainee) + # Delay cleaning this Deferred and popping it from the chain + # until after we've dealt with chainee. + finished = False + break + + try: + current._runningCallbacks = True + try: + # type note: mypy sees `callback is _CONTINUE` above and + # then decides that `callback` is not callable. + # This goes away when we use `_Sentinel._CONTINUE` + # instead, but we don't want to do that attribute + # lookup in this hot code path, so we ignore the mypy + # complaint here. +> current.result = callback( # type: ignore[misc] + current.result, *args, **kwargs + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:1088: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +allmydata/mutable/filenode.py:432: in _maybe_retry + failure.trap(NotEnoughSharesError) +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:1088: in _runCallbacks + current.result = callback( # type: ignore[misc] +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +servermap = +v = None + + def _get_version(servermap, v): + if v and v not in servermap.recoverable_versions(): + v = None + elif not v: + v = servermap.best_recoverable_version() + if not v: +> raise UnrecoverableFileError("no recoverable versions") +E allmydata.mutable.common.UnrecoverableFileError: no recoverable versions + +allmydata/mutable/filenode.py:401: UnrecoverableFileError +_______________________ HTTPSystemTest.test_mutable_mdmf _______________________ + + +During handling of the above exception, another exception occurred: +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +twisted.internet.defer.TimeoutError: (test_mutable_mdmf) still running at 300.0 secs + +_______________________ HTTPSystemTest.test_mutable_sdmf _______________________ + +result = > return True> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d1f2a00> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +allmydata/test/common_system.py:801: in set_up_nodes + yield self._set_up_client_nodes(self.FORCE_FOOLSCAP_FOR_STORAGE) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +allmydata/test/common_system.py:841: in _set_up_client_nodes + yield self.wait_for_connections() +/usr/lib/python3/dist-packages/twisted/internet/defer.py:1088: in _runCallbacks + current.result = callback( # type: ignore[misc] +allmydata/util/pollmixin.py:35: in _convert_done + f.trap(PollComplete) +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:216: in maybeDeferred + result = f(*args, **kwargs) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +check_f = > +cutoff = 1744729770.419592 + + def _poll(self, check_f, cutoff): + if cutoff is not None and time.time() > cutoff: +> raise TimeoutError("PollMixin never saw %s return True" % check_f) +E allmydata.util.pollmixin.TimeoutError: PollMixin never saw > return True + +allmydata/util/pollmixin.py:42: TimeoutError +______________ HTTPSystemTest.test_upload_and_download_convergent ______________ + +result = > return True> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40353658c0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +allmydata/test/common_system.py:801: in set_up_nodes + yield self._set_up_client_nodes(self.FORCE_FOOLSCAP_FOR_STORAGE) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +allmydata/test/common_system.py:841: in _set_up_client_nodes + yield self.wait_for_connections() +/usr/lib/python3/dist-packages/twisted/internet/defer.py:1088: in _runCallbacks + current.result = callback( # type: ignore[misc] +allmydata/util/pollmixin.py:35: in _convert_done + f.trap(PollComplete) +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:216: in maybeDeferred + result = f(*args, **kwargs) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +check_f = > +cutoff = 1744729984.5904343 + + def _poll(self, check_f, cutoff): + if cutoff is not None and time.time() > cutoff: +> raise TimeoutError("PollMixin never saw %s return True" % check_f) +E allmydata.util.pollmixin.TimeoutError: PollMixin never saw > return True + +allmydata/util/pollmixin.py:42: TimeoutError +______________ HTTPSystemTest.test_upload_and_download_random_key ______________ + +result = +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406547dd80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +allmydata/test/common_system.py:801: in set_up_nodes + yield self._set_up_client_nodes(self.FORCE_FOOLSCAP_FOR_STORAGE) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +allmydata/test/common_system.py:841: in _set_up_client_nodes + yield self.wait_for_connections() +/usr/lib/python3/dist-packages/twisted/internet/defer.py:1088: in _runCallbacks + current.result = callback( # type: ignore[misc] +allmydata/util/pollmixin.py:35: in _convert_done + f.trap(PollComplete) +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:216: in maybeDeferred + result = f(*args, **kwargs) +allmydata/util/pollmixin.py:57: in _poll + self.fail("Errors snooped, terminating early") +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +msg = 'Errors snooped, terminating early' + + def fail(self, msg: Optional[object] = None) -> NoReturn: + """ + Absolutely fail the test. Do not pass go, do not collect $200. + + @param msg: the message that will be displayed as the reason for the + failure + """ +> raise self.failureException(msg) +E twisted.trial.unittest.FailTest: Errors snooped, terminating early + +/usr/lib/python3/dist-packages/twisted/trial/_synctest.py:381: FailTest +----------------------------- Captured stdout call ----------------------------- +[] +----------------------------- Captured stderr call ----------------------------- +Unhandled Error +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/twisted/python/log.py", line 96, in callWithLogger + return callWithContext({"system": lp}, func, *args, **kw) + File "/usr/lib/python3/dist-packages/twisted/python/log.py", line 80, in callWithContext + return context.call({ILogContext: newCtx}, func, *args, **kw) + File "/usr/lib/python3/dist-packages/twisted/python/context.py", line 117, in callWithContext + return self.currentContext().callWithContext(ctx, func, *args, **kw) + File "/usr/lib/python3/dist-packages/twisted/python/context.py", line 82, in callWithContext + return func(*args, **kw) + File "/usr/lib/python3/dist-packages/twisted/internet/posixbase.py", line 504, in _doReadOrWrite + self._disconnectSelectable(selectable, why, inRead) + File "/usr/lib/python3/dist-packages/twisted/internet/posixbase.py", line 112, in _disconnectSelectable + selectable.connectionLost(f) + File "/usr/lib/python3/dist-packages/twisted/internet/tcp.py", line 328, in connectionLost + protocol.connectionLost(reason) + File "/usr/lib/python3/dist-packages/twisted/protocols/tls.py", line 409, in connectionLost + ProtocolWrapper.connectionLost(self, reason) + File "/usr/lib/python3/dist-packages/twisted/protocols/policies.py", line 114, in connectionLost + self.wrappedProtocol.connectionLost(reason) + File "/usr/lib/python3/dist-packages/twisted/python/components.py", line 405, in __get__ + original = getattr(oself, self.originalAttribute) +builtins.AttributeError: '_GenericHTTPChannelProtocol' object has no attribute '_channel' + +__________________________ HTTPConnections.test_rref ___________________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +twisted.internet.defer.TimeoutError: (test_rref) still running at 120.0 secs + +_________________________ IntroducerWeb.test_tahoe_css _________________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +testtools.testresult.real._StringException: traceback-1: {{{ +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/testtools/twistedsupport/_runtest.py", line 401, in _log_user_exception + raise e +testtools.twistedsupport._runtest.UncleanReactorError: The reactor still thinks it needs to do things. Close all connections, kill all processes and make sure all delayed calls have either fired or been cancelled: + + < of on 44195> + <_GenericHTTPChannelProtocol #0 on 35333> + < to ('127.0.0.1', 35333) at 7f406574d040> + < of on 35333> + < of on 47541> +}}} + +twisted-log: {{{ +2025-04-15 15:16:59.440Z [-] Foolscap logging initialized +2025-04-15 15:16:59.441Z [-] Note to developers: twistd.log does not receive very much. +2025-04-15 15:16:59.441Z [-] Use 'flogtool tail -c NODEDIR/private/logport.furl' instead +2025-04-15 15:16:59.441Z [-] and read docs/logging.rst +2025-04-15 15:16:59.446Z [-] My pid: 1337524 +2025-04-15 15:16:59.446Z [-] Listener starting on 44195 +2025-04-15 15:16:59.446Z [-] Starting factory , _fd=69, _listened=True) with tub yufzcg7wygqwydu3l5hns4tcehi27k3q> +2025-04-15 15:16:59.447Z [-] Listener starting on 47541 +2025-04-15 15:16:59.447Z [-] Starting factory with tub m6fqpt5qetubf6esrkuj4gcybnadjrkh> +2025-04-15 15:16:59.448Z [-] TahoeLAFSSite starting on 35333 +2025-04-15 15:16:59.448Z [-] Starting factory +2025-04-15 15:16:59.449Z [-] introducer running +2025-04-15 15:16:59.451Z [-] Starting factory _HTTP11ClientFactory(.quiescentCallback at 0x7f40353b2840>, ) +2025-04-15 15:17:59.236Z [-] Main loop terminated. +}}} + +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/testtools/twistedsupport/_runtest.py", line 407, in _blocking_run_deferred + return trap_unhandled_errors(spinner.run, self._timeout, self._run_deferred) + File "/usr/lib/python3/dist-packages/testtools/twistedsupport/_spinner.py", line 95, in trap_unhandled_errors + result = function(*args, **kwargs) + File "/usr/lib/python3/dist-packages/testtools/twistedsupport/_spinner.py", line 53, in decorated + return function(*args, **kwargs) + File "/usr/lib/python3/dist-packages/testtools/twistedsupport/_spinner.py", line 327, in run + return self._get_result() + ~~~~~~~~~~~~~~~~^^ + File "/usr/lib/python3/dist-packages/testtools/twistedsupport/_spinner.py", line 187, in _get_result + self._failure.raiseException() # type: ignore + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "/usr/lib/python3/dist-packages/twisted/python/failure.py", line 455, in raiseException + raise self.value.with_traceback(self.tb) +testtools.twistedsupport._spinner.TimeoutError: > took longer than 60.0 seconds + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/testtools/twistedsupport/_runtest.py", line 401, in _log_user_exception + raise e +testtools.twistedsupport._spinner.TimeoutError: took longer than 60.0 seconds + + +______________________________ Web.test_CSS_FILE _______________________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +twisted.internet.defer.TimeoutError: (test_CSS_FILE) still running at 120.0 secs + +_______________________ Web.test_GET_DIRURL_json_format ________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402cd85ac0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:44595/uri/URI:DIR2:inetk72lc255xi7wxihqye7yxm:zryblqmieghx5kuqku5r7oh2fqhmmu5u5okpohbio32ctmd7c4lq/foo/sdmf.txt?format=sdmf' +kwargs = {'data': b'newfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\...e contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_GET_FILEURL_json_mutable_type ____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40350a80c0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put', url = 'http://127.0.0.1:44977/uri?format=mdmf' +kwargs = {'data': b'newfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\...e contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________________ Web.test_GET_etags ______________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402cfd7380> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:34809/uri/URI:DIR2:q7jgjrczg3iejejq5ifweddfk4:7id5te5m7juwahkbole7n7qzegcdduq6swtjttq53ykltwzsd3ra/foo/newdir?t=mkdir-immutable' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"ro_uri": "URI:CHK:ssbapht3sjqwypcd5wcezndlsy:k5z2lj6...2-LIT:ge3dumj2mewdcotyfqydulbshj5x2lbm"}], "dirchild-empty": ["dirnode", {"ro_uri": "URI:DIR2-LIT:"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________________ Web.test_POST_DIRURL_check __________________________ + +self = + + @inlineCallbacks + def test_POST_DIRURL_check(self): + foo_url = self.public_url + "/foo" +> res = yield self.POST(foo_url, t="check") + +allmydata/test/web/test_web.py:3238: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:43679/uri/URI:DIR2:thdutnfhyykt65jftx4ow6tzoy:otl5sl3xoduvf6fvzu2vf4htaxibg2llpbobev7d33qjc5hee6zq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-... name="t"\r\n\r\ncheck\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_POST_DIRURL_check_and_repair _____________________ + +self = + + @inlineCallbacks + def test_POST_DIRURL_check_and_repair(self): + foo_url = self.public_url + "/foo" +> res = yield self.POST(foo_url, t="check", repair="true") + +allmydata/test/web/test_web.py:3261: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:37267/uri/URI:DIR2:fhl55xln6afncqoyybfhd4gbji:4hbfmkmin62yaqkv32ldv3dosbqqqsqhleoei22zxrqhmzxp2afa/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...e="repair"\r\n\r\ntrue\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________________ Web.test_POST_DIRURL_deepcheck ________________________ + +self = + + @inlineCallbacks + def test_POST_DIRURL_deepcheck(self): + body, headers = self.build_form(t="start-deep-check", ophandle="123") +> yield self.shouldRedirectTo(self.webish_url + self.public_url, + self.webish_url + "/operations/123", + method="post", data=body, headers=headers, + code=http.FOUND) + +allmydata/test/web/test_web.py:3338: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:36739/uri/URI:DIR2:skayjicdjprxst6sytkys2s35m:cxq7n6vcuqgtgxsiejpoidygbdgelswznmolywlxskhzahqszwka' +target_location = 'http://127.0.0.1:36739/operations/123', method = 'post' +code = 302 +args = {'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n--boogabooga\r\nContent-Dis...="ophandle"\r\n\r\n123\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def shouldRedirectTo(self, url, target_location, method="get", + code=None, **args): +> response = yield treq.request(method, url, persistent=False, + allow_redirects=False, **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/web/test_web.py:4342: RequestTransmissionFailed +__________________ Web.test_POST_DIRURL_deepcheck_and_repair ___________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d5dad40> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'post' +url = 'http://127.0.0.1:37991/uri/URI:DIR2:ths7b6gn7b457upp3f7djtvyzq:bhv5telkv4ia5rxtlk5hlbjuaeuekzus5kp6fcemjhovtqniaeva' +kwargs = {'allow_redirects': True, 'browser_like_redirects': True, 'data': b'--boogabooga\r\nContent-Disposition: form-data; na...e="output"\r\n\r\njson\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_DIRURL_deepcheck_no_ophandle __________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:34139/uri/URI:DIR2:ucrn5fs5euwtviyc6p2zjstwly:3qjpk6qujderaclqsourcywpbnaxtglyva3dlx7ff7kn7oiet2ya' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\n\r\nstart-deep-check\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_DIRURL_deepsize_no_ophandle ___________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:44057/uri/URI:DIR2:zyl7bhewjdjujsqwzv5mujqzii:d2osayapnj4zu477ru2wwghnaumvc465oyf3lztlnbib244nisrq' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...r\n\r\nstart-deep-size\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_DIRURL_deepstats_no_ophandle __________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:40519/uri/URI:DIR2:tuhwx775ou6vkiltuljc5rcmb4:3dihy7ndzod6x4guyzuqlomgrb3kg3pn52v4teh6ehfiya7gx6ba' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\n\r\nstart-deep-stats\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_DIRURL_manifest_no_ophandle ___________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:35661/uri/URI:DIR2:epjw4rn3pk6svsu4xhwvb2s55e:dkowyy5msbp2t27d53ho5npazigdewwnugs2rebfsaam7d3vfuuq' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\n\r\nstart-manifest\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_POST_FILEURL_bad_t __________________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:34993/uri/URI:DIR2:va4auxh74lqvbx3hxu53fgfmpq:qghn7awyrnp3c2xksdcfo274htvsufsgh7wc7zvsispxw4mjjvfq/foo/bar.txt' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-... name="t"\r\n\r\nbogus\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_POST_FILEURL_check __________________________ + +self = + + @inlineCallbacks + def test_POST_FILEURL_check(self): + bar_url = self.public_url + "/foo/bar.txt" +> res = yield self.POST(bar_url, t="check") + +allmydata/test/web/test_web.py:3196: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:35413/uri/URI:DIR2:ili2zbsjqc5a5glaeycqgksasq:yoaqjlzrd6mf7xip6kb7fzuaa65j6jfyyiunngzszzkbyufpcc2a/foo/bar.txt' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-... name="t"\r\n\r\ncheck\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_POST_FILEURL_check_and_repair ____________________ + +self = + + @inlineCallbacks + def test_POST_FILEURL_check_and_repair(self): + bar_url = self.public_url + "/foo/bar.txt" +> res = yield self.POST(bar_url, t="check", repair="true") + +allmydata/test/web/test_web.py:3219: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:43507/uri/URI:DIR2:l6ajjosvjdpdjm56ce53vpwcza:b2rlecgu6z4wd647hgyovstqtd4etkm3l7wwwcykfsu5qj2aqala/foo/bar.txt' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...e="repair"\r\n\r\ntrue\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_______________________ Web.test_POST_FILEURL_mdmf_check _______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40355df880> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:38221/uri/URI%3AMDMF%3A7xqukhoh3lfygwzhrz3yabhmxy%3Ajbx6dlmzi25klyq5gc4bmwwx5vjev2pfsn7p54nfjrj5pk2h556q' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-... name="t"\r\n\r\ncheck\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________ Web.test_POST_FILEURL_mdmf_check_and_repair __________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e2ab300> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:45737/uri/URI%3AMDMF%3Aoxmdmobw6jz5axyb6r3iopyilm%3Asrpfxmo6yv5clliw5z5u7azlqu5mi4cl35brxkmn4gvkk5jacaka' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...e="repair"\r\n\r\ntrue\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_NEWDIRURL_immutable _______________________ + +self = + + def _runCallbacks(self) -> None: + """ + Run the chain of callbacks once a result is available. + + This consists of a simple loop over all of the callbacks, calling each + with the current result and making the current result equal to the + return value (or raised exception) of that call. + + If L{_runningCallbacks} is true, this loop won't run at all, since + it is already running above us on the call stack. If C{self.paused} is + true, the loop also won't run, because that's what it means to be + paused. + + The loop will terminate before processing all of the callbacks if a + L{Deferred} without a result is encountered. + + If a L{Deferred} I{with} a result is encountered, that result is taken + and the loop proceeds. + + @note: The implementation is complicated slightly by the fact that + chaining (associating two L{Deferred}s with each other such that one + will wait for the result of the other, as happens when a Deferred is + returned from a callback on another L{Deferred}) is supported + iteratively rather than recursively, to avoid running out of stack + frames when processing long chains. + """ + if self._runningCallbacks: + # Don't recursively run callbacks + return + + # Keep track of all the Deferreds encountered while propagating results + # up a chain. The way a Deferred gets onto this stack is by having + # added its _continuation() to the callbacks list of a second Deferred + # and then that second Deferred being fired. ie, if ever had _chainedTo + # set to something other than None, you might end up on this stack. + chain: List[Deferred[Any]] = [self] + + while chain: + current = chain[-1] + + if current.paused: + # This Deferred isn't going to produce a result at all. All the + # Deferreds up the chain waiting on it will just have to... + # wait. + return + + finished = True + current._chainedTo = None + while current.callbacks: + item = current.callbacks.pop(0) + if not isinstance(current.result, Failure): + callback, args, kwargs = item[0] + else: + # type note: Callback signature also works for Errbacks in + # this context. + callback, args, kwargs = item[1] + + # Avoid recursion if we can. + if callback is _CONTINUE: + # Give the waiting Deferred our current result and then + # forget about that result ourselves. + + # We don't use cast() for performance reasons: + chainee: Deferred[object] = args[0] # type: ignore[assignment] + chainee.result = current.result + current.result = None + # Making sure to update _debugInfo + if current._debugInfo is not None: + current._debugInfo.failResult = None + chainee.paused -= 1 + chain.append(chainee) + # Delay cleaning this Deferred and popping it from the chain + # until after we've dealt with chainee. + finished = False + break + + try: + current._runningCallbacks = True + try: + # type note: mypy sees `callback is _CONTINUE` above and + # then decides that `callback` is not callable. + # This goes away when we use `_Sentinel._CONTINUE` + # instead, but we don't want to do that attribute + # lookup in this hot code path, so we ignore the mypy + # complaint here. +> current.result = callback( # type: ignore[misc] + current.result, *args, **kwargs + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:1088: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +allmydata/test/common.py:926: in explain_web_error + f.trap(WebError) +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:39319/uri/URI:DIR2:iuqyrxyeu77anwdqqvdcvplqoy:vdywpxa5tusnmqqtk337wfecpormusnkrimjjijxa5oatjayk76a/foo/newdir?t=mkdir-immutable' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"ro_uri": "URI:CHK:i7n76ibpc75gysifl4uaamzo2a:hrf3kxo...2-LIT:ge3dumj2mewdcotyfqydulbshj5x2lbm"}], "dirchild-empty": ["dirnode", {"ro_uri": "URI:DIR2-LIT:"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_POST_NEWDIRURL_immutable_bad _____________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:46461/uri/URI:DIR2:2phmokrouu45u35levbtb4e7vy:c22u7ly7icdtebxkd6hvboc7t5xpoeuspupbyenzgkmhjkzu6tyq/foo/newdir?t=mkdir-immutable' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:vg3jguf4lydlvpqnycjqasj5y4:nwjl2ju...uri": "URI:MDMF-RO:ht6ht5flf5b7vxvxj3jd3mtbya:rmm5ld6v4vcdg4rxyiat2jw26mawse2c27xgoj3qly65ptnvrvda"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________ Web.test_POST_NEWDIRURL_initial_children ___________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402f610b40> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:41535/uri/URI:DIR2:dph7ijlmrfinfxbb7ish4rd5gq:daoqlfql4rl5zway366dqao6pazd2aqijkzzjn7qmxj53hyhizga/foo/newdir?t=mkdir-with-children' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:q2ognnuslerm4rc2pz4avl5jb4:ypgzuge...uri": "URI:MDMF-RO:7dymbq2mo4gjxnbbmfzinup6g4:bfobkye5hmdoquviaoorpgsgbaycskgzpsfqmpa6kwb7se7pwfhq"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________ Web.test_POST_NEWDIRURL_initial_children_bad_format ______________ + +self = + + @inlineCallbacks + def test_POST_NEWDIRURL_initial_children_bad_format(self): + (newkids, caps) = self._create_initial_children() + url = (self.webish_url + self.public_url + + "/foo/newdir?t=mkdir-with-children&format=foo") +> yield self.assertHTTPError(url, 400, "Unknown format: foo", + method="post", data=json.dumps(newkids).encode("utf-8")) + +allmydata/test/web/test_web.py:2477: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:38393/uri/URI:DIR2:nbw6kin2n24be6a5trowzjsb5i:otmytev662wledfxpu645hi6po3fk7n5yixtuqesoes4nw5exh7q/foo/newdir?t=mkdir-with-children&format=foo' +code = 400, response_substring = 'Unknown format: foo', method = 'post' +persistent = False +args = {'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:zqexvf5zpoe3prwhxhpxwd3hku:rpqor4igc25rcrc7fn6wkgdmab2m7e6yc...shz7z4wq", "ro_uri": "URI:MDMF-RO:fvfllds4nqb6bkgwyqjeadhmt4:hbcrve6lg6uj6xd7xkz5w5sq6hl6hc5h7vxuvyvn7yjashz7z4wq"}]}'} + + @inlineCallbacks + def assertHTTPError(self, url, code, response_substring, + method="get", persistent=False, + **args): +> response = yield treq.request(method, url, persistent=persistent, + **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common.py:970: RequestTransmissionFailed +________________ Web.test_POST_NEWDIRURL_initial_children_mdmf _________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d468980> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:34965/uri/URI:DIR2:pjsoxa7j4zrxamqcrky4u6idcu:6dfg2zfavcehul5hr33xuizmjzot3ccva3i4hxnmoefs6g7xgxoq/foo/newdir?t=mkdir-with-children&format=mdmf' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:i2wi5oag6lg7w7jqgflm4ulsxi:6oibl6n...uri": "URI:MDMF-RO:lxoqnhufrtojrk2icmersdnega:zdejb6o5562x5xin2js5rtr5rd5w3m3rz2hoiupceqkjkdwvhbqq"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________ Web.test_POST_NEWDIRURL_initial_children_sdmf _________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f403444f7c0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:42303/uri/URI:DIR2:yx5datzgtshi3kvwg4pclnwgxy:rpliiooqxzcwchg5lije6aryrgoumh5z7632ko4yw7vovbmq63ha/foo/newdir?t=mkdir-with-children&format=sdmf' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:nqujqvy4gzvtnkwosyybl32ecq:ypldg6q...uri": "URI:MDMF-RO:ocypgkcpkxopg72r4zaqecvjei:c23nj3xpizstuidvkjoujmbrkgkxq4wgz4rxdm25zfrzt6aujoxa"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________________ Web.test_POST_bad_t ______________________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:33273/uri/URI:DIR2:bh5znhwvurvr66crvew2uyha3u:h4he6yfbdp3opbwk4ylaazjrmwkuxp45x7x75h6szqw2zf7tasnq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-... name="t"\r\n\r\nBOGUS\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________________ Web.test_POST_check ______________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d468980> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:35589/uri/URI:DIR2:27kjwqttudqjd5bysmxkql77l4:6hhcdhwa4ljxtsypw3hufjv5xhwv3e2fce3w2ea3j4x2rx22d4va/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...="name"\r\n\r\nbar.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________________ Web.test_POST_delete _____________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e2ab300> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:32901/uri/URI:DIR2:kusrmtj2vx5qeyjb6xu3iy242q:uz3vez6soisbtmycunuw4q5bjqhon5igsxpugztyusdnfrpx76ka/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...="name"\r\n\r\nbar.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________________ Web.test_POST_link_uri ____________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402f610b40> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:35313/uri/URI:DIR2:a4rrqfzqwzuooergt65kmogcu4:c7emxww2vnkbornefvyvn63emr66bszakt7rvefcv6b5xvlq7fya/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...jw3nrjvlqycija:3:10:19\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________ Web.test_POST_link_uri_no_replace_field ____________________ + +self = +res = ]> +expected_failure = +which = 'POST_link_uri_no_replace_field', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:37885/uri/URI:DIR2:7sjsc6nbpbdoztxy7nnwm73ay4:y3lg7ibive2lglin2nvw3nhlgtzrggejjuqulzzl6qsztrgd5oqa/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...2nuiy3qo334fmq:3:10:19\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_link_uri_no_replace_queryarg __________________ + +self = +res = ]> +expected_failure = +which = 'POST_link_uri_no_replace_queryarg', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:38289/uri/URI:DIR2:koewazk7auy3c4o6jrxtwr77oy:fruuccdgp3igxtiztmeztusepkevq63mwjzxydj4fmtgywzlzqea/foo?replace=false' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...sqraox7ldkphkq:3:10:19\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________________ Web.test_POST_link_uri_replace ________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e2ab300> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:40927/uri/URI:DIR2:234r5venfvusxpepx2cluu7dta:utxs36kznkmoq7wf3btmwgo3o7lyidhajklchbv2iuxhycqu7hpa/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...5if3t3bdtm5uoq:3:10:19\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_link_uri_unknown_bad ______________________ + +self = +res = ]> +expected_failure = +which = 'POST_link_uri_unknown_bad', substring = '400 Bad Request' +response_substring = 'unknown cap in a write slot' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:42747/uri/URI:DIR2:x5tszwfwys6w7edxscfdo4xm3e:qrixk5u2ro4rvnmun4bpybvsw4hz2dcxbrogvbwebdy7pwjkvfna/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...future_rw_\xe2\x98\xba\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________ Web.test_POST_link_uri_unknown_imm_good ____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40355df880> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:39829/uri/URI:DIR2:gp44hb4o6binhamsqurjmj3nfe:f6y2s7hvda7sepxh36cmg4hdd3otj6h73v2wf5e4vyfynw4powba/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...uture_imm_\xe2\x98\xba\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_POST_link_uri_unknown_ro_good ____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402f613280> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:40929/uri/URI:DIR2:oh6ofguen5davfmrvz4nyms2qa:o3wyotw6cddtheplkwbcalzos7zciazazdjfw5dcmgaojgck4ouq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...future_ro_\xe2\x98\xba\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________________ Web.test_POST_mkdir ______________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40355df880> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:39331/uri/URI:DIR2:nnslvgm3qxdyyevpyyeqeh7cmy:jpybd7gs3ij4dfcyltm4fmzbtzcb2wf65ocsvcg6httuwzu4aoea/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...e="name"\r\n\r\nnewdir\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________________ Web.test_POST_mkdir_immutable _________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402f610b40> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:46731/uri/URI:DIR2:vhfmd66stdfufmeyp5x3zgnviu:6esy7m2zznrpa4jau2mtomio3ki7fdfyu3r6hb5tsmaqdb64if7q/foo?t=mkdir-immutable&name=newdir' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"ro_uri": "URI:CHK:h4vjwyh74vytsfs73ubqblvhxm:atcrud5...2-LIT:ge3dumj2mewdcotyfqydulbshj5x2lbm"}], "dirchild-empty": ["dirnode", {"ro_uri": "URI:DIR2-LIT:"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_mkdir_immutable_bad _______________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:44021/uri/URI:DIR2:2dywvkeqquu3vfixv4s6xbfqkq:k74vsn3z76cqwwy5g7jf65lt5bane3fgq5qnfclsqcww7x3gvwlq/foo?t=mkdir-immutable&name=newdir' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:xaevco4ja4rxi27gnlc7jdvdta:lscznl4...uri": "URI:MDMF-RO:d6t7vk37ilem6vux4nq6ej6rgi:qpg3jchp2kasarz3ucts3ojwj43e4ca6bgh7sw3g7jsbyhfsttsa"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_POST_mkdir_initial_children _____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e2ab300> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:46221/uri/URI:DIR2:lhtovtm37isnh5efcpv52z7k4u:boe2ztn6slasis7iiedl52opd4h3d7ogxhyyygcvmhaxhwpmql7q/foo?t=mkdir-with-children&name=newdir' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:7p44sj7oaz65sdzjlqmo3t2opy:nhhwrrh...uri": "URI:MDMF-RO:cc7swscz7oghbhege4nov3iaca:4oyvtycpxeswe5qjqonmqybgq6k2mecupmnt634laefuykikhlca"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_______________ Web.test_POST_mkdir_initial_children_bad_format ________________ + +self = + + @inlineCallbacks + def test_POST_mkdir_initial_children_bad_format(self): + (newkids, caps) = self._create_initial_children() + url = (self.webish_url + self.public_url + + "/foo?t=mkdir-with-children&name=newdir&format=foo") +> yield self.assertHTTPError(url, 400, "Unknown format: foo", + method="post", data=json.dumps(newkids).encode("utf-8")) + +allmydata/test/web/test_web.py:3498: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:37099/uri/URI:DIR2:nndru4n5ljoo7qmfus6vvcprim:twak5ecw3rtmv74t5a5ipri4i4qnbjydnlbupfn3qznyvy2ewlka/foo?t=mkdir-with-children&name=newdir&format=foo' +code = 400, response_substring = 'Unknown format: foo', method = 'post' +persistent = False +args = {'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:56hkaetvpm7ezx6fgqns6cl22m:wqor5ihnwstk66ii7u6lyxr5pgjuayfrz...g5acuyra", "ro_uri": "URI:MDMF-RO:fq35rbruzk4bgqsmnmty6leaoq:uw77eerj7to7gfbt6a3y5h3boj5a26r7eolmktw7jud2g5acuyra"}]}'} + + @inlineCallbacks + def assertHTTPError(self, url, code, response_substring, + method="get", persistent=False, + **args): +> response = yield treq.request(method, url, persistent=persistent, + **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common.py:970: RequestTransmissionFailed +__________________ Web.test_POST_mkdir_initial_children_mdmf ___________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e2ab300> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:35671/uri/URI:DIR2:tjpel6eglepl5ki3ldsbhhqhfu:cquxxjhqsrjxd3dyn5amdgqdajq6g3ztv7was3cyu3ga5het7asa/foo?t=mkdir-with-children&name=newdir&format=mdmf' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:6qdu4qgs4insswzhma2uv77z7m:my6n4xd...uri": "URI:MDMF-RO:h53ff3z3wkx77t33cj4xpkjct4:264wk2fkrsfdx754nd4mn2wwmjekp7jhq6pxwnxqbm7jfaqz7zsa"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_mkdir_initial_children_sdmf ___________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d468980> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:33135/uri/URI:DIR2:hitybmhcqrrn7xx2pbrkhjzswu:qm4jam5jkeqcilbnhopzk7cp75fs3bu73yu5nytj3pth6mbefn2q/foo?t=mkdir-with-children&name=newdir&format=sdmf' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:o7rhclslzzbdsud2jwkgwnzkcy:3jm6yhy...uri": "URI:MDMF-RO:vhpgusa6sn7h3lg23pmkgmknyq:ardasxn3axnmawgdrc4isetu2dfi7hpvn3isyo5a5yupytbdudsa"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_mkdir_no_parentdir_immutable __________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40355df880> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST', url = 'http://127.0.0.1:44743/uri?t=mkdir-immutable' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"ro_uri": "URI:CHK:bsalsicxsi6y5usx2fhql5dyay:x77z6im...2-LIT:ge3dumj2mewdcotyfqydulbshj5x2lbm"}], "dirchild-empty": ["dirnode", {"ro_uri": "URI:DIR2-LIT:"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________ Web.test_POST_mkdir_no_parentdir_immutable_bad ________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST', url = 'http://127.0.0.1:34423/uri?t=mkdir-immutable' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:6ftn5roro2xrd62qc3b7fcwxnq:epplc2u...uri": "URI:MDMF-RO:ubu72qd6xsjbld3va35jmwo2km:xkbtwr2v57afiyb5g73kcj72tswcdrdba2thctru6f36ickhkciq"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________ Web.test_POST_mkdir_no_parentdir_initial_children _______________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40355df880> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST', url = 'http://127.0.0.1:43009/uri?t=mkdir-with-children' +kwargs = {'allow_redirects': False, 'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:abefbnkqm2m2kn6uqeiz7nrrl4:oghp6yw...uri": "URI:MDMF-RO:idmhjywdqokuteq2mpuud2vzzy:jrh3zt6xx2nkpgo62urlokjcstyzszas7vkpl7j6g2hm22byj5ra"}]}', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________ Web.test_POST_mkdir_no_parentdir_noredirect2 _________________ + +self = + + def _runCallbacks(self) -> None: + """ + Run the chain of callbacks once a result is available. + + This consists of a simple loop over all of the callbacks, calling each + with the current result and making the current result equal to the + return value (or raised exception) of that call. + + If L{_runningCallbacks} is true, this loop won't run at all, since + it is already running above us on the call stack. If C{self.paused} is + true, the loop also won't run, because that's what it means to be + paused. + + The loop will terminate before processing all of the callbacks if a + L{Deferred} without a result is encountered. + + If a L{Deferred} I{with} a result is encountered, that result is taken + and the loop proceeds. + + @note: The implementation is complicated slightly by the fact that + chaining (associating two L{Deferred}s with each other such that one + will wait for the result of the other, as happens when a Deferred is + returned from a callback on another L{Deferred}) is supported + iteratively rather than recursively, to avoid running out of stack + frames when processing long chains. + """ + if self._runningCallbacks: + # Don't recursively run callbacks + return + + # Keep track of all the Deferreds encountered while propagating results + # up a chain. The way a Deferred gets onto this stack is by having + # added its _continuation() to the callbacks list of a second Deferred + # and then that second Deferred being fired. ie, if ever had _chainedTo + # set to something other than None, you might end up on this stack. + chain: List[Deferred[Any]] = [self] + + while chain: + current = chain[-1] + + if current.paused: + # This Deferred isn't going to produce a result at all. All the + # Deferreds up the chain waiting on it will just have to... + # wait. + return + + finished = True + current._chainedTo = None + while current.callbacks: + item = current.callbacks.pop(0) + if not isinstance(current.result, Failure): + callback, args, kwargs = item[0] + else: + # type note: Callback signature also works for Errbacks in + # this context. + callback, args, kwargs = item[1] + + # Avoid recursion if we can. + if callback is _CONTINUE: + # Give the waiting Deferred our current result and then + # forget about that result ourselves. + + # We don't use cast() for performance reasons: + chainee: Deferred[object] = args[0] # type: ignore[assignment] + chainee.result = current.result + current.result = None + # Making sure to update _debugInfo + if current._debugInfo is not None: + current._debugInfo.failResult = None + chainee.paused -= 1 + chain.append(chainee) + # Delay cleaning this Deferred and popping it from the chain + # until after we've dealt with chainee. + finished = False + break + + try: + current._runningCallbacks = True + try: + # type note: mypy sees `callback is _CONTINUE` above and + # then decides that `callback` is not callable. + # This goes away when we use `_Sentinel._CONTINUE` + # instead, but we don't want to do that attribute + # lookup in this hot code path, so we ignore the mypy + # complaint here. +> current.result = callback( # type: ignore[misc] + current.result, *args, **kwargs + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:1088: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +allmydata/test/common.py:926: in explain_web_error + f.trap(WebError) +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST', url = 'http://127.0.0.1:43077/uri' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-... name="t"\r\n\r\nmkdir\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_mkdir_no_parentdir_redirect2 __________________ + +self = + + @inlineCallbacks + def test_POST_mkdir_no_parentdir_redirect2(self): + body, headers = self.build_form(t="mkdir", redirect_to_result="true") +> target = yield self.shouldRedirectTo(self.webish_url + "/uri", None, + method="post", + data=body, headers=headers, + code=http.SEE_OTHER) + +allmydata/test/web/test_web.py:3600: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:35187/uri', target_location = None, method = 'post' +code = 303 +args = {'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n--boogabooga\r\nContent-Dis...to_result"\r\n\r\ntrue\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def shouldRedirectTo(self, url, target_location, method="get", + code=None, **args): +> response = yield treq.request(method, url, persistent=False, + allow_redirects=False, **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/web/test_web.py:4342: RequestTransmissionFailed +_____________ Web.test_POST_mkdir_no_parentdir_unexpected_children _____________ + +self = + + @inlineCallbacks + def test_POST_mkdir_no_parentdir_unexpected_children(self): + # the regular /uri?t=mkdir operation is specified to ignore its body. + # Only t=mkdir-with-children pays attention to it. + (newkids, caps) = self._create_initial_children() + url = self.webish_url + "/uri?t=mkdir" # without children +> yield self.assertHTTPError(url, 400, + "t=mkdir does not accept children=, " + "try t=mkdir-with-children instead", + method="post", data=json.dumps(newkids).encode("utf-8")) + +allmydata/test/web/test_web.py:3713: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:40263/uri?t=mkdir', code = 400 +response_substring = 't=mkdir does not accept children=, try t=mkdir-with-children instead' +method = 'post', persistent = False +args = {'data': b'{"child-imm": ["filenode", {"rw_uri": "URI:CHK:vezv3giufnv4xzbbcmnfrnh5xi:eojkdyghm6bxcvdms7my2yhqv7mmnty2f...lt7gcv4q", "ro_uri": "URI:MDMF-RO:nfia46lspyrvim4zgdxi5vx5fy:v4jnuuds7ohwfk4ttj2by6bc36ilgwcqd5ns3epa5wbnlt7gcv4q"}]}'} + + @inlineCallbacks + def assertHTTPError(self, url, code, response_substring, + method="get", persistent=False, + **args): +> response = yield treq.request(method, url, persistent=persistent, + **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common.py:970: RequestTransmissionFailed +_____________________ Web.test_POST_mkdir_no_replace_field _____________________ + +self = +res = ]> +expected_failure = +which = 'POST_mkdir_no_replace_field', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:33137/uri/URI:DIR2:t2nzjycriyeizbmlwkzgdfiwma:oggyvweogdgwf6kkcjquronk6ij73sbkoajw2othdgmd3amwdoza/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-..."replace"\r\n\r\nfalse\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________ Web.test_POST_mkdir_no_replace_queryarg ____________________ + +self = +res = ]> +expected_failure = +which = 'POST_mkdir_no_replace_queryarg', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:40877/uri/URI:DIR2:enov3pi6wga4pw4kbswuyu5roy:c3gdwwau3fzs3gumfqjzlmet5jso6huezuqgah3ctssllxbjyfba/foo?replace=false' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...name="name"\r\n\r\nsub\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_POST_mkdir_replace __________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e2ab300> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:43053/uri/URI:DIR2:d4jhc3ssrp537lbbe2tgopr3oq:xp3hm66dp6xkp4fgds5qh2tyfifmamq2hxcjk3igsuv3xkm2rapq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...name="name"\r\n\r\nsub\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_mkdir_whendone_field ______________________ + +self = + + @inlineCallbacks + def test_POST_mkdir_whendone_field(self): + body, headers = self.build_form(t="mkdir", name="newdir", + when_done="/THERE") +> yield self.shouldRedirectTo(self.webish_url + self.public_url + "/foo", + "/THERE", + method="post", data=body, headers=headers, + code=http.FOUND) + +allmydata/test/web/test_web.py:3821: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:35389/uri/URI:DIR2:lzovuupi6rvtlsnufmvzveqzq4:g66mqvfhalkpzfqaqz3bvm4snlntje3qq33vfoz5qtgcoy6c4nbq/foo' +target_location = '/THERE', method = 'post', code = 302 +args = {'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n--boogabooga\r\nContent-Dis...en_done"\r\n\r\n/THERE\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def shouldRedirectTo(self, url, target_location, method="get", + code=None, **args): +> response = yield treq.request(method, url, persistent=False, + allow_redirects=False, **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/web/test_web.py:4342: RequestTransmissionFailed +____________________ Web.test_POST_mkdir_whendone_queryarg _____________________ + +self = + + @inlineCallbacks + def test_POST_mkdir_whendone_queryarg(self): + body, headers = self.build_form(t="mkdir", name="newdir") + url = self.webish_url + self.public_url + "/foo?when_done=/THERE" +> yield self.shouldRedirectTo(url, "/THERE", + method="post", data=body, headers=headers, + code=http.FOUND) + +allmydata/test/web/test_web.py:3832: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:35309/uri/URI:DIR2:dyurdaux4iyzne3hxezicvxmpq:h2ac7xef5fgyossq2ge2omxy3n242zce5kxq2npbnw3adhpjs3bq/foo?when_done=/THERE' +target_location = '/THERE', method = 'post', code = 302 +args = {'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n--boogabooga\r\nContent-Dis...e="name"\r\n\r\nnewdir\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def shouldRedirectTo(self, url, target_location, method="get", + code=None, **args): +> response = yield treq.request(method, url, persistent=False, + allow_redirects=False, **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/web/test_web.py:4342: RequestTransmissionFailed +___________________________ Web.test_POST_relink_dir ___________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40355df880> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:37519/uri/URI:DIR2:5ohbuxdiwidrkyxshpyfctrlwa:44gja3lxsvdv6sz6ajz2kopjybwa4dengpywapdnw7hhypmfgxja/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...w7hhypmfgxja/foo/empty\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________________ Web.test_POST_relink_file ___________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f4034e6b680> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:32785/uri/URI:DIR2:zdehekzt5zdsueohzq6fqubp54:u7o4euvfj7kev463naqqykeqpyugqsxi7gnjxrwlngwfyo2aslnq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...wlngwfyo2aslnq/foo/sub\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_POST_relink_file_bad_replace _____________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:37303/uri/URI:DIR2:phtkkoum7lkgog7qu56hv45fri:kct434fqxo7lucxue3kziqzxcmtuqgsdtnwtmdx2crkw524oyfzq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...x2crkw524oyfzq/foo/sub\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________ Web.test_POST_relink_file_explicitly_same_link ________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402df7e040> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:33349/uri/URI:DIR2:3hqhfxz5rfauga4f6hg3a4xc2e:n255hba3q5sbd6jzk24c6qqvbqk3w53nyeddfkimvsiootggvmka/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...ddfkimvsiootggvmka/foo\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________ Web.test_POST_relink_file_implicitly_same_link ________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e7c9f80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:39727/uri/URI:DIR2:l35txluaxrd5ovi6wegvp74go4:f5o6jvlq25ind7cteyuf53dup2m5myj2mwptxexxl4uqtz4li4ka/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...m_name"\r\n\r\nbar.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_POST_relink_file_into_file ______________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:37809/uri/URI:DIR2:hh4fxmyx7vjqp4pl24kj7lfmwi:7uwpqll4qd5ihfdmkusgjs2ybbwy5knlvzw7apalblt4hy4lpblq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...t4hy4lpblq/foo/baz.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_POST_relink_file_multi_level _____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d468980> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:46645/uri/URI:DIR2:7v67yvn4c7jvqxkge75x3vigi4:sya3p25v42u5ipcxaifp7zlefu44kb5xds2h6ic3zqesm4wx5f7q/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...4wx5f7q/foo/sub/level2\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_relink_file_new_name ______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40355df880> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:38359/uri/URI:DIR2:setagonjb6riiyz4hv2p4zusbu:mfjqzu4zqympenab6ul5l24zzivnuxtcgghk3fwzi6qkfgezc55a/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...wzi6qkfgezc55a/foo/sub\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_POST_relink_file_no_replace _____________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:44261/uri/URI:DIR2:g57bcurh4vky7gffdax3zre7ii:uosqacmyc5ympb3fgl5h3pmzlvmywkbddgvysidian33aqlcutjq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...dian33aqlcutjq/foo/sub\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________ Web.test_POST_relink_file_no_replace_explicitly_same_link ___________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40355df880> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:40161/uri/URI:DIR2:wp6a5weldfmat3lbwyznxfce24:vdronv6ivnddnwczwdxmuod57bn72u4pwgqwdwadwuzt7httugnq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...qwdwadwuzt7httugnq/foo\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_relink_file_replace _______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d468980> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:45825/uri/URI:DIR2:ejdcaxod4x4bksrz63n5ebrsbe:kgmsndwrlnzfgc4jl3bvqjy6kvfyxntybruwmkthtd3pqqtmcxva/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...thtd3pqqtmcxva/foo/sub\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________ Web.test_POST_relink_file_replace_only_files _________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f4034e6b680> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:33639/uri/URI:DIR2:bwmby3zwul3ywt4gwrmro2k74m:xlxekgeicimqqxpdtil5wh5zga27bn7iyxjimmq6l3i2x4bkqtna/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...q6l3i2x4bkqtna/foo/sub\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________ Web.test_POST_relink_file_replace_only_files_conflict _____________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:43993/uri/URI:DIR2:4cpvq4gr3yxx7bnwsuxwll2kyy:oql7jmnfjss6kka7f7duz3mmna5la2hr64wbl4wq3betcw5ikjpa/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...wbl4wq3betcw5ikjpa/foo\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_relink_file_same_dir ______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e247ac0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:35299/uri/URI:DIR2:wrdi77mjxcf43jgzu2bkbrzh2m:ompstqij23mvtd25tam4oq455ub232m5jmaxe2fdirdhfcsmac2q/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...axe2fdirdhfcsmac2q/foo\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_POST_relink_file_to_bad_uri _____________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:44205/uri/URI:DIR2:jyelc2vx3wwapda7mjr3ikf2cu:iamr54jj35mgwvjz3siowda3jebawnbwqu5fugrcewz5xkqnpara/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...qffydnnul5hfa4j577arma\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________ Web.test_POST_relink_file_to_nonexistent_dir _________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:40733/uri/URI:DIR2:sn62pmhrthxhvudy56e43qd3qm:o5wzoh22dspxrs52n7edwhvp224jpbuqfacelzgxjnbxhclvq44a/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...clvq44a/nopechucktesta\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________ Web.test_POST_relink_file_to_slash_fail ____________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:39611/uri/URI:DIR2:rybdpwek25ig6y5btp7seg62h4:43o5mfxpvdl63ctr7do6oo4xdegfs5o3ljtq6v6q7n6cc244hyfa/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...6q7n6cc244hyfa/foo/sub\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_______________________ Web.test_POST_relink_file_to_uri _______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40ad4a1b80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:45603/uri/URI:DIR2:ihs4wnjfihherpdcdt7gyhcwca:qk7dqcfs7zcdojis6efi4whzmjqeb3mlra44dvaxja4o3czlhd2a/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...eyetsoq62asz3ahweirrtq\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________________ Web.test_POST_rename_dir ___________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dca8e00> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:44149/uri/URI:DIR2:dzq4xq2zyzkivqchzszktpkvpi:b56zfsieai7n5qfxxdvuzigkg2ohl6olu3nqvonk4t44phsyhdaa' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-..."to_name"\r\n\r\nplunk\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________________ Web.test_POST_rename_file ___________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40ad4a1b80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:35795/uri/URI:DIR2:tkxqfmtmo6cs4oqgcpu2oqzqma:5amh3bcollhb26zdzezl26uaj6676dekj2mi5lifexukmg4vlmpa/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...ame"\r\n\r\nwibble.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_rename_file_from_slash_fail ___________________ + +self = +res = ]> +expected_failure = +which = 'test_POST_rename_from_file_slash_fail', substring = '400 Bad Request' +response_substring = 'from_name= may not contain a slash' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:37695/uri/URI:DIR2:3awy3d2fdvgxvl4cugqiaacivu:ucl7woknvbq2hxgx4oorp66yinso33mzvjwkxsn7v67dv7jwr4da/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...name"\r\n\r\nspock.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________ Web.test_POST_rename_file_no_replace_field __________________ + +self = +res = ]> +expected_failure = +which = 'POST_rename_file_no_replace_field', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:34827/uri/URI:DIR2:ejfr2jqex4mvxita26hqmycv2i:4y6cj5loc7cdxzqvbqo4cyt66n2662r3otnlj3pdpftgxlansh4q/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-..."to_name"\r\n\r\nempty\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________ Web.test_POST_rename_file_no_replace_queryarg _________________ + +self = +res = ]> +expected_failure = +which = 'POST_rename_file_no_replace_queryarg', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:38853/uri/URI:DIR2:b43t2gtsgsq6odcs3tgniisn64:nml4jtedabqznjni44ccipvx2tdyd2dyfppvcuvzkqtxzukvymzq/foo?replace=false' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-..."to_name"\r\n\r\nempty\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________ Web.test_POST_rename_file_no_replace_same_link ________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dfbf040> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:40993/uri/URI:DIR2:rr2yfdk3ah7dm7ly7ebtbhrjtq:kbhvajq3xxwkmz3yxol7ahzch4gj3adjqoce7rxrhzt6aoa7irya/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...o_name"\r\n\r\nbar.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_POST_rename_file_redundant ______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e222c00> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:42397/uri/URI:DIR2:o2nlvwyushztoo6awygxouzy2q:56hy7p3ddnctms6h4x7p6ntttajp4beffakmtxxz6o6jlrvo6hta/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...o_name"\r\n\r\nbar.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_rename_file_replace _______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406555f3c0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:36453/uri/URI:DIR2:7texdio3dn6suh3pfu7gm7f76m:wd56m2or7tsosai754e55ue3ekhgvyml5fcfk76bjzx4ssfe724a/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-..."to_name"\r\n\r\nempty\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________ Web.test_POST_rename_file_replace_only_files _________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dce1000> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:43197/uri/URI:DIR2:ygh74mr3s4vcytiwye5piyifce:axb2upk6g7y5wgrbc2xxkes2im33tyla3dweztbt6fzge6q4ir4a/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...o_name"\r\n\r\nbaz.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________ Web.test_POST_rename_file_replace_only_files_conflict _____________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:36873/uri/URI:DIR2:oqmn3ewocymwokh3ohm6cs7jra:gpgp43akompnco5uhutez4l7nhn5roq7z4pfamlsclbsnvahvysa/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-..."to_name"\r\n\r\nempty\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________ Web.test_POST_rename_file_to_slash_fail ____________________ + +self = +res = ]> +expected_failure = +which = 'test_POST_rename_file_to_slash_fail', substring = '400 Bad Request' +response_substring = 'to_name= may not contain a slash' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:38169/uri/URI:DIR2:q3yp5qus47emodwwdwnfs52j44:msxxopxgsyvr63mun7pa5tcjpytmtd7ummdadmp3n7qso4hlnsdq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\n\r\nkirk/spock.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________________ Web.test_POST_set_children __________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40ad4a1b80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'post' +url = 'http://127.0.0.1:44733/uri/URI:DIR2:ospnok2ghmz3dd7brd5i3ifkbi:4lsjxynzutbkacijxpcx52pmjmazpmd363kt4k2zayltsgakap6q/foo?t=set_children' +kwargs = {'data': b'{\n "atomic_added_1": [ "filenode", { "rw_uri": "URI:CHK:zenymtfwhym6ce5gpzsj3wta6a:aki... }\n } ]\n }'} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_POST_set_children_with_hyphen ____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dce1000> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'post' +url = 'http://127.0.0.1:45709/uri/URI:DIR2:hrcal25vqx6r2buty2hjy4mq3y:tk3gk3rr4rtguncdbkqvtiaqhl4kxjhjb2kd2gypvqlz76nety7a/foo?t=set-children' +kwargs = {'data': b'{\n "atomic_added_1": [ "filenode", { "rw_uri": "URI:CHK:c7qwfqornm7kvg7or5mh5dieo4:nzr... }\n } ]\n }'} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________________ Web.test_POST_unlink _____________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406555f3c0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:39095/uri/URI:DIR2:vngukjbesvwtbnr3phjukm6uye:tm3zeqwo6mnwfets7rfwdt2ram3qccbgptettn75ykrejxmq5hna/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...="name"\r\n\r\nbar.txt\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________________ Web.test_POST_upload _____________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e222c00> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:35733/uri/URI:DIR2:amn5lhyps5p5trjzmfcrus6h7e:jifv56uzgxdghtcayfgz3lxgwracuxlqz63cld7cbh7wjep6tcaa/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_______________________ Web.test_POST_upload_bad_format ________________________ + +self = + + @inlineCallbacks + def test_POST_upload_bad_format(self): + url = self.webish_url + self.public_url + "/foo?t=upload&format=foo" + body, headers = self.build_form(file=("foo.txt", self.NEWFILE_CONTENTS * 300000)) +> yield self.assertHTTPError(url, 400, "Unknown format: foo", + method="post", data=body, headers=headers) + +allmydata/test/web/test_web.py:2950: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:43639/uri/URI:DIR2:rdbqhy6agvxyhmz34r37h7gwry:m3w5qbzmzra3pypb6zvojep53p7u4dsbvsvsmxxkbfdrl7jib6oa/foo?t=upload&format=foo' +code = 400, response_substring = 'Unknown format: foo', method = 'post' +persistent = False +args = {'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n--boogabooga\r\nContent-Dis...ts\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def assertHTTPError(self, url, code, response_substring, + method="get", persistent=False, + **args): +> response = yield treq.request(method, url, persistent=persistent, + **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common.py:970: RequestTransmissionFailed +___________________ Web.test_POST_upload_bad_format_unlinked ___________________ + +self = + + @inlineCallbacks + def test_POST_upload_bad_format_unlinked(self): + url = self.webish_url + "/uri?t=upload&format=foo" + body, headers = self.build_form(file=("foo.txt", self.NEWFILE_CONTENTS * 300000)) +> yield self.assertHTTPError(url, 400, + "Unknown format: foo", + method="post", data=body, headers=headers) + +allmydata/test/web/test_web.py:2879: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:36155/uri?t=upload&format=foo', code = 400 +response_substring = 'Unknown format: foo', method = 'post', persistent = False +args = {'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n--boogabooga\r\nContent-Dis...ts\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def assertHTTPError(self, url, code, response_substring, + method="get", persistent=False, + **args): +> response = yield treq.request(method, url, persistent=persistent, + **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common.py:970: RequestTransmissionFailed +_________________________ Web.test_POST_upload_format __________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dce1000> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:40883/uri/URI:DIR2:fyvrj2fkcwufpezrckf7re4a3e:he55lwc6oqmljzmugvbhpupfz6qpyxasqlgnumkguqkag2wys6pq/foo?t=upload&format=chk' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...ts\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_POST_upload_format_unlinked _____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40ad4a1b80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST', url = 'http://127.0.0.1:34079/uri?t=upload&format=chk' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...ts\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_POST_upload_keypair _________________________ + +self = + + async def test_POST_upload_keypair(self) -> None: + """ + A *POST* creating a new mutable object may include a *private-key* + query argument giving a urlsafe-base64-encoded RSA private key to use + as the "signature key". The given signature key is used, rather than + a new one being generated. + """ + format = "sdmf" + priv, pub = create_signing_keypair(2048) + encoded_privkey = urlsafe_b64encode(der_string_from_signing_key(priv)).decode("ascii") + filename = "predetermined-sdmf" + expected_content = self.NEWFILE_CONTENTS * 100 +> actual_cap = uri.from_string(await self.POST( + self.public_url + + f"/foo?t=upload&format={format}&private-key={encoded_privkey}", + file=(filename, expected_content), + )) + +allmydata/test/web/test_web.py:2895: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:1183: in __iter__ + yield self +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:39439/uri/URI:DIR2:xwc3f4vnmpcwegepqjay5sqqs4:24ahorabfyv6ndzp3db6c7mmm4yt4simxw22tnazqqiuncegzfoa/f...kq5J9SJmJ6ZXYY7HrYzoYNpKI2Ud8GgzfmXp0x4qyc_A6baNjobPvdQYFXEN6PSyElFPyR2v5GvMbRvmINuSvW757vaV5t6ykWAF1PEFrsvYzo8o0__g==' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...ts\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_POST_upload_mutable _________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40ad4a1b80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:36841/uri/URI:DIR2:2lathcjlwvxyfvpacr23rxturu:ttvrb5bblzoicbv4rj42mhldrqjab7qcur46wohezyomkqfddxpa/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_POST_upload_mutable_toobig ______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dce1000> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:37245/uri/URI:DIR2:crffk2artrmfpuuuy65qae56hi:erklwk2a7fh42bodasev37uaugvyjbuhfz7ocfb3uca4r6q44y4a/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...bbbbbbbbbbbbbbbbbbbbbb\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________________ Web.test_POST_upload_named __________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406555f3c0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:43407/uri/URI:DIR2:l265tj7p4muqtpls6dl2m2mopi:d4p3mhb7o22lmgxbmcxw42hjjmb3ijc7oflalgcedyjrw2zg4h2q/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...contents\n\xff\x00\xff\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_POST_upload_named_badfilename ____________________ + +self = +res = ]> +expected_failure = +which = 'test_POST_upload_named_badfilename', substring = '400 Bad Request' +response_substring = 'name= may not contain a slash' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:45851/uri/URI:DIR2:6hfst74qd2gvf3xhysd2c6gpni:4juzodu3vowqohgkr5kuarxi6fjbbx4rvusby5alu4ngv36ofkpq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_POST_upload_no_link _________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f4065554080> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST', url = 'http://127.0.0.1:36575/uri' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_POST_upload_no_link_mutable _____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dfb7640> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST', url = 'http://127.0.0.1:36481/uri' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________ Web.test_POST_upload_no_link_mutable_toobig __________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f4065554080> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST', url = 'http://127.0.0.1:35027/uri' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...bbbbbbbbbbbbbbbbbbbbbb\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_POST_upload_no_link_whendone _____________________ + +self = + + @inlineCallbacks + def test_POST_upload_no_link_whendone(self): + body, headers = self.build_form(t="upload", when_done="/", + file=("new.txt", self.NEWFILE_CONTENTS)) +> yield self.shouldRedirectTo(self.webish_url + "/uri", + self.webish_url + "/", + method="post", data=body, headers=headers, + code=http.FOUND) + +allmydata/test/web/test_web.py:2789: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:38031/uri', target_location = 'http://127.0.0.1:38031/' +method = 'post', code = 302 +args = {'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n--boogabooga\r\nContent-Dis...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def shouldRedirectTo(self, url, target_location, method="get", + code=None, **args): +> response = yield treq.request(method, url, persistent=False, + allow_redirects=False, **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/web/test_web.py:4342: RequestTransmissionFailed +________________ Web.test_POST_upload_no_link_whendone_results _________________ + +self = + + @inlineCallbacks + def test_POST_upload_no_link_whendone_results(self): + # We encode "uri" as "%75ri" to exercise a case affected by ticket #1860 + body, headers = self.build_form(t="upload", + when_done="/%75ri/%(uri)s", + file=("new.txt", self.NEWFILE_CONTENTS), + ) +> redir_url = yield self.shouldRedirectTo(self.webish_url + "/uri", None, + method="post", + data=body, headers=headers, + code=http.FOUND) + +allmydata/test/web/test_web.py:2801: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:34735/uri', target_location = None, method = 'post' +code = 302 +args = {'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n--boogabooga\r\nContent-Dis...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def shouldRedirectTo(self, url, target_location, method="get", + code=None, **args): +> response = yield treq.request(method, url, persistent=False, + allow_redirects=False, **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/web/test_web.py:4342: RequestTransmissionFailed +____________________ Web.test_POST_upload_no_replace_field _____________________ + +self = +res = ]> +expected_failure = +which = 'POST_upload_no_replace_field', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:42955/uri/URI:DIR2:twsozilwqseuhqj6diqpl37eea:ichixudyjy7b63m6dnndh3lccfqc7dqkr5oaexm4f2gvyw6pd2wq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_upload_no_replace_ok ______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40ad4a1b80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:40711/uri/URI:DIR2:nubjmgbzjafqijs2rfsab65ltm:qz7zusbuy4o5ll6ev2hwnqf5gsaxnuviprmm7o2lqwohowvpe4vq/foo?replace=false' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________ Web.test_POST_upload_no_replace_queryarg ___________________ + +self = +res = ]> +expected_failure = +which = 'POST_upload_no_replace_queryarg', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:41817/uri/URI:DIR2:gfwwymbhhylh4pm7rusbulsuku:myipualwjt6bh3bqcswywmq5bh7hfxec4oowzyc3beqhqpgy4s7a/foo?replace=false' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_POST_upload_replace _________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406555f3c0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:34219/uri/URI:DIR2:fyll44buanelsnzlno2sfxnf5i:thtgf7s54vzlsyo2m2n43n2ylzu3zagcugbmsvx5g3ql47hahdqq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_POST_upload_unicode _________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e222c00> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:39645/uri/URI:DIR2:vhl5xarhkw6dmf7pkhfcqbcou4:yvmj2bv3zvjhqp3b3wj5rag47iqb6uvcsx7sk53ofiyl3umhn2lq/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_POST_upload_unicode_named ______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f4065554080> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST' +url = 'http://127.0.0.1:45197/uri/URI:DIR2:l6it2sgxh4hmkml32dlw3e65te:2nkghnjkadxigyjssbri4hom55mqrojrxhimllin7urscvilthla/foo' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________________ Web.test_POST_upload_whendone _________________________ + +self = + + @inlineCallbacks + def test_POST_upload_whendone(self): + body, headers = self.build_form(t="upload", when_done="/THERE", + file=("new.txt", self.NEWFILE_CONTENTS)) +> yield self.shouldRedirectTo(self.webish_url + self.public_url + "/foo", + "/THERE", + method="post", data=body, headers=headers, + code=http.FOUND) + +allmydata/test/web/test_web.py:3157: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:39459/uri/URI:DIR2:h4pmfmcbnj5f5kit452vmbqlvq:fb4bh3mmxgyxecsfnkbli7r4jhddquhsqa72wwirtb46ddai3wda/foo' +target_location = '/THERE', method = 'post', code = 302 +args = {'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n--boogabooga\r\nContent-Dis...\r\nnewfile contents\n\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def shouldRedirectTo(self, url, target_location, method="get", + code=None, **args): +> response = yield treq.request(method, url, persistent=False, + allow_redirects=False, **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/web/test_web.py:4342: RequestTransmissionFailed +___________________________ Web.test_PUT_DIRURL_uri ____________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f4065554080> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:43439/uri/URI:DIR2:y4phpvcvy2wc24ekywh3wpmwjq:fm6acmlcw3bjlj2ekme2mwhhsqafepdkl6ep572dvdmkrbyu5hrq/foo?t=uri' +kwargs = {'data': b'URI:DIR2:lx4tndj2jfpbtwqz36wxmynvdq:jhime26meqq6qknbipeq6pbaadglcoukqrrmoy6tvi5z3hbyeq4a', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_PUT_DIRURL_uri_noreplace _______________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:34795/uri/URI:DIR2:roqzznsap3p2t6dojquh5siy6y:gsrs6wjf4vjsym2a42o6ynml6b6ov3n5vw6qqmjt2devmqas7s6q/foo?t=uri&replace=false' +kwargs = {'data': b'URI:DIR2:q4n2stdslepuxylk5zxf6vcj3e:ssdovebyijcszwzpntranp6ihyvjrxujtho2wh4unmtzbcv2xkzq', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +__________________________ Web.test_PUT_FILE_URI_mdmf __________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dce1000> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:38817/uri/URI%3AMDMF%3Aikek6h3al6imkt2jldfg6pkuf4%3A32ce4kbozli5jjjtwcdl2vr5qxhnrdkxx2kag3wvmi4fb2bimjca' +kwargs = {'data': b'new_contents', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_PUT_FILE_URI_mdmf_extensions _____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40ad4a1b80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:41973/uri/URI%3AMDMF%3Anxryqosyni7zzb3gf2uhhjpu3e%3Ah6xmcnezn6fx7hzwsjeis7lrdczzrsi2wonidalpcttmglaxf3ra%3AEXTENSIONSTUFF' +kwargs = {'data': b'new_contents', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_PUT_FILE_URI_mdmf_readonly ______________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:41655/uri/URI:MDMF-RO:axzutqvqwmqfoe426ycvknrliu:vaubm3rjpkhpycaaoow6353zsnd6ncuw447i3qkw2flab3yqtena' +kwargs = {'data': b'new data', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_PUT_FILE_URI_sdmf_readonly ______________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:46381/uri/URI:SSK-RO:wlkp3nhqapp2eel6jo4lx4nmsu:2rt5c2rpnts754pmpcvhmgr7dorw52kjqgv7eviko45tzwu6y2fq' +kwargs = {'data': b'new_data', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________________ Web.test_PUT_NEWFILEURL ____________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dc00d00> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:35171/uri/URI:DIR2:lzvtialafba2dnxqvlpr6whxay:wao3egpqnnt7pfslvqw4a4d6xebizytrt75wmp7o7mlum6grbnxq/foo/new.txt' +kwargs = {'data': b'newfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_PUT_NEWFILEURL_bad_format ______________________ + +self = + + @inlineCallbacks + def test_PUT_NEWFILEURL_bad_format(self): + new_contents = self.NEWFILE_CONTENTS * 300000 + url = self.webish_url + self.public_url + "/foo/foo.txt?format=foo" +> yield self.assertHTTPError(url, 400, "Unknown format: foo", + method="put", data=new_contents) + +allmydata/test/web/test_web.py:4520: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:42153/uri/URI:DIR2:fu2s5ikvrlrevi5z66izb23aqa:acgaadvgzwzx3slvar7kuc32m5soiufgmiruzdjxin4i4rwdzbua/foo/foo.txt?format=foo' +code = 400, response_substring = 'Unknown format: foo', method = 'put' +persistent = False +args = {'data': b'newfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\...ontents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\n'} + + @inlineCallbacks + def assertHTTPError(self, url, code, response_substring, + method="get", persistent=False, + **args): +> response = yield treq.request(method, url, persistent=persistent, + **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common.py:970: RequestTransmissionFailed +________________________ Web.test_PUT_NEWFILEURL_bad_t _________________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:45665/uri/URI:DIR2:6doh5llkdibb2zvhnzfsujcqta:d6cq3d27ycdl4sxvkkr5x2sf7z5iec3xvp6phyk6zjw5gzz3sftq/foo/bar.txt?t=bogus' +kwargs = {'data': b'contents', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_______________________ Web.test_PUT_NEWFILEURL_blocked ________________________ + +self = +res = ]> +expected_failure = +which = 'PUT_NEWFILEURL_blocked', substring = '409 Conflict' +response_substring = "Unable to create directory 'blockingfile': a file was in the way" + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:38733/uri/URI:DIR2:pjbm3a2jm7ah6t2rr6ralwdkjq:4s435y4ztzdzdq5gtanhxo7cbsqujapa3tlgsu5n7tventbyqbjq/foo/blockingfile/new.txt' +kwargs = {'data': b'newfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_PUT_NEWFILEURL_mdmf _________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406555f3c0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:45273/uri/URI:DIR2:fj56vc7elhdovnnz7q7bnkmg7i:ujz5l5itdfix3nahlxggafndfxwx5goxscun4lenffqhauwkworq/foo/mdmf.txt?format=mdmf' +kwargs = {'data': b'newfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\...e contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________________ Web.test_PUT_NEWFILEURL_mkdirs ________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dfefbc0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:41415/uri/URI:DIR2:uu54nrud3dbb7rnnqgn4fw2azm:lj2vmkgey7ff3axpndxf2pemga7274hoe3hia5yprb7u2724a26a/foo/newdir/new.txt' +kwargs = {'data': b'newfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_______________________ Web.test_PUT_NEWFILEURL_mutable ________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402f7de900> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:43373/uri/URI:DIR2:ettfqczvkagqnslehepy4oyiie:wjz6ppl6rkbqf3xjfnlpigdytrp52ufp7onenwio5pgzrvk2cvwa/foo/new.txt?mutable=true' +kwargs = {'data': b'newfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_PUT_NEWFILEURL_mutable_toobig ____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406512fe40> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:42425/uri/URI:DIR2:rlmjaapafhfrhubyzektzrfgoi:l6pbs5thvaqfu4lhee54d3pnftxc2jtvmnvkzmtfiphoutyrrr3q/foo/new.txt?mutable=true' +kwargs = {'data': b'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_PUT_NEWFILEURL_no_replace ______________________ + +self = +res = ]> +expected_failure = +which = 'PUT_NEWFILEURL_no_replace', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:44325/uri/URI:DIR2:n43cet75gvirotshbh42isxmlu:d2wljlxyksna23w7346wo4ez3w3mwottaqechwojcdarc5jla7qa/foo/bar.txt?replace=false' +kwargs = {'data': b'newfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_PUT_NEWFILEURL_not_mutable ______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d5d3e80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:43965/uri/URI:DIR2:fsja3jxof5ezkxqqzi3ibeifba:rw3is72ytlcpjyfmo7tnfdcpplvzekd52vjzd6bamz62vrdco66a/foo/new.txt?mutable=false' +kwargs = {'data': b'newfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_PUT_NEWFILEURL_range_bad _______________________ + +res = ]> + + def done(res): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:654: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:41407/uri/URI:DIR2:xsqcts2geuktyn5eudsokvs2pu:qexelk52qcnj25llho3gezvgtp2qrha4cbveaqziyh7bkkfthlba/foo/new.txt' +kwargs = {'data': b'ewfile con', 'headers': {'content-range': 'bytes 1-10/17'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_______________________ Web.test_PUT_NEWFILEURL_replace ________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d5d3e80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:44485/uri/URI:DIR2:euqezk7mevputvbphvl2fplxfy:zrkgolzmrdxphj4y6j62q23q2zdcg5higj7ooxuxoh27js5hbf3a/foo/bar.txt' +kwargs = {'data': b'newfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_PUT_NEWFILEURL_sdmf _________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40adb81fc0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:41529/uri/URI:DIR2:ymlwewb3hbli6lgfjlfi24el5u:6opuik7j66zkio36chgcjihtc3cbzozgn3uhssbxlnbv34z6w26a/foo/sdmf.txt?format=sdmf' +kwargs = {'data': b'newfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\...e contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________ Web.test_PUT_NEWFILEURL_unlinked_bad_format __________________ + +self = + + @inlineCallbacks + def test_PUT_NEWFILEURL_unlinked_bad_format(self): + contents = self.NEWFILE_CONTENTS * 300000 +> yield self.assertHTTPError(self.webish_url + "/uri?format=foo", 400, + "Unknown format: foo", + method="put", data=contents) + +allmydata/test/web/test_web.py:1782: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +self = +url = 'http://127.0.0.1:43685/uri?format=foo', code = 400 +response_substring = 'Unknown format: foo', method = 'put', persistent = False +args = {'data': b'newfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\...ontents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\n'} + + @inlineCallbacks + def assertHTTPError(self, url, code, response_substring, + method="get", persistent=False, + **args): +> response = yield treq.request(method, url, persistent=persistent, + **args) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common.py:970: RequestTransmissionFailed +____________________ Web.test_PUT_NEWFILEURL_unlinked_mdmf _____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40654f9bc0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put', url = 'http://127.0.0.1:45673/uri?format=mdmf' +kwargs = {'data': b'newfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\...e contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_PUT_NEWFILEURL_unlinked_sdmf _____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402dcf1d80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put', url = 'http://127.0.0.1:43205/uri?format=sdmf' +kwargs = {'data': b'newfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\...e contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\nnewfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________________ Web.test_PUT_NEWFILEURL_uri __________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40654f9bc0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:33893/uri/URI:DIR2:er2w6abhzhduvprtaay2kviv3i:k72vfajbihdhupxdl5rl5uflw2i2vwtpbgye26tudldogurctsja/foo/new.txt?t=uri' +kwargs = {'data': b'URI:CHK:otkq7e65ppzxrauu4aqnefsco4:cdd2dzjqqliz5tm4dmq4pqh7ytzimywwomhdyq7csegjlrl4xzxq:3:10:19', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_PUT_NEWFILEURL_uri_no_replace ____________________ + +self = +res = ]> +expected_failure = +which = 'PUT_NEWFILEURL_uri_no_replace', substring = '409 Conflict' +response_substring = 'There was already a child by that name, and you asked me to not replace it' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:32853/uri/URI:DIR2:4b7oez5gp5iml7gjxrop5i4eku:ggqomsz3mpqc4cb2lnjiiekbewihz6ft645maijac7qbent5me5a/foo/bar.txt?t=uri&replace=false' +kwargs = {'data': b'URI:CHK:4clvwa6xsy7ayclldtw5k7misi:o4xcuf3zsra37dj3zliguhgjuhs5oltlvneaeawat7su6errmfia:3:10:19', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_PUT_NEWFILEURL_uri_replace ______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406512fe40> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:35795/uri/URI:DIR2:wxu7kubchvli37injwcrqdgxxm:hoqy5ndfjmlauttmgmcwrsviskya2hvvqes7al2ngdjrbobwlvta/foo/bar.txt?t=uri' +kwargs = {'data': b'URI:CHK:rmueoubeakaobmhcmkcbyr5m5a:clv35migd4mnaectntg75jkna74ocvphmd2owc5q6qi3rntjixtq:3:10:19', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________ Web.test_PUT_NEWFILEURL_uri_unknown_bad ____________________ + +self = +res = ]> +expected_failure = +which = 'POST_put_uri_unknown_bad', substring = '400 Bad Request' +response_substring = 'unknown cap in a write slot' + + def shouldFail(self, res, expected_failure, which, + substring=None, response_substring=None): + if isinstance(res, failure.Failure): +> res.trap(expected_failure) + +allmydata/test/web/test_web.py:637: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:431: in trap + self.raiseException() +/usr/lib/python3/dist-packages/twisted/python/failure.py:455: in raiseException + raise self.value.with_traceback(self.tb) +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:37867/uri/URI:DIR2:xy5726w2tx2sa7z5hl6fcs4p4u:qh3w57vzbxp6tdhp6n3xibp5xms657kuxoilydhmv7qrzddxcuya/foo/put-future.txt?t=uri' +kwargs = {'data': b'lafs://from_the_future_rw_\xe2\x98\xba', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________ Web.test_PUT_NEWFILEURL_uri_unknown_imm_good _________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402d5d3e80> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:35663/uri/URI:DIR2:qq36mnnplfcve5i6jawdpbunf4:jtuoju6lbu75iwrtowqrfpuksyvys7hfsvaaotfym246orvxwrja/foo/put-future-imm.txt?t=uri' +kwargs = {'data': b'imm.lafs://immutable_from_the_future_imm_\xe2\x98\xba', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_________________ Web.test_PUT_NEWFILEURL_uri_unknown_ro_good __________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40adb81fc0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:35941/uri/URI:DIR2:jvjxo7odwynqbsif3qzctsyjxe:2rb6gt5jew2slxoalvvjtgouyj5f2yyuyuopwp6zkj2wfwlkeiaq/foo/put-future-ro.txt?t=uri' +kwargs = {'data': b'ro.lafs://readonly_from_the_future_ro_\xe2\x98\xba', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________________ Web.test_PUT_NEWFILE_URI ___________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406512fe40> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put', url = 'http://127.0.0.1:45429/uri' +kwargs = {'data': b'New file contents here\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_______________________ Web.test_PUT_NEWFILE_URI_mutable _______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402f7de900> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put', url = 'http://127.0.0.1:34287/uri?mutable=true' +kwargs = {'data': b'New file contents here\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_____________________ Web.test_PUT_NEWFILE_URI_not_mutable _____________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f40654f9bc0> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put', url = 'http://127.0.0.1:39657/uri?mutable=false' +kwargs = {'data': b'New file contents here\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________ Web.test_PUT_overwrite_only_files _______________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402e39c140> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put' +url = 'http://127.0.0.1:45545/uri/URI:DIR2:oxcmp5auqguxieusrcmdnn3rni:vwzcygy2pegyxi3bhhpxlqvekncpude3e5nmv63hyh3ww7q3grba/foo/dir/file1.txt' +kwargs = {'data': b'newfile contents\n', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +____________________ Web.test_PUT_update_at_invalid_offset _____________________ + +self = + + @inlineCallbacks + def test_PUT_update_at_invalid_offset(self): + file_contents = b"test file" * 100000 # about 900 KiB +> filecap = yield self.PUT("/uri?mutable=true", file_contents) + +allmydata/test/web/test_web.py:4708: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put', url = 'http://127.0.0.1:46597/uri?mutable=true' +kwargs = {'data': b'test filetest filetest filetest filetest filetest filetest filetest filetest filetest filetest filetest fil...iletest filetest filetest filetest filetest filetest filetest filetest filetest filetest filetest file', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +________________________ Web.test_PUT_update_at_offset _________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f402f7de900> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put', url = 'http://127.0.0.1:33031/uri?mutable=true' +kwargs = {'data': b'test filetest filetest filetest filetest filetest filetest filetest filetest filetest filetest filetest fil...iletest filetest filetest filetest filetest filetest filetest filetest filetest filetest filetest file', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +___________________ Web.test_PUT_update_at_offset_immutable ____________________ + +self = + + @inlineCallbacks + def test_PUT_update_at_offset_immutable(self): + file_contents = b"Test file" * 100000 +> filecap = yield self.PUT("/uri", file_contents) + +allmydata/test/web/test_web.py:4717: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: in _inlineCallbacks + result = context.run( +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'put', url = 'http://127.0.0.1:37955/uri' +kwargs = {'data': b'Test fileTest fileTest fileTest fileTest fileTest fileTest fileTest fileTest fileTest fileTest fileTest fil...ileTest fileTest fileTest fileTest fileTest fileTest fileTest fileTest fileTest fileTest fileTest file', 'headers': {}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +______________________________ Web.test_incident _______________________________ + +result = ]> +gen = +status = _CancellationStatus(deferred=, waitingOn=) +context = <_contextvars.Context object at 0x7f406512fe40> + + @_extraneous + def _inlineCallbacks( + result: object, + gen: Union[ + Generator[Deferred[Any], Any, _T], + Coroutine[Deferred[Any], Any, _T], + ], + status: _CancellationStatus[_T], + context: _Context, + ) -> None: + """ + Carry out the work of L{inlineCallbacks}. + + Iterate the generator produced by an C{@}L{inlineCallbacks}-decorated + function, C{gen}, C{send()}ing it the results of each value C{yield}ed by + that generator, until a L{Deferred} is yielded, at which point a callback + is added to that L{Deferred} to call this function again. + + @param result: The last result seen by this generator. Note that this is + never a L{Deferred} - by the time this function is invoked, the + L{Deferred} has been called back and this will be a particular result + at a point in its callback chain. + + @param gen: a generator object returned by calling a function or method + decorated with C{@}L{inlineCallbacks} + + @param status: a L{_CancellationStatus} tracking the current status of C{gen} + + @param context: the contextvars context to run `gen` in + """ + # This function is complicated by the need to prevent unbounded recursion + # arising from repeatedly yielding immediately ready deferreds. This while + # loop and the waiting variable solve that by manually unfolding the + # recursion. + + # waiting for result? # result + waiting: List[Any] = [True, None] + + stopIteration: bool = False + callbackValue: Any = None + + while 1: + try: + # Send the last result back as the result of the yield expression. + isFailure = isinstance(result, Failure) + + if isFailure: +> result = context.run( + cast(Failure, result).throwExceptionIntoGenerator, gen + ) + +/usr/lib/python3/dist-packages/twisted/internet/defer.py:2013: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +/usr/lib/python3/dist-packages/twisted/python/failure.py:467: in throwExceptionIntoGenerator + return g.throw(self.value.with_traceback(self.tb)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +method = 'POST', url = 'http://127.0.0.1:33923/report_incident' +kwargs = {'allow_redirects': False, 'data': b'--boogabooga\r\nContent-Disposition: form-data; name="_charset"\r\n\r\nUTF-8\r\n-...e="details"\r\n\r\neek\r\n--boogabooga--\r\n', 'headers': {'content-type': 'multipart/form-data; boundary=boogabooga'}} + + @inlineCallbacks + def do_http(method, url, **kwargs): + """ + Run HTTP query, return Deferred of body as bytes. + """ +> response = yield treq.request(method, url, persistent=False, **kwargs) +E twisted.web._newclient.RequestTransmissionFailed: [] + +allmydata/test/common_web.py:57: RequestTransmissionFailed +_______________________________ Web.test_static ________________________________ +'NoneType' object is not iterable + +During handling of the above exception, another exception occurred: +NOTE: Incompatible Exception Representation, displaying natively: + +twisted.internet.defer.TimeoutError: (test_static) still running at 120.0 secs + =============================== warnings summary =============================== ../../../../../../usr/lib/python3/dist-packages/_pytest/config/__init__.py:1441 /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1441: PytestConfigWarning: Unknown config option: twisted @@ -1392,7 +10756,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_multi_introducers.py: 10 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py: 11 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 14 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 264 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 258 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 10 warnings /usr/lib/python3/dist-packages/twisted/internet/_sslverify.py:799: DeprecationWarning: CSR support in pyOpenSSL is deprecated. You should use the APIs in cryptography. req = crypto.X509Req() @@ -1407,7 +10771,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_multi_introducers.py: 10 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py: 11 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 14 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 264 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 258 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 10 warnings /usr/lib/python3/dist-packages/twisted/internet/_sslverify.py:587: DeprecationWarning: CSR support in pyOpenSSL is deprecated. You should use the APIs in cryptography. return crypto.dump_certificate_request(format, self.original) @@ -1422,7 +10786,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_multi_introducers.py: 10 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py: 11 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 14 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 264 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 258 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 10 warnings /usr/lib/python3/dist-packages/twisted/internet/_sslverify.py:579: DeprecationWarning: CSR support in pyOpenSSL is deprecated. You should use the APIs in cryptography. req = crypto.load_certificate_request(requestFormat, requestData) @@ -1437,7 +10801,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_multi_introducers.py: 10 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py: 11 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 14 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 264 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 258 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 10 warnings /usr/lib/python3/dist-packages/OpenSSL/crypto.py:2434: DeprecationWarning: CSR support in pyOpenSSL is deprecated. You should use the APIs in cryptography. x509req = X509Req.__new__(X509Req) @@ -1546,7 +10910,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 45 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_encodingutil.py: 3 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_runner.py: 182 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 580 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 308 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/util/encodingutil.py:113: DeprecationWarning: This is unnecessary. warnings.warn("This is unnecessary.", DeprecationWarning) @@ -1559,11 +10923,11 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_mv.py: 23 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_put.py: 46 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 14 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 92 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 50 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_common.py: 4 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 15 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_root.py: 2 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 202 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 66 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:594: DeprecationWarning: Message.log() is deprecated since 1.11.0, use Action.log() or eliot.log_message() instead. Message.log( @@ -1575,10 +10939,10 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_list.py: 25 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_mv.py: 75 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_put.py: 96 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 93 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 438 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 95 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 228 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 81 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 864 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 299 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:491: DeprecationWarning: Message.log() is deprecated since 1.11.0, use Action.log() or eliot.log_message() instead. Message.log( @@ -1586,9 +10950,9 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_cp.py: 7 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_list.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_mv.py: 3 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 8 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 4 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 3 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 28 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 25 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:502: DeprecationWarning: twisted.web.resource._UnsafeErrorPage.__init__ was deprecated in Twisted 22.10.0; please use Use twisted.web.pages.errorPage instead, which properly escapes HTML. instead return resource.ErrorPage(code, "Error", text) @@ -1609,7 +10973,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_no_network.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_repairer.py: 35 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_sftp.py: 9 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 28 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 16 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_upload.py: 57 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 22 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/immutable/upload.py:720: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead @@ -1632,7 +10996,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_no_network.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_repairer.py: 35 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_sftp.py: 9 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 28 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 16 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_upload.py: 57 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 22 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/immutable/upload.py:720: DeprecationWarning: returnValue() in 'get_shareholders' causing 'wrapper' to exit: returnValue should only be invoked by functions decorated with inlineCallbacks @@ -1655,7 +11019,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_no_network.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_repairer.py: 34 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_sftp.py: 9 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 28 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 16 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_upload.py: 52 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 22 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/immutable/upload.py:1286: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead @@ -1678,22 +11042,22 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_no_network.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_repairer.py: 34 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_sftp.py: 9 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 28 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 16 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_upload.py: 52 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 22 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/immutable/upload.py:1286: DeprecationWarning: returnValue() in 'start_encrypted' causing 'wrapper' to exit: returnValue should only be invoked by functions decorated with inlineCallbacks defer.returnValue(results) .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_backup.py: 8 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/mutable/test_problems.py: 1 warning -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 1 warning +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_check.py: 2 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/mutable/test_problems.py: 5 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 3 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_download.py: 60 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_istorageserver.py: 6 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_http.py: 2 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 8 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 6 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_time_format.py: 10 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 2 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/util/time_format.py:31: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC). return datetime.datetime.utcfromtimestamp(now).isoformat(sep) @@ -1707,13 +11071,13 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_put.py: 16 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_status.py: 4 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_checker.py: 4 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 56 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 57 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_openmetrics.py: 1 warning -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 110 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 57 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_common.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 24 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_root.py: 1 warning -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 85 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 12 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:588: DeprecationWarning: Message.log() is deprecated since 1.11.0, use Action.log() or eliot.log_message() instead. Message.log( @@ -1722,7 +11086,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_create_alias.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_list.py: 18 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_encodingutil.py: 3 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 220 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 110 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/util/encodingutil.py:167: DeprecationWarning: This is unnecessary. warnings.warn("This is unnecessary.", DeprecationWarning) @@ -1734,22 +11098,22 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_mv.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_put.py: 17 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 58 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 88 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 44 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_common.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 33 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 99 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 35 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:582: DeprecationWarning: Message.log() is deprecated since 1.11.0, use Action.log() or eliot.log_message() instead. Message.log( .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_backup.py: 3 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_cp.py: 72 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_cp.py: 75 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_create_alias.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_mv.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_put.py: 17 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 80 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 40 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_common.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 4 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 67 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 24 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:605: DeprecationWarning: Message.log() is deprecated since 1.11.0, use Action.log() or eliot.log_message() instead. Message.log( @@ -1757,7 +11121,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_cli.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 7 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_common.py: 1 warning -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 24 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 13 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:600: DeprecationWarning: Message.log() is deprecated since 1.11.0, use Action.log() or eliot.log_message() instead. Message.log( @@ -1775,11 +11139,11 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_cli.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_cp.py: 3 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_mv.py: 1 warning -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 2 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_common.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 11 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_root.py: 1 warning -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 59 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 13 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:568: DeprecationWarning: Message.log() is deprecated since 1.11.0, use Action.log() or eliot.log_message() instead. Message.log( @@ -1832,7 +11196,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_multi_introducers.py: 4 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py: 3 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 5 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 68 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 64 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/client.py:355: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue(cls( @@ -1843,7 +11207,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 5 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_https.py: 4 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 606 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 582 warnings /usr/lib/python3/dist-packages/twisted/internet/_sslverify.py:1642: DeprecationWarning: Passing pyOpenSSL X509 objects is deprecated. You should use a cryptography.x509.Certificate instead. ctx.use_certificate(self.certificate) @@ -1854,7 +11218,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 5 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_https.py: 4 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 606 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 582 warnings /usr/lib/python3/dist-packages/twisted/internet/_sslverify.py:1643: DeprecationWarning: Passing pyOpenSSL PKey objects is deprecated. You should use a cryptography private key instead. ctx.use_privatekey(self.privateKey) @@ -1865,16 +11229,16 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_multi_introducers.py: 4 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 5 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 68 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 64 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/client.py:313: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue(client) .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/cli/test_status.py: 2 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 72 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 74 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 3 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 54 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 4 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 150 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 27 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 3 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 37 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/common_web.py:65: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead returnValue(body) @@ -1898,7 +11262,7 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_https.py: 4 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 12 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 4 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 3 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_logs.py: 1 warning .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_root.py: 1 warning /usr/lib/python3/dist-packages/testtools/twistedsupport/_runtest.py:338: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead @@ -1937,18 +11301,18 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_client.py: 5 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_introducer.py: 37 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_istorageserver.py: 2725 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_istorageserver.py: 2727 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_node.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_storage_client.py: 47 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 88 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_introducer.py: 80 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/node.py:113: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC). d = datetime.datetime.utcfromtimestamp(when) .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_deepcheck.py: 11 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 30 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 15 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_common.py: 3 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 28 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 55 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 32 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:610: DeprecationWarning: Message.log() is deprecated since 1.11.0, use Action.log() or eliot.log_message() instead. Message.log( @@ -2093,22 +11457,22 @@ returnValue((storage_index, renew_secret, cancel_secret)) .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_istorageserver.py: 18 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 56 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 4 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/storage_client.py:1606: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue( .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_istorageserver.py: 22 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 134 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 20 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/storage_client.py:1530: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue(None) .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_istorageserver.py: 45 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 562 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 46 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/storage_client.py:1503: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue(result) .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_istorageserver.py: 5 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 188 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 8 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/storage_client.py:1627: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue({ @@ -2181,29 +11545,83 @@ /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/util/time_format.py:21: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC). return datetime.datetime.utcfromtimestamp(now).isoformat()[:10] -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 4 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 10 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 10 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 7 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/directory.py:694: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue(self.dirnode_children) -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 4 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 2 warnings .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_grid.py: 10 warnings -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 10 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 7 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/directory.py:680: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue(template) -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 126 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py: 63 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py:1408: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue((out,err)) .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py::SystemTest::test_upload_and_download_convergent .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py::SystemTest::test_upload_and_download_random_key -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py::HTTPSystemTest::test_upload_and_download_convergent -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py::HTTPSystemTest::test_upload_and_download_random_key /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/common_system.py:968: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead defer.returnValue(c) +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py::HTTPSystemTest::test_mutable_sdmf + /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:85: PytestUnraisableExceptionWarning: Exception ignored in: + + Traceback (most recent call last): + File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/storage/http_client.py", line 1223, in list_shares + result = await self._list_shares(storage_index) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + GeneratorExit + + During handling of the above exception, another exception occurred: + + Traceback (most recent call last): + File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/storage/http_client.py", line 1219, in list_shares + with start_action( + ~~~~~~~~~~~~^ + action_type="allmydata:storage:http-client:mutable:list-shares", + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + storage_index=si_to_human_readable(storage_index), + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) as ctx: + ^ + File "/usr/lib/python3/dist-packages/eliot/_action.py", line 429, in __exit__ + _ACTION_CONTEXT.reset(self._parent_token) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + ValueError: at 0x7f402c880ac0> was created in a different Context + + warnings.warn(pytest.PytestUnraisableExceptionWarning(msg)) + +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_system.py::HTTPSystemTest::test_upload_and_download_convergent + /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:85: PytestUnraisableExceptionWarning: Exception ignored in: + + Traceback (most recent call last): + File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/storage/http_client.py", line 1223, in list_shares + result = await self._list_shares(storage_index) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + GeneratorExit + + During handling of the above exception, another exception occurred: + + Traceback (most recent call last): + File "/build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/storage/http_client.py", line 1219, in list_shares + with start_action( + ~~~~~~~~~~~~^ + action_type="allmydata:storage:http-client:mutable:list-shares", + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + storage_index=si_to_human_readable(storage_index), + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) as ctx: + ^ + File "/usr/lib/python3/dist-packages/eliot/_action.py", line 429, in __exit__ + _ACTION_CONTEXT.reset(self._parent_token) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + ValueError: at 0x7f402c835bc0> was created in a different Context + + warnings.warn(pytest.PytestUnraisableExceptionWarning(msg)) + .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_tor_provider.py::LaunchTor::test_launch .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/test_tor_provider.py::LaunchTor::test_launch_executable /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/util/tor_provider.py:137: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead @@ -2260,7 +11678,7 @@ /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/common.py:815: DeprecationWarning: twisted.web.resource._UnsafeErrorPage.__init__ was deprecated in Twisted 22.10.0; please use Use twisted.web.pages.errorPage instead, which properly escapes HTML. instead return resource.ErrorPage( -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 169 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 79 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py:565: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead returnValue(data) @@ -2269,7 +11687,7 @@ /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py:2082: DeprecationWarning: Call to deprecated method findNextSibling. (Replaced by find_next_sibling) -- Deprecated since version 4.0.0. td.findNextSibling()(u"a")[0][u"href"] == sub_url -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 27 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 18 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/common.py:978: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead returnValue(body) @@ -2281,7 +11699,7 @@ /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py:2101: DeprecationWarning: Call to deprecated method findNextSibling. (Replaced by find_next_sibling) -- Deprecated since version 4.0.0. td.findNextSibling()(u"a")[0] -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 32 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 15 warnings /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py:562: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead returnValue( (data, str(response.code), response.headers) ) @@ -2289,7 +11707,11 @@ /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/filenode.py:180: DeprecationWarning: twisted.web.resource._UnsafeErrorPage.__init__ was deprecated in Twisted 22.10.0; please use Use twisted.web.pages.errorPage instead, which properly escapes HTML. instead return ErrorPage( -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py: 16 warnings +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_GET_URI_form +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_GET_URI_form +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_GET_URI_form +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_POST_mkdir_no_parentdir_redirect +.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_welcome_page_mkdir_button /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py:4353: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead returnValue(location) @@ -2297,7 +11719,6 @@ .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_HEAD_FILEURL_partial_end_range .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_HEAD_FILEURL_partial_range .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_HEAD_FILEURL_range -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_POST_upload_mutable /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py:576: DeprecationWarning: twisted.internet.defer.returnValue was deprecated in Twisted 24.7.0; please use standard return statement instead returnValue( ("", response.code, response.headers) ) @@ -2306,7 +11727,6 @@ return ErrorPage( .pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_PUT_NEWDIRURL_blocked -.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_blocked /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build/allmydata/web/directory.py:205: DeprecationWarning: twisted.web.resource._UnsafeErrorPage.__init__ was deprecated in Twisted 22.10.0; please use Use twisted.web.pages.errorPage instead, which properly escapes HTML. instead return ErrorPage( @@ -2324,49 +11744,184 @@ return resource.NoResource() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html -== 1841 passed, 5 skipped, 1 deselected, 20290 warnings in 1191.90s (0:19:51) == - debian/rules execute_after_dh_auto_test -make[1]: Entering directory '/build/reproducible-path/tahoe-lafs-1.20.0' -find .pybuild/*/build -mindepth 1 -maxdepth 1 ! -name allmydata | xargs rm -rf -find .pybuild/*/build -name dropin.cache | xargs --no-run-if-empty rm -make[1]: Leaving directory '/build/reproducible-path/tahoe-lafs-1.20.0' - create-stamp debian/debhelper-build-stamp - dh_testroot -O--buildsystem=pybuild - dh_prep -O--buildsystem=pybuild - dh_auto_install --destdir=debian/tahoe-lafs/ -O--buildsystem=pybuild -I: pybuild plugin_pyproject:178: Copying package built for python3.13 to destdir - dh_installdocs -O--buildsystem=pybuild - dh_installchangelogs -O--buildsystem=pybuild - dh_installman -O--buildsystem=pybuild - dh_python3 -O--buildsystem=pybuild -I: dh_python3 tools:114: replacing shebang in debian/tahoe-lafs/usr/bin/grid-manager -I: dh_python3 tools:114: replacing shebang in debian/tahoe-lafs/usr/bin/tahoe - dh_installsystemduser -O--buildsystem=pybuild - dh_perl -O--buildsystem=pybuild - dh_link -O--buildsystem=pybuild - dh_strip_nondeterminism -O--buildsystem=pybuild - dh_compress -O--buildsystem=pybuild - dh_fixperms -O--buildsystem=pybuild - dh_missing -O--buildsystem=pybuild - dh_installdeb -O--buildsystem=pybuild - dh_gencontrol -O--buildsystem=pybuild - dh_md5sums -O--buildsystem=pybuild - dh_builddeb -O--buildsystem=pybuild -dpkg-deb: building package 'tahoe-lafs' in '../tahoe-lafs_1.20.0-5_all.deb'. - dpkg-genbuildinfo --build=binary -O../tahoe-lafs_1.20.0-5_amd64.buildinfo - dpkg-genchanges --build=binary -O../tahoe-lafs_1.20.0-5_amd64.changes -dpkg-genchanges: info: binary-only upload (no source code included) - dpkg-source --after-build . -dpkg-source: info: using options from tahoe-lafs-1.20.0/debian/source/options: --extend-diff-ignore=^[^/]*[.]egg-info/ -dpkg-buildpackage: info: binary-only upload (no source included) -dpkg-genchanges: info: not including original source code in upload +=========================== short test summary info ============================ +FAILED allmydata/test/cli/test_run.py::RunTests::test_pidfile_contents - Fail... +FAILED allmydata/test/test_node.py::Listeners::test_multiple_ports - hypothes... +FAILED allmydata/test/test_storage_http.py::CustomHTTPServerTests::test_limited_content_does_not_fit +FAILED allmydata/test/test_storage_http.py::ImmutableSharedTests::test_read_with_no_range +FAILED allmydata/test/test_storage_http.py::MutableSharedTests::test_read_with_no_range +FAILED allmydata/test/test_system.py::HTTPSystemTest::test_filesystem - allmy... +FAILED allmydata/test/test_system.py::HTTPSystemTest::test_mutable_mdmf - Fai... +FAILED allmydata/test/test_system.py::HTTPSystemTest::test_mutable_sdmf - all... +FAILED allmydata/test/test_system.py::HTTPSystemTest::test_upload_and_download_convergent +FAILED allmydata/test/test_system.py::HTTPSystemTest::test_upload_and_download_random_key +FAILED allmydata/test/test_system.py::HTTPConnections::test_rref - Failed: NO... +FAILED allmydata/test/web/test_introducer.py::IntroducerWeb::test_tahoe_css +FAILED allmydata/test/web/test_web.py::Web::test_CSS_FILE - Failed: NOTE: Inc... +FAILED allmydata/test/web/test_web.py::Web::test_GET_DIRURL_json_format - twi... +FAILED allmydata/test/web/test_web.py::Web::test_GET_FILEURL_json_mutable_type +FAILED allmydata/test/web/test_web.py::Web::test_GET_etags - twisted.web._new... +FAILED allmydata/test/web/test_web.py::Web::test_POST_DIRURL_check - twisted.... +FAILED allmydata/test/web/test_web.py::Web::test_POST_DIRURL_check_and_repair +FAILED allmydata/test/web/test_web.py::Web::test_POST_DIRURL_deepcheck - twis... +FAILED allmydata/test/web/test_web.py::Web::test_POST_DIRURL_deepcheck_and_repair +FAILED allmydata/test/web/test_web.py::Web::test_POST_DIRURL_deepcheck_no_ophandle +FAILED allmydata/test/web/test_web.py::Web::test_POST_DIRURL_deepsize_no_ophandle +FAILED allmydata/test/web/test_web.py::Web::test_POST_DIRURL_deepstats_no_ophandle +FAILED allmydata/test/web/test_web.py::Web::test_POST_DIRURL_manifest_no_ophandle +FAILED allmydata/test/web/test_web.py::Web::test_POST_FILEURL_bad_t - twisted... +FAILED allmydata/test/web/test_web.py::Web::test_POST_FILEURL_check - twisted... +FAILED allmydata/test/web/test_web.py::Web::test_POST_FILEURL_check_and_repair +FAILED allmydata/test/web/test_web.py::Web::test_POST_FILEURL_mdmf_check - tw... +FAILED allmydata/test/web/test_web.py::Web::test_POST_FILEURL_mdmf_check_and_repair +FAILED allmydata/test/web/test_web.py::Web::test_POST_NEWDIRURL_immutable - t... +FAILED allmydata/test/web/test_web.py::Web::test_POST_NEWDIRURL_immutable_bad +FAILED allmydata/test/web/test_web.py::Web::test_POST_NEWDIRURL_initial_children +FAILED allmydata/test/web/test_web.py::Web::test_POST_NEWDIRURL_initial_children_bad_format +FAILED allmydata/test/web/test_web.py::Web::test_POST_NEWDIRURL_initial_children_mdmf +FAILED allmydata/test/web/test_web.py::Web::test_POST_NEWDIRURL_initial_children_sdmf +FAILED allmydata/test/web/test_web.py::Web::test_POST_bad_t - twisted.web._ne... +FAILED allmydata/test/web/test_web.py::Web::test_POST_check - twisted.web._ne... +FAILED allmydata/test/web/test_web.py::Web::test_POST_delete - twisted.web._n... +FAILED allmydata/test/web/test_web.py::Web::test_POST_link_uri - twisted.web.... +FAILED allmydata/test/web/test_web.py::Web::test_POST_link_uri_no_replace_field +FAILED allmydata/test/web/test_web.py::Web::test_POST_link_uri_no_replace_queryarg +FAILED allmydata/test/web/test_web.py::Web::test_POST_link_uri_replace - twis... +FAILED allmydata/test/web/test_web.py::Web::test_POST_link_uri_unknown_bad - ... +FAILED allmydata/test/web/test_web.py::Web::test_POST_link_uri_unknown_imm_good +FAILED allmydata/test/web/test_web.py::Web::test_POST_link_uri_unknown_ro_good +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir - twisted.web._ne... +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_immutable - twist... +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_immutable_bad - t... +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_initial_children +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_initial_children_bad_format +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_initial_children_mdmf +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_initial_children_sdmf +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_no_parentdir_immutable +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_no_parentdir_immutable_bad +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_no_parentdir_initial_children +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_no_parentdir_noredirect2 +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_no_parentdir_redirect2 +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_no_parentdir_unexpected_children +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_no_replace_field +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_no_replace_queryarg +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_replace - twisted... +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_whendone_field - ... +FAILED allmydata/test/web/test_web.py::Web::test_POST_mkdir_whendone_queryarg +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_dir - twisted.we... +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file - twisted.w... +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_bad_replace +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_explicitly_same_link +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_implicitly_same_link +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_into_file +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_multi_level +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_new_name - ... +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_no_replace +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_no_replace_explicitly_same_link +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_replace - t... +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_replace_only_files +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_replace_only_files_conflict +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_same_dir - ... +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_to_bad_uri +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_to_nonexistent_dir +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_to_slash_fail +FAILED allmydata/test/web/test_web.py::Web::test_POST_relink_file_to_uri - tw... +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_dir - twisted.we... +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file - twisted.w... +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file_from_slash_fail +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file_no_replace_field +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file_no_replace_queryarg +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file_no_replace_same_link +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file_redundant +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file_replace - t... +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file_replace_only_files +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file_replace_only_files_conflict +FAILED allmydata/test/web/test_web.py::Web::test_POST_rename_file_to_slash_fail +FAILED allmydata/test/web/test_web.py::Web::test_POST_set_children - twisted.... +FAILED allmydata/test/web/test_web.py::Web::test_POST_set_children_with_hyphen +FAILED allmydata/test/web/test_web.py::Web::test_POST_unlink - twisted.web._n... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload - twisted.web._n... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_bad_format - twi... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_bad_format_unlinked +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_format - twisted... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_format_unlinked +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_keypair - twiste... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_mutable - twiste... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_mutable_toobig +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_named - twisted.... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_named_badfilename +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_no_link - twiste... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_no_link_mutable +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_no_link_mutable_toobig +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_no_link_whendone +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_no_link_whendone_results +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_no_replace_field +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_no_replace_ok - ... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_no_replace_queryarg +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_replace - twiste... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_unicode - twiste... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_unicode_named - ... +FAILED allmydata/test/web/test_web.py::Web::test_POST_upload_whendone - twist... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_DIRURL_uri - twisted.web... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_DIRURL_uri_noreplace - t... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_FILE_URI_mdmf - twisted.... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_FILE_URI_mdmf_extensions +FAILED allmydata/test/web/test_web.py::Web::test_PUT_FILE_URI_mdmf_readonly +FAILED allmydata/test/web/test_web.py::Web::test_PUT_FILE_URI_sdmf_readonly +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL - twisted.web... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_bad_format - ... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_bad_t - twist... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_blocked - twi... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_mdmf - twiste... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_mkdirs - twis... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_mutable - twi... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_mutable_toobig +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_no_replace - ... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_not_mutable +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_range_bad - t... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_replace - twi... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_sdmf - twiste... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_unlinked_bad_format +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_unlinked_mdmf +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_unlinked_sdmf +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_uri - twisted... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_uri_no_replace +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_uri_replace +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_uri_unknown_bad +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_uri_unknown_imm_good +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILEURL_uri_unknown_ro_good +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILE_URI - twisted.we... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILE_URI_mutable - tw... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_NEWFILE_URI_not_mutable +FAILED allmydata/test/web/test_web.py::Web::test_PUT_overwrite_only_files - t... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_update_at_invalid_offset +FAILED allmydata/test/web/test_web.py::Web::test_PUT_update_at_offset - twist... +FAILED allmydata/test/web/test_web.py::Web::test_PUT_update_at_offset_immutable +FAILED allmydata/test/web/test_web.py::Web::test_incident - twisted.web._newc... +FAILED allmydata/test/web/test_web.py::Web::test_static - Failed: NOTE: Incom... +ERROR allmydata/test/test_system.py::HTTPSystemTest::test_mutable_mdmf - Fail... +ERROR allmydata/test/test_system.py::HTTPSystemTest::test_mutable_sdmf - Fail... +ERROR allmydata/test/test_system.py::HTTPSystemTest::test_upload_and_download_random_key +ERROR allmydata/test/test_system.py::HTTPConnections::test_rref - Failed: NOT... +ERROR allmydata/test/web/test_web.py::Web::test_CSS_FILE - Failed: NOTE: Inco... +ERROR allmydata/test/web/test_web.py::Web::test_static - Failed: NOTE: Incomp... += 154 failed, 1687 passed, 5 skipped, 1 deselected, 17207 warnings, 6 errors in 11430.83s (3:10:30) = +E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/tahoe-lafs-1.20.0/.pybuild/cpython3_3.13_tahoe-lafs/build; python3.13 -m pytest -k 'not testing_tub' +dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 +make: *** [debian/rules:9: binary] Error 25 +dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 I: copying local configuration +E: Failed autobuilding of package +I: user script /srv/workspace/pbuilder/1168310/tmp/hooks/C01_cleanup starting +debug output: disk usage on i-capture-the-hostname at Tue Apr 15 17:44:00 UTC 2025 +Filesystem Size Used Avail Use% Mounted on +tmpfs 40G 0 40G 0% /dev/shm + +I: user script /srv/workspace/pbuilder/1168310/tmp/hooks/C01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/534803 and its subdirectories -I: Current time: Mon May 18 08:42:48 -12 2026 -I: pbuilder-time-stamp: 1779136968 +I: removing directory /srv/workspace/pbuilder/1168310 and its subdirectories