Turn on HTTP/3 tests on Android
Categories
(Core :: Networking: HTTP, task, P2)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox130 | --- | fixed |
People
(Reporter: michal, Assigned: kershaw)
References
(Blocks 1 open bug)
Details
(Whiteboard: [necko-triaged])
Attachments
(1 file, 1 obsolete file)
Binary built on Android fails to execute with error "No such file or directory". ldd shows "invalid ELF header" error:
[task 2020-03-16T14:40:30.819Z] 14:40:30 INFO - + ldd /builds/worker/workspace/build/tests/xpcshell/http3server/http3serverDB/../http3server
[task 2020-03-16T14:40:30.819Z] 14:40:30 INFO - /builds/worker/workspace/build/tests/xpcshell/http3server/http3serverDB/../http3server: error while loading shared libraries: /usr/lib/x86_64-linux-gnu/libc.so: invalid ELF header
| Reporter | ||
Updated•6 years ago
|
| Assignee | ||
Updated•6 years ago
|
Comment 1•6 years ago
|
||
(In reply to Michal Novotny [:michal] from comment #0)
Binary built on Android fails to execute with error "No such file or directory". ldd shows "invalid ELF header" error:
[task 2020-03-16T14:40:30.819Z] 14:40:30 INFO - + ldd /builds/worker/workspace/build/tests/xpcshell/http3server/http3serverDB/../http3server
[task 2020-03-16T14:40:30.819Z] 14:40:30 INFO - /builds/worker/workspace/build/tests/xpcshell/http3server/http3serverDB/../http3server: error while loading shared libraries: /usr/lib/x86_64-linux-gnu/libc.so: invalid ELF header
The fuller error is:
[task 2020-03-16T14:40:30.819Z] 14:40:30 INFO - + ldd /builds/worker/workspace/build/tests/xpcshell/http3server/http3serverDB/../http3server
[task 2020-03-16T14:40:30.819Z] 14:40:30 INFO - /builds/worker/workspace/build/tests/xpcshell/http3server/http3serverDB/../http3server: error while loading shared libraries: /usr/lib/x86_64-linux-gnu/libc.so: invalid ELF header
[task 2020-03-16T14:40:30.819Z] 14:40:30 INFO - + file /builds/worker/workspace/build/tests/xpcshell/http3server/http3serverDB/../http3server
[task 2020-03-16T14:40:30.819Z] 14:40:30 INFO - /builds/worker/workspace/build/tests/xpcshell/http3server/http3serverDB/../http3server: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /system/bin/linker64, BuildID[sha1]=4bebb33b3750c1b52899343545646d8992332f78, not stripped
So if I'm reading this correctly, this means that something on the test machine (x86-64 linux) is trying to execute http3server, which is an x86-64 Android binary (notice that http3server's interpreter is /system/bin/linker64 which I assume is an Android thing, and not a Linux thing). Where do you want http3server to execute during these tests?
| Reporter | ||
Comment 2•6 years ago
|
||
http3server is started and shut down in runxpcshelltest.py, see https://phabricator.services.mozilla.com/D48670#change-CiIor6BCZ08p
The binary is built during building of firefox (https://phabricator.services.mozilla.com/D48666#change-Nh01ZR3y0ZaJ), so it's compatible with the target platform.
Comment 3•6 years ago
|
||
Right, so I don't think that's going to work very well for the Android case, because that code in runxpcshelltest.py is running binaries on the host platform rather than the target. I think in the Android case, you want to make http3server a host binary...possibly building http3server outside of the normal Firefox process itself.
Comment 4•6 years ago
|
||
Perhaps http3server can be added to the hostutils ?
Comment 5•6 years ago
|
||
If the binary ends up in the artifact that I use to make hostutils, it will automatically be part of the next build. The process I use to build new hostutils is at https://wiki.mozilla.org/Packaging_Android_host_utilities.
The recent trend has been for things to be built by taskcluster jobs vs being tooltool packages. The turnaround is faster (the machines do it vs humans). Android emulator has recently gone that route (Bug 1624649).
Updated•6 years ago
|
Comment 6•5 years ago
|
||
Comment 7•5 years ago
|
||
http3server is in hostutils now, and I can run it on the host and redirect the emulator ports fine, but I find that the http3 tests still fail.
Have I missed something in the harness support? Do we expect http3 to work on android?
:valentin - Any ideas?
| Assignee | ||
Comment 8•5 years ago
|
||
This bug is in my to-do list.
I'll get to this one later.
Comment 9•5 years ago
|
||
Some of the tests that use TRRServer.registerPathHandler are executed by node moz-http2.js on the host in a new node instance, on a new port.
While MOZNODE_EXEC_PORT is properly forwarded, the port for the newly spawned instance is not, and I am not sure how to do that programatically from JS.
Comment 10•5 years ago
|
||
We'd also have to change httpd.js to use 10.0.2.2 when running on Android.
Updated•4 years ago
|
| Assignee | ||
Comment 11•2 years ago
|
||
| Assignee | ||
Comment 12•2 years ago
|
||
| Assignee | ||
Comment 13•2 years ago
|
||
Note that this patch only enables some HTTP/3 tests that use http3_setup_tests to start the server.
For tests that use HTTPS RR to discover the http3Server, we need more works.
await trrServer.registerDoHAnswers("test.h3_example.com", "HTTPS", {
answers: [
{
name: "test.h3_example.com",
ttl: 55,
type: "HTTPS",
flush: false,
data: {
priority: 1,
name: "test.h3_example.com",
values: [
{ key: "alpn", value: "h3-29" },
{ key: "port", value: h3Port },
],
},
},
],
});
Comment 14•2 years ago
|
||
Comment 15•2 years ago
|
||
| bugherder | ||
Description
•