Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-116622: Add Android test script #121595

Merged
merged 40 commits into from
Aug 16, 2024
Merged

Conversation

mhsmith
Copy link
Member

@mhsmith mhsmith commented Jul 10, 2024

This PR builds on #117878 by adding an android.py test command, which can be used to run the Android testbed either in a buildbot or interactively during development.

This initial version uses two threads: one to run Gradle and one to run adb logcat. But it has a number of bugs around interleaved output and unclean shutdowns. So I'm currently refactoring it to use asyncio instead.

@freakboy3742: FYI. I'll request a review after I've done the refactor.

@mhsmith mhsmith requested a review from freakboy3742 July 23, 2024 23:58
@mhsmith mhsmith marked this pull request as ready for review July 24, 2024 00:06
@mhsmith
Copy link
Member Author

mhsmith commented Jul 24, 2024

@freakboy3742: Please review, and test that it works on your own machine. Instructions are in README.md.

Some of the actual tests are currently failing, but I'll deal with that in a separate PR.

Copy link
Contributor

@freakboy3742 freakboy3742 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly makes sense; and once I got it working, it did exactly what it said it would.

A couple of quirks I hit working through these instructions:

  • The docs make no mention of JAVA_HOME; I got an error until I set that as well. I didn't need to have java on the path as the instructions suggest.
  • I can see there's an earlier reference to building x86_64, but I wasn't expecting that as a dependency for testing - especially in terms of maintaining a fast testing cycle. Ideally, the test target should only build the current architecture by default.
  • I had a few difficulties getting the test suite to run. On my first attempts, with both the --managed and --connected options, I got the following in the console:
...
> Task :app:createDebugAndroidTestApkListingFileRedirect UP-TO-DATE
> Task :app:targetSdkSetup
> Task :app:targetSdkDebugAndroidTest
Serial: emulator-5556
Boot completed

but then no further output for 5 minutes. From some debugging, it looks like it was getting stuck interrogating for a UID of the test package; it's getting stuck in the loop polling adb shell pm. It might be worth adding a safety catch to this loop so that it will actually stop (eventually) if something goes wrong.

  • I'm not sure if the delay was due to a weird state in my emulator (It was behaving really weird, so I can't rule that out), or due to a "first run" delay with Gradle. I know from the Briefcase experience that the first Android project run can take ~10 mins to download the emulator images; and the way that the wrapper script is eating console output means even the (woefully inadequate) status bars that Gradle provides aren't visible.
  • However, after a reboot, the test suite started fine with --connected with the Briefcase default emulator. However - it got to 127/478, and then crashed with an OOM error. I guess there's a need for guidance on what the minimum emulator specification is.
  • The --managed option was successful; it created an emulator, and started it without any problems; 4 test failures in the overall suite (test_android test_capi test_pathlib test_posixpath), but not for reasons that seem to be related to the runner itself.

I've dropped a couple of other comments inline.

In summary: most of the issues I'm seeing can be addressed with documentation, or a little more verbosity in the test runner script (or both).

One other minor style inconsistency - there's a couple of files with no trailing newline; they all seem to be Java-ecosystem files.

Android/README.md Show resolved Hide resolved
Android/README.md Outdated Show resolved Hide resolved
Android/android.py Outdated Show resolved Hide resolved
Android/android.py Outdated Show resolved Hide resolved
Android/android.py Show resolved Hide resolved
Android/README.md Show resolved Hide resolved
Android/README.md Outdated Show resolved Hide resolved
@bedevere-app
Copy link

bedevere-app bot commented Jul 24, 2024

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

@mhsmith
Copy link
Member Author

mhsmith commented Aug 8, 2024

The docs make no mention of JAVA_HOME; I got an error until I set that as well. I didn't need to have java on the path as the instructions suggest.

I think either of them will work; I've updated the README to say that.

I can see there's an earlier reference to building x86_64, but I wasn't expecting that as a dependency for testing - especially in terms of maintaining a fast testing cycle. Ideally, the test target should only build the current architecture by default.

Good point – this has since been fixed in #122487.

On my first attempts, with both the --managed and --connected options, I got the following in the console:

...
> Task :app:createDebugAndroidTestApkListingFileRedirect UP-TO-DATE
> Task :app:targetSdkSetup
> Task :app:targetSdkDebugAndroidTest
Serial: emulator-5556
Boot completed

but then no further output for 5 minutes.

From the name of the task, this must have been --managed mode, which is strange, because by the time the test script discovers the emulator serial, most if not all of the first-run delay should already have finished. So I'm not sure what happened here, but I'll add a timeout and improve the logging to make it clearer what it's waiting for.

after a reboot, the test suite started fine with --connected with the Briefcase default emulator. However - it got to 127/478, and then crashed with an OOM error. I guess there's a need for guidance on what the minimum emulator specification is.

I wasn't able to reproduce this. What did the error look like? And are you sure you're using the default emulator from the current version of Briefcase? I created one with the Briefcase main branch, and it shows the following settings in Android Studio:

Screenshot 2024-08-08 at 22 37 51

One other minor style inconsistency - there's a couple of files with no trailing newline; they all seem to be Java-ecosystem files.

Fixed.

@mhsmith
Copy link
Member Author

mhsmith commented Aug 8, 2024

I know from the Briefcase experience that the first Android project run can take ~10 mins to download the emulator images; and the way that the wrapper script is eating console output means even the (woefully inadequate) status bars that Gradle provides aren't visible.

I've now added a build-testbed command. Although this isn't strictly necessary because the test command will build the app automatically, it's useful to have it as a separate step in the buildbot so we have a record of the build log, which the test command hides by default. It also allows the buildbot to apply separate timeouts to the build and test steps, since the build may take much longer than normal if Gradle has to download new versions of libraries and tools.

@freakboy3742
Copy link
Contributor

I haven't been able to reproduce the OOM issue I saw last time; I think I'll have to chalk it up to the emulator being in an odd state (which it was, AFAICT).

One UX note - When I ran this time with a warm, connected emulator, there was a delay of several minutes in the test startup. The delay was after the Boot completed log; unfortunately I didn't record whether it was before or after the log reporting the process UID. On this first startup, I needed to install the platform tools, and the test step downloaded gradle. I only noticed because I started the test, was waiting for the test to start, didn't see that after 30 seconds or so, and walked away from my desk; when I came back, the test suite had started.

On second startup, the delay was only a couple of seconds - so I'm guessing the delay was gradle downloading something with no feedback to the user. It's not clear to me what might be downloaded at that point (or what point is triggering the download), but another "this might take a few minutes" log message might be called for.

Managed emulators are another matter:

(venv3.13) rkm@eunectes Android % ./android.py test --managed maxVersion     
Gradle exit status 1
(venv3.13) rkm@eunectes Android % ./android.py test --managed maxVersion
Gradle exit status 1
(venv3.13) rkm@eunectes Android % ./android.py test --managed minVersion   
Gradle exit status 1

I get no error messages, but no test suite either.

