Skip to content

IGNITE-29067 [ducktests] Make the local Docker runner usable on Windows - #13607

Open
maksaska wants to merge 3 commits into
apache:masterfrom
maksaska:ignite-29067
Open

maksaska wants to merge 3 commits into
apache:masterfrom
maksaska:ignite-29067

Conversation

@maksaska

Copy link
Copy Markdown
Contributor

Thank you for submitting the pull request to the Apache Ignite.

In order to streamline the review of the contribution
we ask you to ensure the following steps have been taken:

The Contribution Checklist

  • There is a single JIRA ticket related to the pull request.
  • The web-link to the pull request is attached to the JIRA ticket.
  • The JIRA ticket has the Patch Available state.
  • The pull request body describes changes that have been made.
    The description explains WHAT and WHY was made instead of HOW.
  • The pull request title is treated as the final commit message.
    The following pattern must be used: IGNITE-XXXX Change summary where XXXX - number of JIRA issue.
  • A reviewer has been mentioned through the JIRA comments
    (see the Maintainers list)
  • The pull request has been checked by the Teamcity Bot and
    the green visa attached to the JIRA ticket (see tab PR Check at TC.Bot - Instance 1 or TC.Bot - Instance 2)

Notes

If you need any help, please email dev@ignite.apache.org or ask anу advice on http://asf.slack.com #ignite channel.

The runner did not work out of the box on Windows:

- ducker-ignite build wrote the image id into docker/build/ without
  creating it, so a fresh checkout failed that step;
- ducker-ignite up died with "failed to find the /etc/hosts entry for
  ducker01" under Git Bash, where MSYS rewrites the bare /etc/hosts
  argument into a Windows path before docker sees it. // suppresses the
  rewrite and Linux resolves //etc/hosts identically;
- shell scripts checked out with CRLF (Git's default on Windows) failed
  inside the containers, which execute them from the bind-mounted
  checkout. A .gitattributes now pins *.sh, mvnw and ducker-ignite to LF.

Separately, a checkout on a Windows drive makes node startup take ~250s
instead of ~4s, because class loading stats the classpath across the
filesystem boundary. That exceeds the 60s service startup timeout, so
tests fail that pass in seconds from a WSL2 checkout. It is not a code
bug, so README.md gains a Windows section covering the WSL2 setup, those
measurements, and the two traps that follow from moving to a Linux
filesystem: the image baking the host uid, and run_tests.sh reusing an
already-running cluster.

Verified on Windows 11 + Docker Desktop 4.91 (WSL2): clone and build
inside the distro, then smoke_test.py SmokeServicesTest passes both
test_ignite_start_stop (5.5s) and test_ignite_app_start_stop (15.7s) at
stock timeouts.
…needs

Drop the clean_up.sh entry, which *.sh already covers, and the
*.bat/*.cmd CRLF block. The runner fix doesn't need them, and the CRLF
rule changed working-tree bytes on Linux and macOS checkouts.
…ws guide

- .gitattributes: pin docker/ssh-config to LF, since the image copies it in
  as the SSH client configuration. Drop the mvnw rule, which the runner
  does not need. Explain in plain words why these files must stay LF.
- README: rewrite "Running on Windows" as a step-by-step guide covering
  installing WSL2 and Docker Desktop, preparing the distro, building and
  running the smoke test. Add a troubleshooting table. The renormalize
  command now warns that it discards uncommitted work.
- README: the prerequisites no longer suggest that a Linux host is
  required; macOS is unaffected.
- Use American spelling and mvn, matching the Quick Start.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant