RFC: Make test failed because of the locale LANG

David Holmes david.holmes at oracle.com
Thu Mar 28 05:47:06 UTC 2019


Hi Jing,

On 28/03/2019 3:22 pm, Jing Tian wrote:
> Hi,
> 
> When I am doing the 'make test'.If the local LANG is set as 
> 'zh_CN.UTF-8', Test cases will have a lot of error messages.
> 
> ==============================
> Test summary
> ==============================
>     TEST                                              TOTAL  PASS FAIL 
> ERROR
>  >> jtreg:test/hotspot/jtreg:tier1                     1373 1371 2     0 <<
>  >> jtreg:test/jdk:tier1                               1867 1860 7     0 <<
>  >> jtreg:test/langtools:tier1                         3922 2470 
> 1450     2 <<
>     jtreg:test/nashorn:tier1                              0 0     0     0
>     jtreg:test/jaxp:tier1                                 0 0     0     0
>  >> jtreg:test/jdk:tier2                               3334 3305 29     
> 0 <<
>  >> jtreg:test/langtools:tier2 11     9     2     0 <<
>     jtreg:test/nashorn:tier2                             35 35     0     0
>  >> jtreg:test/jaxp:tier2                               438 437 1     0 <<
>  >> jtreg:test/jdk:tier3                               1104 1068 36     
> 0 <<
>     jtreg:test/langtools:tier3                            0 0     0     0
>     jtreg:test/nashorn:tier3                              0 0     0     0
>     jtreg:test/jaxp:tier3                                 0 0     0     0
> ==============================

Given most of these are not hotspot issues and given the number of 
failures, I think this is something that would need to be discussed much 
more broadly. So I've cc'd core-libs-dev and compiler-dev. I recall 
there was a very recent discussion regarding some tests failing for the 
same reason, but don't recall the outcome.

David
-----

> On the same machine,when i set LANG=en_US.UTF-8.
> 
> ==============================
> Test summary
> ==============================
>     TEST                                              TOTAL  PASS FAIL 
> ERROR
>  >> jtreg:test/hotspot/jtreg:tier1                     1388 1386 2     0 <<
>  >> jtreg:test/jdk:tier1                               1867 1843 19     
> 5 <<
>     jtreg:test/langtools:tier1                         3920 3920 0     0
>     jtreg:test/nashorn:tier1                              0 0     0     0
>     jtreg:test/jaxp:tier1                                 0 0     0     0
>  >> jtreg:test/jdk:tier2                               3328 3290 31     
> 7 <<
>     jtreg:test/langtools:tier2                           11 11     0     0
>     jtreg:test/nashorn:tier2                             35 35     0     0
>     jtreg:test/jaxp:tier2                               438 438     0     0
>  >> jtreg:test/jdk:tier3                               1104 1067 37     
> 0 <<
>     jtreg:test/langtools:tier3                            0 0     0     0
>     jtreg:test/nashorn:tier3                              0 0     0     0
>     jtreg:test/jaxp:tier3                                 0 0     0     0
> 
> 
> By comparison we can find, lots of(1000+) langtools tests will get fail, 
> and other(about 30+, exclude some X11 and sanity that
> 
> result problem) test cases will also fail because of local LANG.
> 
> 
> such as in the test/hotspot/jtreg/compiler/c2/Test8062950.java,
> 
> shouldContain("Error: Could not find or load main class " + CLASSNAME)
> 
> 
> When in the zh_CN.UTF-8 environment, because some of the output 
> information is changed to Chinese by some properties file,
> 
> the English cannot be matched, which will result in an fail.
> 
> When I set  LANG=en_US/LC_ALL=C, this test will pass.
> 
> 
> I think there are some possible solutions.
> 
> 
> 1.we set LC_ALL=C/LANG=EN_us in the Runtests.gmk, but this modification 
> is more violent because he will affect all test cases.
> 
> 
> 2.We modify each individual test,E.g 
> test/hotspot/jtreg/compiler/c2/Test8062950.java
> 
> diff -r 0421d49b6217 test/hotspot/jtreg/compiler/c2/Test8062950.java
>   package compiler.c2;
>   import jdk.test.lib.process.ProcessTools;
> +import java.util.Map;
> +import jdk.test.lib.process.OutputAnalyzer;
> 
>   public class Test8062950 {
>       private static final String CLASSNAME = "DoesNotExist";
>       public static void main(String[] args) throws Exception {
> - ProcessTools.executeTestJvm("-Xcomp",
> - "-XX:-TieredCompilation",
> - "-XX:-UseOptoBiasInlining",
> - CLASSNAME)
> - .shouldHaveExitValue(1)
> -                    .shouldContain("Error: Could not find or load main 
> class " + CLASSNAME)
> -                    .shouldNotContain("A fatal error has been detected")
> -                    .shouldNotContain("Internal Error")
> -                    .shouldNotContain("HotSpot Virtual Machine Error");
> +        final ProcessBuilder pb = 
> ProcessTools.createJavaProcessBuilder(true,
> + "-Xcomp",
> + "-XX:-TieredCompilation",
> + "-XX:-UseOptoBiasInlining",
> + CLASSNAME);
> +        final Map<String, String> env = pb.environment();
> +        env.put("LC_ALL", "en_US.UTF-8");
> +        OutputAnalyzer output = new OutputAnalyzer(pb.start());
> + output.shouldHaveExitValue(1);
> +        output.shouldContain("Error: Could not find or load main class 
> " + CLASSNAME);
> +        output.shouldNotContain("A fatal error has been detected");
> +        output.shouldNotContain("Internal Error");
> +        output.shouldNotContain("HotSpot Virtual Machine Error");
> }
>   }
> 
> But I don't know if this will change the test program too much, because 
> the related problems are a lot in langtools tests.
> 
> 
> 3.And i find that there is a function can judge the locale
> 
>   if (!isEnglishLocale()) { // only english version
> return;
>   }
> 
> But in this case, I think in many test cases, we may not be able to 
> return so directly, because some test cases may have other test purposes.
> 
> 
> So I don't know if you have any ideas or some suggestions to solve the 
> problem that the output information and English do not match in this
> 
> non-English environment.
> 
> 
> Cheers,
> 
> Jing Tian
> 
> 
> 
> 


More information about the core-libs-dev mailing list