@mhsmith
Copy link
Member Author

mhsmith commented Aug 13, 2024

Aside from the HACL issue above, the script is now working on macOS ARM64, Windows x86_64 and Linux x86_64. As usual, Linux was the most awkward, so I'll leave a few notes here for future reference (on Debian Bookworm):

  • With --managed maxVersion, Gradle doesn't pass through any error messages when the emulator fails to start, it just says "The emulator failed to open the managed device to generate the snapshot. This is because the emulator closed unexpectedly (1)"
  • By trying to start an emulator from Briefcase, I found the initial problem was I needed to be in the kvm group to get access to virtualization.
  • After that, I found it was necessary to run the emulator within Xvfb, even though it's supposed to be headless. But xvfb-run didn't work for some reason – the emulator reported it was trying to connect to display number 10 even though Xvfb uses number 99.
  • So I did the same as the Toga CI and started Xvfb in the background, followed by starting the emulator with a DISPLAY environment variable. I needed to restart the Gradle daemon for it to pick up changes in this variable.
  • After that, I was able to run the test suite with -uall at a reasonable speed (32 minutes, compared to 13 on my Mac).

@mhsmith
Copy link
Member Author

mhsmith commented Aug 15, 2024

I did some experimentation with --slow-ci, which is used by the other buildbots, though we won't be able to use it on 3.13 until #123010 is merged. This enables several other options:

  • To support the --timeout option, the redirected stdout and stderr needed a fileno method. I've implemented that in this PR.

  • The --randomize option revealed some interference between tests when not run in alphabetical order (#123036). This would never be caught by the other buildbots, because they rerun failed tests in a separate process, and if they pass, the run will be considered successful. Which kind of defeats the whole point of randomization.

@mhsmith
Copy link
Member Author

mhsmith commented Aug 15, 2024

In one particular random order I also hit the OOM error you mentioned above. Increasing the emulator RAM from 2 GB to 4 GB was enough to allow it to pass, so I've added a note about this to the README.

This occurred on commit 7a3d674, with arguments --slow-ci --single-process --randseed 736632767. The crashing test was usually test_interpreters, test_email or test_compile, but running only those 3 is not enough to break it.

Log
== CPython 3.14.0a0 (heads/hacl-explicit-bzero-dirty:c9033813271, Aug 14 2024, 22:32:01) [Clang 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d1
== Android-14-aarch64-64bit little-endian
== Python build: release shared
== cwd: /data/data/org.python.testbed/cache/test_python_worker_2022æ
== CPU count: 2
== encodings: locale=utf-8 FS=utf-8
== resources: all

Using random seed: 736632767
0:00:00 Run 479 tests sequentially in a single process (timeout: 20 min)
0:00:00 [  1/479] test_argparse
W/.python.testbed: type=1400 audit(0.0:6586): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6587): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6588): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6589): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6590): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
0:00:00 [  2/479] test_regrtest
test_regrtest skipped -- test module requires subprocess
0:00:00 [  3/479] test_textwrap -- test_regrtest skipped
0:00:00 [  4/479] test_peg_generator
0:00:00 [  5/479] test_long
0:00:01 [  6/479] test.test_asyncio.test_buffered_proto
0:00:01 [  7/479] test_fileinput
0:00:01 [  8/479] test_tkinter
test_tkinter skipped -- No module named '_tkinter'
0:00:01 [  9/479] test__locale -- test_tkinter skipped
0:00:01 [ 10/479] test_ast
W/.python.testbed: type=1400 audit(0.0:6984): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_testcapi.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312740 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:00:05 [ 11/479] test_profile
0:00:05 [ 12/479] test.test_asyncio.test_context
W/.python.testbed: type=1400 audit(0.0:6985): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_decimal.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312715 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:00:05 [ 13/479] test_syslog
W/.python.testbed: type=1400 audit(0.0:6986): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/syslog.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312760 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
I/main.py : test message from python test_syslog
I/main.py : foo
I/python  : test message from python test_syslog
E/python  : test error from python test_syslog
I/main.py : test message from python test_syslog
E/main.py : test error from python test_syslog
0:00:05 [ 14/479] test_bool
0:00:05 [ 15/479] test_tabnanny
0:00:05 [ 16/479] test.test_asyncio.test_sendfile
W/.python.testbed: type=1400 audit(0.0:6987): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_datetime.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312714 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6988): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_queue.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312729 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:00:07 [ 17/479] test_netrc
0:00:07 [ 18/479] test_poll
0:00:08 [ 19/479] test_tempfile
0:00:08 [ 20/479] test_fork1
test_fork1 skipped -- test module requires working os.fork
0:00:08 [ 21/479] test_queue -- test_fork1 skipped

maxVersion Tests 0/1 completed. (0 skipped) (0 failed)
0:00:17 [ 22/479] test_syntax
0:00:17 [ 23/479] test_exception_variations
0:00:17 [ 24/479] test_tomllib
0:00:17 [ 25/479] test_urllibnet
W/.python.testbed: type=1400 audit(0.0:6989): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_hashlib.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312717 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6990): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_blake2.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312702 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:00:19 [ 26/479] test_genexps
0:00:19 [ 27/479] test_free_threading
test_free_threading skipped -- GIL enabled
0:00:19 [ 28/479] test_bigaddrspace -- test_free_threading skipped
0:00:19 [ 29/479] test.test_asyncio.test_staggered
0:00:19 [ 30/479] test_binascii
0:00:19 [ 31/479] test_flufl
0:00:19 [ 32/479] test_string
0:00:19 [ 33/479] test_traceback
0:00:20 [ 34/479] test_poplib
0:00:27 [ 35/479] test_socketserver
0:00:28 [ 36/479] test.test_asyncio.test_unix_events
0:00:28 [ 37/479] test_codecmaps_jp
        fetching http://www.pythontest.net/unicode/CP932.TXT ...
W/.python.testbed: type=1400 audit(0.0:6991): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_codecs_jp.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312707 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6992): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_multibytecodec.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312726 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
        fetching http://www.pythontest.net/unicode/EUC-JISX0213.TXT ...
        fetching http://www.pythontest.net/unicode/EUC-JP.TXT ...
        fetching http://www.pythontest.net/unicode/SHIFTJIS.TXT ...
        fetching http://www.pythontest.net/unicode/SHIFT_JISX0213.TXT ...
0:00:30 [ 38/479] test_cppext
0:00:30 [ 39/479] test_httpservers
0:00:32 [ 40/479] test_cmath
W/.python.testbed: type=1400 audit(0.0:6993): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/cmath.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312753 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:00:32 [ 41/479] test_linecache
0:00:32 [ 42/479] test_math
W/.python.testbed: type=1400 audit(0.0:6994): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_statistics.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312737 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:00:55 [ 43/479] test_zlib
0:00:55 [ 44/479] test_setcomps
0:00:55 [ 45/479] test_dictcomps
0:00:55 [ 46/479] test_genericpath
W/.python.testbed: type=1400 audit(0.0:6995): avc:  denied  { link } for  name=40746573745F323032325F746D70C3A6 dev="dm-37" ino=321632 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6996): avc:  denied  { link } for  name=40746573745F323032325F746D70C3A631 dev="dm-37" ino=321632 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
0:00:55 [ 47/479] test_tarfile
W/.python.testbed: type=1400 audit(0.0:6997): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=321641 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6998): avc:  denied  { link } for  name="link_target" dev="dm-37" ino=321643 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:6999): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=321642 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7000): avc:  denied  { link } for  name="link_target" dev="dm-37" ino=321643 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7001): avc:  denied  { link } for  name="foo" dev="dm-37" ino=321642 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7002): avc:  denied  { link } for  name="foo" dev="dm-37" ino=321642 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7003): avc:  denied  { link } for  name="foo" dev="dm-37" ino=321642 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/audit   : audit_lost=6958 audit_rate_limit=5 audit_backlog_limit=64
E/audit   : rate limit exceeded
W/.python.testbed: type=1400 audit(0.0:7027): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=328008 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7028): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=328060 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7029): avc:  denied  { link } for  name="longname" dev="dm-37" ino=328188 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7030): avc:  denied  { link } for  name="longname" dev="dm-37" ino=335910 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7031): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=328008 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/audit   : audit_lost=6988 audit_rate_limit=5 audit_backlog_limit=64
E/audit   : rate limit exceeded
W/.python.testbed: type=1400 audit(0.0:7079): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=328019 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7080): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=328071 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7081): avc:  denied  { link } for  name="longname" dev="dm-37" ino=328200 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7082): avc:  denied  { link } for  name="longname" dev="dm-37" ino=335913 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7083): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=328019 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/audit   : audit_lost=7031 audit_rate_limit=5 audit_backlog_limit=64
E/audit   : rate limit exceeded
W/.python.testbed: type=1400 audit(0.0:7111): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=328019 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7112): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=328071 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7113): avc:  denied  { link } for  name="longname" dev="dm-37" ino=328200 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7114): avc:  denied  { link } for  name="longname" dev="dm-37" ino=335913 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7115): avc:  denied  { link } for  name="regtype" dev="dm-37" ino=328019 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/audit   : audit_lost=7058 audit_rate_limit=5 audit_backlog_limit=64
E/audit   : rate limit exceeded
0:01:00 [ 48/479] test_zipimport_support
0:01:00 [ 49/479] test_pstats
0:01:00 [ 50/479] test_mimetypes
0:01:00 [ 51/479] test_faulthandler
test_faulthandler skipped -- test module requires subprocess
0:01:00 [ 52/479] test_android -- test_faulthandler skipped
I/python.test: test.test_android.TestAndroidOutput.test_bytes 1723673594.2586422
a
Hello
Hello world


olé
中文
😀
\xc0\x80
a\xc0\x80
\xc0\x80b
a\xc0\x80b
\xff
a\xff
\xffb
a\xffb
x
a

b
c

d
e
xx
f

g

hello
hello
world

bytearray
memoryview
mmrve
\xc0\x80\xc0\x80\xc0\x80\xfe\xff\xff\xff
a
Hello
Hello world


olé
中文
😀
\xc0\x80
a\xc0\x80
\xc0\x80b
a\xc0\x80b
\xff
a\xff
\xffb
a\xffb
x
a

b
c

d
e
xx
f

g

hello
hello
world

bytearray
memoryview
mmrve
\xc0\x80\xc0\x80\xc0\x80\xfe\xff\xff\xff
I/python.test: test.test_android.TestAndroidOutput.test_rate_limit 1723673594.3056104
D/python.rate_limit: Line 000 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 001 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 002 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 003 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 004 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 005 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 006 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 007 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 008 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 009 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 010 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 011 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 012 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 013 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 014 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 015 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 016 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 017 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 018 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 019 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 020 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 021 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 022 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 023 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 024 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 025 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 026 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 027 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 028 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 029 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 030 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 031 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 032 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 033 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 034 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 035 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 036 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 037 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 038 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
D/python.rate_limit: Line 039 ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
I/python.test: test.test_android.TestAndroidOutput.test_str 1723673594.7390683
a
Hello
Hello world


olé
中文
😀
\ud800\udc00
\udc80
\xc0\x80
a\xc0\x80
\xc0\x80b
a\xc0\x80b

x
a

b
c

d
exxf

g

x

a

b
c

d
e
xx
f

g

hello
hello
world

before form feed
                after form feed
before line separatorafter line separator
custom
hello
helloworld
foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob
arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
a
Hello
Hello world


olé
中文
😀
\ud800\udc00
\udc80
\xc0\x80
a\xc0\x80
\xc0\x80b
a\xc0\x80b

x
a

b
c

d
exxf

g

x

a

b
c

d
e
xx
f

g

hello
hello
world

before form feed
                after form feed
before line separatorafter line separator
custom
hello
helloworld
foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob
arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
0:01:01 [ 53/479] test_ioctl
W/.python.testbed: type=1400 audit(0.0:7146): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/termios.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312761 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
test_ioctl skipped -- Unable to open /dev/tty
0:01:01 [ 54/479] test.test_asyncio.test_ssl -- test_ioctl skipped
0:01:14 [ 55/479] test_dbm_gnu
test_dbm_gnu skipped -- No module named '_gdbm'
0:01:14 [ 56/479] test_type_params -- test_dbm_gnu skipped
0:01:14 [ 57/479] test_mailbox
W/.python.testbed: type=1400 audit(0.0:7147): avc:  denied  { link } for  name="673608.1.myhostname.mydomain" dev="dm-37" ino=327690 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7148): avc:  denied  { link } for  name="673608.2.myhostname.mydomain" dev="dm-37" ino=327692 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7149): avc:  denied  { link } for  name="673608.1.myhostname.mydomain" dev="dm-37" ino=327690 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7150): avc:  denied  { link } for  name="673608.1.myhostname.mydomain" dev="dm-37" ino=327690 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7151): avc:  denied  { link } for  name=40746573745F323032325F746D70C3A62E6C6F636B2E313732333637333630382E6C6F63616C686F73742E32303232 dev="dm-37" ino=321672 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7152): avc:  denied  { link } for  name=".mh_sequences.lock.1723673608.localhost.2022" dev="dm-37" ino=327689 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7153): avc:  denied  { link } for  name=".mh_sequences.lock.1723673608.localhost.2022" dev="dm-37" ino=327688 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7154): avc:  denied  { link } for  name=".mh_sequences.lock.1723673608.localhost.2022" dev="dm-37" ino=327690 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7155): avc:  denied  { link } for  name="4" dev="dm-37" ino=327691 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/audit   : audit_lost=7085 audit_rate_limit=5 audit_backlog_limit=64
E/audit   : rate limit exceeded
0:01:15 [ 58/479] test_metaclass
0:01:16 [ 59/479] test_set
0:01:18 [ 60/479] test_unicode_identifiers
0:01:18 [ 61/479] test_cext
0:01:18 [ 62/479] test_collections
0:01:18 [ 63/479] test.test_asyncio.test_selector_events
0:01:18 [ 64/479] test_openpty
test_openpty skipped -- os.openpty() not available.
0:01:18 [ 65/479] test_script_helper -- test_openpty skipped
0:01:18 [ 66/479] test_importlib
W/.python.testbed: type=1400 audit(0.0:7359): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_testsinglephase.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312748 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7360): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_testmultiphase.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312747 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7361): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_interpreters.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312721 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7362): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_csv.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312711 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:01:21 [ 67/479] test__colorize
0:01:21 [ 68/479] test_dtrace
test_dtrace skipped -- test module requires subprocess
0:01:21 [ 69/479] test_grp -- test_dtrace skipped
test_grp skipped -- No module named 'grp'
0:01:21 [ 70/479] test_genericclass -- test_grp skipped
0:01:21 [ 71/479] test_pdb
0:01:21 [ 72/479] test_typing
0:01:21 [ 73/479] test_array
0:01:22 [ 74/479] test_decorators
0:01:22 [ 75/479] test_pyexpat
0:01:23 [ 76/479] test_pkg
0:01:23 [ 77/479] test_defaultdict
0:01:23 [ 78/479] test_finalization
0:01:23 [ 79/479] test_html
0:01:23 [ 80/479] test_bz2
0:01:24 [ 81/479] test__osx_support
0:01:24 [ 82/479] test_contains
0:01:24 [ 83/479] test_getpath
0:01:24 [ 84/479] test_super
0:01:24 [ 85/479] test_hashlib
W/.python.testbed: type=1400 audit(0.0:7363): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_md5.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312725 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7364): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_sha1.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312731 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7365): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_sha2.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312732 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7366): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_sha3.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312733 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
        fetching http://www.pythontest.net/hashlib/blake2b.txt ...
        fetching http://www.pythontest.net/hashlib/blake2s.txt ...
        fetching http://www.pythontest.net/hashlib/sha3_224.txt ...
        fetching http://www.pythontest.net/hashlib/sha3_256.txt ...
        fetching http://www.pythontest.net/hashlib/sha3_384.txt ...
        fetching http://www.pythontest.net/hashlib/sha3_512.txt ...
        fetching http://www.pythontest.net/hashlib/shake_128.txt ...
        fetching http://www.pythontest.net/hashlib/shake_256.txt ...
0:02:14 [ 86/479] test_exceptions -- test_hashlib passed in 50.0 sec
0:02:15 [ 87/479] test_perf_profiler
test_perf_profiler skipped -- test module requires subprocess
0:02:15 [ 88/479] test_peepholer -- test_perf_profiler skipped
0:02:16 [ 89/479] test_iterlen
0:02:16 [ 90/479] test_runpy
0:02:16 [ 91/479] test_glob
0:02:16 [ 92/479] test_interpreters
W/.python.testbed: type=1400 audit(0.0:7367): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_interpchannels.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312719 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7368): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_interpqueues.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312720 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:02:23 [ 93/479] test_idle
test_idle skipped -- No module named '_tkinter'
0:02:23 [ 94/479] test_math_property -- test_idle skipped
0:02:23 [ 95/479] test_email
W/.python.testbed: type=1400 audit(0.0:7369): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_codecs_iso2022.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312706 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7370): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_codecs_cn.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312704 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:02:29 [ 96/479] test_urllib2net
0:02:37 [ 97/479] test_sys
0:02:38 [ 98/479] test.test_asyncio.test_queues
0:02:38 [ 99/479] test_codecmaps_cn
        fetching http://www.pythontest.net/unicode/gb-18030-2000.xml ...
        fetching http://www.pythontest.net/unicode/EUC-CN.TXT ...
        fetching http://www.pythontest.net/unicode/CP936.TXT ...
