-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
quarkus-integration-test-container-image-invoker tests do not pass on M1 mac/with a docker equivalent (podman, minikube, etc) #25230
Comments
/cc @geoand |
Thanks for the detailed report! I'll try and have a look soon |
I've found an x86 mac under the sofa so I'm trying it on that and will update the matrix. |
Oh, and for another data point - or, alternatively, to muddy the waters even more - I noticed a failure in this test suite on linux in one of my other PRs. I'm pretty sure there's nothing in the PR that would affect this suite, so there may be some (mild) flakiness in the suite independent of the OS: #25170 (comment) |
Not sure how to proceed with this as I only have Linux x86 machines so I can't really test anything :( |
Need to look under the sofa as well ! :) More seriously - I think for now we can simply merge any related PR based on trust, provided it doesn't introduce regressions for existing coverage. In parallel, we could also figure out if we can introduce CI jobs running on M1 ? Assuming it can be done at low effort, or if we can find an actual sponsor interested enough. |
😆
I am in total agreement with that, no question. My comment was basically about me not being able to do anything myself to fix this :) |
I'm planning to continue bashing my head against this one, so I can help too. |
Some of the techniques used in #25648 may be helpful for these tests, since they are also using databases. |
You'll never guess. It's DNS. (work continues ...) |
The mongo failures are caused by podman dns being case-sensitive (containers/podman#14525). It would be fine except mongo converts the hostname we pass it to lower case before trying to connect to it. #26422 makes us less vulnerable to this kind of bug by lower-casing the hostnames dev services invents. |
Here's my podman recipe for maximum compatibility. https://edofic.com/posts/2021-09-12-podman-m1-amd64/ explains the architecture part, and containers/podman#14238 has discussion of what's going on with ryuk. If ryuk wasn't disabled, there were lots of socket permission exceptions. With ryuk disabled, things mostly worked but there were some failures because of name collisions, which I think happened because containers weren't being cleaned up. Edit
Then run the following
Once the virtual machine restarts, you should be good to run builds or command. If you're podman 4.1 or higher, you don't need the the |
After sorting out #26501, I was still seeing failures in the MSSQQL jib tests.
I was a bit stumped, but a podman prune and mvn clean (and perhaps some other cleaning along the way) seem to have sorted out the issue. Leaving the stack trace here for searchability, but I think MSSQL is resolved. So now it's just DB2 to go, where it's a fight against https://stackoverflow.com/questions/70175677/ibmcom-db2-docker-image-fails-on-m1. |
💪 |
Hi @holly-cummins, I was having this very same issue on Mac m1 with podman-desktop, I was getting this issue while trying to do a basic build with Quarkus 2.14.1 and JiB, seems that it is fixed on 2.14.2. |
@spolti, I don't! But thanks for spotting that it's fixed. I assumed we must have disabled the tests but I checked and we didn't - it just seems to have resolved itself sometime between April and August. So I'll close, and we have the record here if we need it again. |
Describe the bug
The quarkus-integration-test-container-image-invoker fail in various ways when run with a docker subsitute on mac, or on M1 hardware.
I don't have a full matrix of behaviour, but we've observed:
Building container-build-jib-with-mssql 0.1-SNAPSHOT
, further failures after workaroundcontainer-build-jib-with-db2
This is the invocation:
./mvnw -Dquickly -DskipTests=false -Dstart-containers=true -f integration-tests/container-image/maven-invoker-way
(There was originally a guard which (on some maven versions) only ran the tests on linux. The guard was removed as part of #25231 since it had some issues).
Ideally, the tests will pass on mac, and ideally without a hard requirement on docker as the container runtime. If we can't get them to pass, we should reintroduce a guard, but make the guard as focussed as possible, perhaps just on the tests which are failing, and for the exact conditions which aren't supported.
Causes of failures
I suspect there are several different issues.
Issues I was able to work around:
IsDockerWorking
looks for a docker binary orDOCKER_HOST
. I didn't need aDOCKER_HOST
because of the podman helper, so duplicated thepodman
executable and called itdocker
and put ti on my path. I don't think settingquarkus.docker.executable-name
would be enough because the groovy scripts in this project do a straight exec ofdocker
so need the script on the pathIssues I haven't worked around/investigated
Expected behavior
The tests should run cleanly.
Actual behavior
Here are some example failures, from the platforms above.
M1, with patched podman
TESTCONTAINERS_RYUK_DISABLED="true" ./mvnw -Dquickly -DskipTests=false -Dstart-containers=true -f integration-tests/container-image/maven-invoker-way
This one looks like a podman compatibility issue but podman should support the java API?!
Unsure of this one
x86 mac with minikube
M1 mac with Docker
And some Caused by: java.net.ConnectException: Connection refused too
Frozen at
Building container-build-jib-with-mssql 0.1-SNAPSHOT
but-Dmssql.image=mcr.microsoft.com/azure-sql-edge
seemed to work around that.How to Reproduce?
./mvnw -Dquickly -DskipTests=false -Dstart-containers=true -f integration-tests/container-image/maven-invoker-way
Output of
uname -a
orver
We're seeing a range of issues on various mac systems.
Output of
java -version
A range of levels.
GraalVM version (if different from Java)
No response
Quarkus version or git rev
HEAD
Build tool (ie. output of
mvnw --version
orgradlew --version
)Range of levels.
The text was updated successfully, but these errors were encountered: