run-tests on WSL; was Re: RFR: JDK-8245033 Fixes for building in WSL

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Fri May 15 07:20:18 UTC 2020


Yeah, it definitely is an issue with path conversion on WSL. jtreg is 
jumping back and forth between the Windows and the Linux world. For 
instance, it sets
TESTSRC=C:/localdata/hg/sandbox-ALT/open/test/jdk/java/lang/Class/forName
using Windows paths, but then calls
     wsl.exe \
         sh 
/mnt/c/localdata/hg/sandbox-ALT/open/test/jdk/java/lang/Class/forName/NonJavaNames.sh
using unix paths and  a unix shell. So, unsurprisingly, we get:
cp: cannot stat 
'C:/localdata/hg/sandbox-ALT/open/test/jdk/java/lang/Class/forName/classes/hyphen.class': 
No such file or directory

One added complexity on WSL, compared to cygwin, is that not all unix 
paths have a Windows equivalent. Only data located on Windows drives (C: 
or, from WSL, /mnt/c, etc) can be shared, stuff on e.g. /usr is 
inaccessible from Windows. I don't know if this can be a problem for 
jtreg shell tests. But it means for instance that you cannot trivially 
have e.g. PROG=/bin/true and suppose you can trivially transcripe the 
path for PROG between unix and windows formats. So you need to be 
careful what kind of paths you are using. Which is unlike cygwin, were 
you could be quite sloppy about those things, and just convert the paths 
back and fro.

/Magnus

On 2020-05-15 09:08, Magnus Ihse Bursie wrote:
>
>
> On 2020-05-14 19:00, Jonathan Gibbons wrote:
>> Separate from this RFR, jtreg supports WSL (or is supposed to!) and 
>> so I wonder if you have looked at using WSL in the run-tests framework.
>
> I just did "make test-tier1", and got this:
>
> ==============================
> Test summary
> ==============================
>    TEST                                              TOTAL  PASS FAIL 
> ERROR
>    jtreg:open/test/hotspot/jtreg:tier1                1527  1527 0     0
> >> jtreg:open/test/jdk:tier1                          1918 1902    
> 16     0 <<
> >> jtreg:open/test/langtools:tier1                    4037 4028     
> 9     0 <<
>    jtreg:open/test/jaxp:tier1                            0     0 0     0
> ==============================
> TEST FAILURE
>
>
> So, it's not DOA, we can  certainly run tests. But I got in total 25 
> failures, and it seems likely that these are caused by quirks in the 
> WSL environment. I looked at a few arbitrarily selected, and all of 
> them where shell tests that had the same failure mode:
>
> ACTION: shell -- Failed. Execution failed: exit code 2
> REASON: User specified action: run shell Class-Path2.sh
> TIME:   0.098 seconds
> messages:
> command: shell Class-Path2.sh
> reason: User specified action: run shell Class-Path2.sh
> elapsed time (seconds): 0.098
> STDOUT:
> STDERR:
> /mnt/c/localdata/hg/sandbox-ALT/open/test/langtools/tools/javac/Paths/Class-Path2.sh: 
> 34: .: Can't open 
> C:/localdata/hg/sandbox-ALT/open/test/langtools/tools/javac/Paths/Util.sh
>
> ... which definitely sounds fishy.
>
> /Magnus
>




More information about the build-dev mailing list