0:02:40 [100/479] test_annotationlib
0:02:40 [101/479] test_copyreg
W/.python.testbed: type=1400 audit(0.0:7371): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_testbuffer.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312739 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:02:40 [102/479] test_resource
0:02:40 [103/479] test.test_asyncio.test_waitfor
0:02:41 [104/479] test_threadsignals
0:02:46 [105/479] test_subprocess
test_subprocess skipped -- test module requires subprocess
0:02:46 [106/479] test_pty -- test_subprocess skipped
test_pty skipped -- pty is not available on this platform
0:02:47 [107/479] test_codecencodings_cn -- test_pty skipped
0:02:47 [108/479] test_coroutines
0:02:47 [109/479] test_fileio
0:02:47 [110/479] test_sched
0:02:48 [111/479] test_wave
0:02:48 [112/479] test.test_multiprocessing_spawn.test_threads
test.test_multiprocessing_spawn.test_threads skipped -- No module named '_multiprocessing'
0:02:48 [113/479] test_filecmp -- test.test_multiprocessing_spawn.test_threads skipped
W/.python.testbed: type=1400 audit(0.0:7372): avc:  denied  { relabelfrom } for  name="file" dev="dm-37" ino=327874 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7373): avc:  denied  { relabelfrom } for  name="file" dev="dm-37" ino=327877 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7374): avc:  denied  { relabelfrom } for  name="file" dev="dm-37" ino=327877 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7375): avc:  denied  { relabelfrom } for  name="file" dev="dm-37" ino=327880 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7376): avc:  denied  { relabelfrom } for  name="file" dev="dm-37" ino=327883 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7377): avc:  denied  { relabelfrom } for  name="file" dev="dm-37" ino=327874 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7378): avc:  denied  { relabelfrom } for  name="file" dev="dm-37" ino=327877 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/audit   : audit_lost=7288 audit_rate_limit=5 audit_backlog_limit=64
E/audit   : rate limit exceeded
0:02:48 [114/479] test_readline
test_readline skipped -- No module named 'readline'
0:02:48 [115/479] test_os -- test_readline skipped
0:03:01 [116/479] test_struct
0:03:01 [117/479] test.test_multiprocessing_spawn.test_manager
test.test_multiprocessing_spawn.test_manager skipped -- No module named '_multiprocessing'
0:03:01 [118/479] test_winsound -- test.test_multiprocessing_spawn.test_manager skipped
test_winsound skipped -- No module named 'winsound'
0:03:01 [119/479] test_timeout -- test_winsound skipped
0:03:11 [120/479] test_codeccallbacks
0:03:11 [121/479] test_dbm_ndbm
test_dbm_ndbm skipped -- No module named '_dbm'
0:03:11 [122/479] test_yield_from -- test_dbm_ndbm skipped
0:03:11 [123/479] test_buffer
0:03:14 [124/479] test.test_multiprocessing_forkserver.test_threads
test.test_multiprocessing_forkserver.test_threads skipped -- No module named '_multiprocessing'
0:03:14 [125/479] test_strptime -- test.test_multiprocessing_forkserver.test_threads skipped
0:03:14 [126/479] test_doctest
0:03:14 [127/479] test_cmd
0:03:14 [128/479] test_curses
test_curses skipped -- No module named '_curses'
0:03:14 [129/479] test_urlparse -- test_curses skipped
0:03:14 [130/479] test_pwd
0:03:15 [131/479] test_cprofile
0:03:15 [132/479] test_userdict
0:03:15 [133/479] test.test_concurrent_futures.test_init
0:03:15 [134/479] test_multibytecodec
W/.python.testbed: type=1400 audit(0.0:7454): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_codecs_kr.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312708 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7455): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_codecs_hk.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312705 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7456): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_codecs_tw.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312709 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:03:16 [135/479] test_type_cache
0:03:16 [136/479] test_ntpath
W/.python.testbed: type=1400 audit(0.0:7457): avc:  denied  { link } for  name=40746573745F323032325F746D70C3A6 dev="dm-37" ino=321830 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7458): avc:  denied  { link } for  name=40746573745F323032325F746D70C3A631 dev="dm-37" ino=321830 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
0:03:16 [137/479] test.test_asyncio.test_server
0:03:16 [138/479] test_string_literals
0:03:16 [139/479] test_base64
0:03:16 [140/479] test.test_asyncio.test_eager_task_factory
0:03:17 [141/479] test.test_future_stmt.test_future_flags
0:03:17 [142/479] test_xml_dom_minicompat
0:03:17 [143/479] test_bufio
0:03:17 [144/479] test_httplib
0:03:19 [145/479] test_codecencodings_jp
0:03:19 [146/479] test_selectors
0:03:34 [147/479] test_dataclasses
0:03:34 [148/479] test.test_gdb.test_cfunction_full
test.test_gdb.test_cfunction_full skipped -- test_gdb only works on source builds at the moment.
0:03:34 [149/479] test_threadedtempfile -- test.test_gdb.test_cfunction_full skipped
0:03:35 [150/479] test__interpchannels
0:03:36 [151/479] test_compiler_codegen
0:03:36 [152/479] test_ssl
0:03:54 [153/479] test.test_concurrent_futures.test_deadlock
0:03:55 [154/479] test.test_gdb.test_misc
test.test_gdb.test_misc skipped -- test_gdb only works on source builds at the moment.
0:03:55 [155/479] test_positional_only_arg -- test.test_gdb.test_misc skipped
0:03:55 [156/479] test_epoll
0:03:55 [157/479] test_weakref
0:04:01 [158/479] test.test_concurrent_futures.test_as_completed
0:04:04 [159/479] test.test_asyncio.test_proactor_events
0:04:05 [160/479] test_launcher
test_launcher skipped -- test only applies to Windows
0:04:05 [161/479] test_with -- test_launcher skipped
0:04:05 [162/479] test_external_inspection
W/.python.testbed: type=1400 audit(0.0:7459): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_testexternalinspection.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312743 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:04:05 [163/479] test_pow
0:04:05 [164/479] test_io
0:04:35 [165/479] test_global
0:04:35 [166/479] test_binop
0:04:35 [167/479] test_dbm_sqlite3
W/.python.testbed: type=1400 audit(0.0:7460): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_sqlite3.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312735 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:04:35 [168/479] test.test_asyncio.test_base_events
0:04:36 [169/479] test_type_annotations
0:04:36 [170/479] test_lzma
0:04:37 [171/479] test_compiler_assemble
0:04:37 [172/479] test_random
W/.python.testbed: type=1400 audit(0.0:7461): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7462): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7463): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7464): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7465): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7466): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7467): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7468): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/audit   : audit_lost=7363 audit_rate_limit=5 audit_backlog_limit=64
E/audit   : rate limit exceeded
0:04:37 [173/479] test__interpreters
0:04:38 [174/479] test_wsgiref
0:04:38 [175/479] test_enumerate
0:04:39 [176/479] test.test_asyncio.test_protocols
0:04:39 [177/479] test_osx_env
0:04:39 [178/479] test_pulldom
0:04:39 [179/479] test_dict
0:04:40 [180/479] test_configparser
0:04:40 [181/479] test_userlist
0:04:40 [182/479] test_univnewlines
0:04:40 [183/479] test_asdl_parser
test_asdl_parser skipped -- test irrelevant for an installed Python
0:04:40 [184/479] test_thread -- test_asdl_parser skipped
0:04:42 [185/479] test.test_asyncio.test_events
0:04:50 [186/479] test__opcode
0:04:50 [187/479] test_platform
0:04:51 [188/479] test_dynamic
0:04:51 [189/479] test_difflib
0:04:51 [190/479] test_codeop
0:04:51 [191/479] test.test_multiprocessing_spawn.test_processes
test.test_multiprocessing_spawn.test_processes skipped -- No module named '_multiprocessing'
0:04:51 [192/479] test.test_gdb.test_pretty_print -- test.test_multiprocessing_spawn.test_processes skipped
test.test_gdb.test_pretty_print skipped -- test_gdb only works on source builds at the moment.
0:04:51 [193/479] test_xmlrpc -- test.test_gdb.test_pretty_print skipped
0:05:19 [194/479] test_unicode_file
W/.python.testbed: type=1400 audit(0.0:7506): avc:  denied  { relabelfrom } for  name=40746573745F323032325F746D702DC3A0C3B2C998C581C49F2E6E6577 dev="dm-37" ino=321893 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7507): avc:  denied  { relabelfrom } for  name=40746573745F323032325F746D702DC3A0C3B2C998C581C49F2E6E6577 dev="dm-37" ino=321893 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7508): avc:  denied  { relabelfrom } for  name=40746573745F323032325F746D702DFF2E6E6577 dev="dm-37" ino=321893 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7509): avc:  denied  { relabelfrom } for  name=40746573745F323032325F746D702DFF2E6E6577 dev="dm-37" ino=321893 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
0:05:19 [195/479] test_str
0:05:20 [196/479] test.test_asyncio.test_taskgroups
0:05:27 [197/479] test_tuple
0:05:29 [198/479] test_tools
test_tools skipped -- test module requires subprocess
0:05:29 [199/479] test_unittest -- test_tools skipped
W/.python.testbed: type=1400 audit(0.0:7510): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7511): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7512): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7513): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7514): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7515): avc:  denied  { ioctl } for  path="pipe:[47914]" dev="pipefs" ino=47914 ioctlcmd=0x5413 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tclass=fifo_file permissive=0 app=org.python.testbed
W/audit   : audit_lost=7400 audit_rate_limit=5 audit_backlog_limit=64
E/audit   : rate limit exceeded
0:05:32 [200/479] test_turtle
test_turtle skipped -- No module named '_tkinter'
0:05:33 [201/479] test.test_multiprocessing_spawn.test_misc -- test_turtle skipped
test.test_multiprocessing_spawn.test_misc skipped -- No module named '_multiprocessing'
0:05:33 [202/479] test_ipaddress -- test.test_multiprocessing_spawn.test_misc skipped
0:05:33 [203/479] test_memoryview
0:05:33 [204/479] test_wait4
test_wait4 skipped -- requires working os.fork()
0:05:33 [205/479] test_repl -- test_wait4 skipped
test_repl skipped -- test module requires subprocess
0:05:34 [206/479] test_sys_setprofile -- test_repl skipped
0:05:34 [207/479] test_audit
0:05:34 [208/479] test_wmi
test_wmi skipped -- No module named '_wmi'
0:05:34 [209/479] test_ordered_dict -- test_wmi skipped
0:05:35 [210/479] test_numeric_tower
0:05:35 [211/479] test_pathlib
W/.python.testbed: type=1400 audit(0.0:7898): avc:  denied  { relabelfrom } for  name="copyA" dev="dm-37" ino=327981 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=dir permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7899): avc:  denied  { relabelfrom } for  name="novel.txt" dev="dm-37" ino=327982 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7900): avc:  denied  { relabelfrom } for  name="fileC" dev="dm-37" ino=327983 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7901): avc:  denied  { relabelfrom } for  name="dirD" dev="dm-37" ino=327984 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=dir permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7902): avc:  denied  { relabelfrom } for  name="fileD" dev="dm-37" ino=327985 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/audit   : audit_lost=7782 audit_rate_limit=5 audit_backlog_limit=64
E/audit   : rate limit exceeded
0:05:37 [212/479] test_descrtut
0:05:37 [213/479] test_ctypes
W/.python.testbed: type=1400 audit(0.0:7919): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_ctypes_test.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312713 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7920): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_ctypes.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312712 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:05:38 [214/479] test.test_concurrent_futures.test_wait
0:05:49 [215/479] test_exception_group
0:05:49 [216/479] test_http_cookiejar
0:05:50 [217/479] test_fstring
0:05:56 [218/479] test_gc
0:05:59 [219/479] test_largefile
0:05:59 [220/479] test_msvcrt
test_msvcrt skipped -- windows related tests
0:05:59 [221/479] test_optimizer -- test_msvcrt skipped
0:05:59 [222/479] test_urllib2_localnet
0:06:02 [223/479] test_list
0:06:02 [224/479] test_sundry
0:06:02 [225/479] test.test_asyncio.test_futures2
0:06:02 [226/479] test_venv
test_venv skipped -- venv is not available on this platform
0:06:02 [227/479] test_sax -- test_venv skipped
0:06:02 [228/479] test.test_asyncio.test_transports
0:06:02 [229/479] test_capi
W/.python.testbed: type=1400 audit(0.0:7921): avc:  granted  { execute } for  path="/data/data/org.python.testbed/files/python/lib/python3.14/lib-dynload/_testlimitedcapi.cpython-314-aarch64-linux-android.so" dev="dm-37" ino=312746 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file app=org.python.testbed
0:06:17 [230/479] test.test_asyncio.test_futures
0:06:21 [231/479] test_type_aliases
0:06:21 [232/479] test.test_asyncio.test_windows_utils
test.test_asyncio.test_windows_utils skipped -- Windows only
0:06:21 [233/479] test_minidom -- test.test_asyncio.test_windows_utils skipped
0:06:21 [234/479] test_abstract_numbers
0:06:21 [235/479] test_context
0:06:22 [236/479] test_colorsys
0:06:22 [237/479] test_bdb
0:06:23 [238/479] test_unary
0:06:23 [239/479] test_contextlib_async
0:06:23 [240/479] test_posixpath
W/.python.testbed: type=1400 audit(0.0:7922): avc:  denied  { link } for  name=40746573745F323032325F746D70C3A6 dev="dm-37" ino=321986 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
W/.python.testbed: type=1400 audit(0.0:7923): avc:  denied  { link } for  name=40746573745F323032325F746D70C3A631 dev="dm-37" ino=321986 scontext=u:r:untrusted_app:s0:c108,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c108,c256,c512,c768 tclass=file permissive=0 app=org.python.testbed
0:06:23 [241/479] test_pyrepl
test_pyrepl skipped -- No module named '_curses'
0:06:23 [242/479] test_compile -- test_pyrepl skipped
I/scudo   : Stats: SizeClassAllocator64: 409M mapped (0M rss) in 1752666 allocations; remains 95865
I/scudo   :   00 (    64): mapped:   2816K popped:  361374 pushed:  342228 inuse:  19146 total:  41636 rss:      0K releases:      0 last released:      0K region: 0x7d70a67000 (0x7d70a5d000)
I/scudo   :   01 (    32): mapped:    512K popped:  141647 pushed:  136471 inuse:   5176 total:   8660 rss:      0K releases:      0 last released:      0K region: 0x7d40a66000 (0x7d40a5d000)
I/scudo   :   02 (    48): mapped:    768K popped:  125057 pushed:  113188 inuse:  11869 total:  13208 rss:      0K releases:      0 last released:      0K region: 0x7e50a68000 (0x7e50a5d000)
I/scudo   :   03 (    64): mapped:    512K popped:   25113 pushed:   20315 inuse:   4798 total:   4824 rss:      0K releases:      0 last released:      0K region: 0x7e80a61000 (0x7e80a5d000)
I/scudo   :   04 (    80): mapped:    256K popped:   14026 pushed:   11712 inuse:   2314 total:   3120 rss:      0K releases:      0 last released:      0K region: 0x7de0a65000 (0x7de0a5d000)
I/scudo   :   05 (    96): mapped:    256K popped:    4010 pushed:    3100 inuse:    910 total:   1248 rss:      0K releases:      0 last released:      0K region: 0x7d30a6b000 (0x7d30a5d000)
I/scudo   :   06 (   112): mapped:    256K popped:    2866 pushed:    2554 inuse:    312 total:    728 rss:      0K releases:      0 last released:      0K region: 0x7dc0a63000 (0x7dc0a5d000)
I/scudo   :   07 (   144): mapped:    256K popped:    7844 pushed:    6362 inuse:   1482 total:   1820 rss:      0K releases:      0 last released:      0K region: 0x7d50a68000 (0x7d50a5d000)
I/scudo   :   08 (   176): mapped:    512K popped:    5902 pushed:    4712 inuse:   1190 total:   1905 rss:      0K releases:      0 last released:      0K region: 0x7e30a5e000 (0x7e30a5d000)
I/scudo   :   09 (   192): mapped:    256K popped:     323 pushed:     180 inuse:    143 total:    208 rss:      0K releases:      0 last released:      0K region: 0x7d20a6d000 (0x7d20a5d000)
I/scudo   :   10 (   224): mapped:    768K popped:    4508 pushed:    2909 inuse:   1599 total:   2444 rss:      0K releases:      0 last released:      0K region: 0x7e60a63000 (0x7e60a5d000)
I/scudo   :   11 (   288): mapped:    512K popped:    2008 pushed:    1488 inuse:    520 total:    962 rss:      0K releases:     10 last released:     96K region: 0x7d60a61000 (0x7d60a5d000)
I/scudo   :   12 (   352): mapped:    256K popped:    2864 pushed:    2695 inuse:    169 total:    728 rss:      0K releases:     40 last released:    140K region: 0x7e10a66000 (0x7e10a5d000)
I/scudo   :   13 (   448): mapped:    256K popped:    4330 pushed:    3875 inuse:    455 total:    520 rss:      0K releases:     19 last released:      4K region: 0x7da0a5e000 (0x7da0a5d000)
I/scudo   :   14 (   592): mapped:   7168K popped:   64678 pushed:   62344 inuse:   2334 total:  12371 rss:      0K releases:    335 last released:    456K region: 0x7e70a68000 (0x7e70a5d000)
I/scudo   :   15 (   800): mapped:  30720K popped:  291593 pushed:  286526 inuse:   5067 total:  39146 rss:      0K releases:   1221 last released:      4K region: 0x7cf0a67000 (0x7cf0a5d000)
I/scudo   :   16 (  1104): mapped:  47360K popped:  251209 pushed:  246075 inuse:   5134 total:  43886 rss:      0K releases:   1174 last released:    124K region: 0x7d80a66000 (0x7d80a5d000)
I/scudo   :   17 (  1648): mapped:  26112K popped:   75053 pushed:   73696 inuse:   1357 total:  16145 rss:      0K releases:    794 last released:    672K region: 0x7ea0a5e000 (0x7ea0a5d000)
I/scudo   :   18 (  2096): mapped:   3584K popped:   17588 pushed:   17177 inuse:    411 total:   1673 rss:      0K releases:    404 last released:     84K region: 0x7d90a67000 (0x7d90a5d000)
I/scudo   :   19 (  2576): mapped:   1024K popped:    3810 pushed:    3640 inuse:    170 total:    353 rss:      0K releases:    321 last released:    400K region: 0x7df0a62000 (0x7df0a5d000)
I/scudo   :   20 (  3120): mapped:   2816K popped:    7210 pushed:    7044 inuse:    166 total:    888 rss:      0K releases:    705 last released:    396K region: 0x7ec0a5f000 (0x7ec0a5d000)
I/scudo   :   21 (  4112): mapped:  10752K popped:   13610 pushed:   13468 inuse:    142 total:   2633 rss:      0K releases:    962 last released:    352K region: 0x7eb0a6a000 (0x7eb0a5d000)
I/scudo   :   22 (  4624): mapped:   1280K popped:   23236 pushed:   23218 inuse:     18 total:    262 rss:      0K releases:    309 last released:    908K region: 0x7e90a6d000 (0x7e90a5d000)
I/scudo   :   23 (  7120): mapped:   4864K popped:    4924 pushed:    4821 inuse:    103 total:    690 rss:      0K releases:    673 last released:    248K region: 0x7ed0a67000 (0x7ed0a5d000)
I/scudo   : F 24 (  8720): mapped: 261888K popped:  283516 pushed:  252763 inuse:  30753 total:  30753 rss:      0K releases:   1591 last released: 114880K region: 0x7e40a5e000 (0x7e40a5d000)
I/scudo   :   25 ( 11664): mapped:   3584K popped:    4052 pushed:    3996 inuse:     56 total:    300 rss:      0K releases:    335 last released:    372K region: 0x7d00a64000 (0x7d00a5d000)
I/scudo   :   26 ( 14224): mapped:   3072K popped:    1423 pushed:    1407 inuse:     16 total:    214 rss:      0K releases:    104 last released:    828K region: 0x7dd0a66000 (0x7dd0a5d000)
I/scudo   :   27 ( 16400): mapped:    256K popped:      95 pushed:      88 inuse:      7 total:     12 rss:      0K releases:     24 last released:     72K region: 0x7ee0a69000 (0x7ee0a5d000)
I/scudo   :   28 ( 18448): mapped:   1792K popped:    7197 pushed:    7191 inuse:      6 total:     93 rss:      0K releases:    143 last released:    896K region: 0x7ef0a60000 (0x7ef0a5d000)
I/scudo   :   29 ( 23056): mapped:   1280K popped:     337 pushed:     327 inuse:     10 total:     56 rss:      0K releases:     67 last released:    832K region: 0x7db0a6b000 (0x7db0a5d000)
I/scudo   :   30 ( 29456): mapped:    768K popped:     376 pushed:     366 inuse:     10 total:     21 rss:      0K releases:     67 last released:     52K region: 0x7d10a5e000 (0x7d10a5d000)
I/scudo   :   31 ( 33296): mapped:   1280K popped:     205 pushed:     194 inuse:     11 total:     35 rss:      0K releases:     37 last released:     96K region: 0x7e20a6c000 (0x7e20a5d000)
I/scudo   :   32 ( 65552): mapped:   1536K popped:     682 pushed:     671 inuse:     11 total:     23 rss:      0K releases:     96 last released:    300K region: 0x7e00a5e000 (0x7e00a5d000)
I/scudo   : Scudo OOM: The process has exhausted 256M for size class 8720.

> Task :app:maxVersionDebugAndroidTest

org.python.testbed.PythonSuite > testPython[maxVersion] FAILED


maxVersion Tests 1/1 completed. (0 skipped) (1 failed)
Finished 1 tests on maxVersion
11:18:56 I/XmlResultReporter: XML test result file generated at /Users/msmith/git/python/cpython/Android/testbed/app/build/outputs/androidTest-results/managedDevice/debug/maxVersion/TEST-maxVersion-_app-.xml. Total tests 1, failure 1,

> Task :app:maxVersionDebugAndroidTest
Tests on maxVersion failed: There was 1 failure(s).
Test run failed to complete. Instrumentation run failed due to Process crashed.

> Task :app:maxVersionDebugAndroidTest FAILED

Based on these issues with --randomize, I agree that it's not worth enabling it in the buildbot for now.

@mhsmith
Copy link
Member Author

mhsmith commented Aug 15, 2024

I've got one more error handling improvement to push, and then this should be ready to merge.

@mhsmith mhsmith requested a review from freakboy3742 August 15, 2024 21:41
Copy link
Contributor

@freakboy3742 freakboy3742 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me; passes every test run I've been able to throw at it, with appropriate messaging when things are slow due to initial installs etc.

@freakboy3742 freakboy3742 merged commit f84cce6 into python:main Aug 16, 2024
44 of 45 checks passed
@miss-islington-app
Copy link

Thanks @mhsmith for the PR, and @freakboy3742 for merging it 🌮🎉.. I'm working now to backport this PR to: 3.13.
🐍🍒⛏🤖

@miss-islington-app
Copy link

Sorry, @mhsmith and @freakboy3742, I could not cleanly backport this to 3.13 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker f84cce6f2588c6437d69a30856d7c4ba00b70ae0 3.13

@freakboy3742
Copy link
Contributor

Looks like the backport has been complicated by the dependency on #122698/#122719. Probably easiest to wait until that one is merged before trying to backport.

@freakboy3742 freakboy3742 added needs backport to 3.13 bugs and security fixes and removed needs backport to 3.13 bugs and security fixes labels Aug 16, 2024
@miss-islington-app
Copy link

Thanks @mhsmith for the PR, and @freakboy3742 for merging it 🌮🎉.. I'm working now to backport this PR to: 3.13.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Aug 16, 2024
Adds a script for running the test suite on Android emulator devices. Starting
with a fresh install of the Android Commandline tools; the script manages
installing other requirements, starting the emulator (if required), and
retrieving results from that emulator.
(cherry picked from commit f84cce6)

Co-authored-by: Malcolm Smith <smith@chaquo.com>
@bedevere-app
Copy link

bedevere-app bot commented Aug 16, 2024

GH-123061 is a backport of this pull request to the 3.13 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.13 bugs and security fixes label Aug 16, 2024
freakboy3742 pushed a commit that referenced this pull request Aug 16, 2024
gh-116622: Add Android test script (GH-121595)

Adds a script for running the test suite on Android emulator devices. Starting
with a fresh install of the Android Commandline tools; the script manages
installing other requirements, starting the emulator (if required), and
retrieving results from that emulator.
(cherry picked from commit f84cce6)

Co-authored-by: Malcolm Smith <smith@chaquo.com>
@bedevere-bot
Copy link

⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️

Hi! The buildbot AMD64 Ubuntu NoGIL Refleaks 3.13 has failed when building commit cf6d14b.

What do you need to do:

  1. Don't panic.
  2. Check the buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/#builders/1431/builds/376) and take a look at the build logs.
  4. Check if the failure is related to this commit (cf6d14b) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/#builders/1431/builds/376

Failed tests:

  • test_free_threading

Summary of the results of the build (if available):

==

Click to see traceback logs
remote: Enumerating objects: 64, done.        
remote: Counting objects:   1% (1/64)        
remote: Counting objects:   3% (2/64)        
remote: Counting objects:   4% (3/64)        
remote: Counting objects:   6% (4/64)        
remote: Counting objects:   7% (5/64)        
remote: Counting objects:   9% (6/64)        
remote: Counting objects:  10% (7/64)        
remote: Counting objects:  12% (8/64)        
remote: Counting objects:  14% (9/64)        
remote: Counting objects:  15% (10/64)        
remote: Counting objects:  17% (11/64)        
remote: Counting objects:  18% (12/64)        
remote: Counting objects:  20% (13/64)        
remote: Counting objects:  21% (14/64)        
remote: Counting objects:  23% (15/64)        
remote: Counting objects:  25% (16/64)        
remote: Counting objects:  26% (17/64)        
remote: Counting objects:  28% (18/64)        
remote: Counting objects:  29% (19/64)        
remote: Counting objects:  31% (20/64)        
remote: Counting objects:  32% (21/64)        
remote: Counting objects:  34% (22/64)        
remote: Counting objects:  35% (23/64)        
remote: Counting objects:  37% (24/64)        
remote: Counting objects:  39% (25/64)        
remote: Counting objects:  40% (26/64)        
remote: Counting objects:  42% (27/64)        
remote: Counting objects:  43% (28/64)        
remote: Counting objects:  45% (29/64)        
remote: Counting objects:  46% (30/64)        
remote: Counting objects:  48% (31/64)        
remote: Counting objects:  50% (32/64)        
remote: Counting objects:  51% (33/64)        
remote: Counting objects:  53% (34/64)        
remote: Counting objects:  54% (35/64)        
remote: Counting objects:  56% (36/64)        
remote: Counting objects:  57% (37/64)        
remote: Counting objects:  59% (38/64)        
remote: Counting objects:  60% (39/64)        
remote: Counting objects:  62% (40/64)        
remote: Counting objects:  64% (41/64)        
remote: Counting objects:  65% (42/64)        
remote: Counting objects:  67% (43/64)        
remote: Counting objects:  68% (44/64)        
remote: Counting objects:  70% (45/64)        
remote: Counting objects:  71% (46/64)        
remote: Counting objects:  73% (47/64)        
remote: Counting objects:  75% (48/64)        
remote: Counting objects:  76% (49/64)        
remote: Counting objects:  78% (50/64)        
remote: Counting objects:  79% (51/64)        
remote: Counting objects:  81% (52/64)        
remote: Counting objects:  82% (53/64)        
remote: Counting objects:  84% (54/64)        
remote: Counting objects:  85% (55/64)        
remote: Counting objects:  87% (56/64)        
remote: Counting objects:  89% (57/64)        
remote: Counting objects:  90% (58/64)        
remote: Counting objects:  92% (59/64)        
remote: Counting objects:  93% (60/64)        
remote: Counting objects:  95% (61/64)        
remote: Counting objects:  96% (62/64)        
remote: Counting objects:  98% (63/64)        
remote: Counting objects: 100% (64/64)        
remote: Counting objects: 100% (64/64), done.        
remote: Compressing objects:   5% (1/18)        
remote: Compressing objects:  11% (2/18)        
remote: Compressing objects:  16% (3/18)        
remote: Compressing objects:  22% (4/18)        
remote: Compressing objects:  27% (5/18)        
remote: Compressing objects:  33% (6/18)        
remote: Compressing objects:  38% (7/18)        
remote: Compressing objects:  44% (8/18)        
remote: Compressing objects:  50% (9/18)        
remote: Compressing objects:  55% (10/18)        
remote: Compressing objects:  61% (11/18)        
remote: Compressing objects:  66% (12/18)        
remote: Compressing objects:  72% (13/18)        
remote: Compressing objects:  77% (14/18)        
remote: Compressing objects:  83% (15/18)        
remote: Compressing objects:  88% (16/18)        
remote: Compressing objects:  94% (17/18)        
remote: Compressing objects: 100% (18/18)        
remote: Compressing objects: 100% (18/18), done.        
remote: Total 37 (delta 15), reused 27 (delta 8), pack-reused 0 (from 0)        
From https://github.com/python/cpython
 * branch                  3.13       -> FETCH_HEAD
Note: switching to 'cf6d14b96656baa911fa7a793ffa085e1ce6f328'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at cf6d14b966 [3.13] gh-116622: Add Android test script (GH-121595) (#123061)
Switched to and reset branch '3.13'

configure: WARNING: no system libmpdecimal found; falling back to bundled libmpdecimal (deprecated and scheduled for removal in Python 3.15)

make: *** [Makefile:2264: buildbottest] Error 2

@freakboy3742
Copy link
Contributor

As far as I can make out, this buildbot failure is unrelated to this PR; the same test has failed on other PRs recently (eg #122998).

blhsing pushed a commit to blhsing/cpython that referenced this pull request Aug 22, 2024
Adds a script for running the test suite on Android emulator devices. Starting
with a fresh install of the Android Commandline tools; the script manages
installing other requirements, starting the emulator (if required), and
retrieving results from that emulator.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants