OpenJDK / jdk / jdk
changeset 59245:78fa29ad0b02
8147018: CompilerControl: Improve handling of timeouts and failures for tests
Summary: Dump expected method states, improve compile commands dumping in CompilerControl tests
Reviewed-by: iignatyev, rbackman
line wrap: on
line diff
--- a/test/hotspot/jtreg/compiler/compilercontrol/jcmd/AddAndRemoveTest.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/jcmd/AddAndRemoveTest.java Thu Apr 23 16:20:17 2020 +0200 @@ -63,7 +63,6 @@ MethodDescriptor md = getValidMethodDescriptor(exec); CompileCommand compileCommand = new JcmdCommand(Command.COMPILEONLY, md, null, Scenario.Type.JCMD, Scenario.JcmdType.ADD); - compileCommand.print(); builder.add(compileCommand); } // Remove half of them
--- a/test/hotspot/jtreg/compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest.java Thu Apr 23 16:20:17 2020 +0200 @@ -76,7 +76,6 @@ CompileCommand compileCommand = new CompileCommand(command, methodDescriptor, cmdGen.generateCompiler(), Scenario.Type.DIRECTIVE); - compileCommand.print(); builder.add(compileCommand); } // clear the stack
--- a/test/hotspot/jtreg/compiler/compilercontrol/jcmd/ClearDirectivesStackTest.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/jcmd/ClearDirectivesStackTest.java Thu Apr 23 16:20:17 2020 +0200 @@ -66,7 +66,6 @@ cmdGen.generateCommand(), methodDescriptor, cmdGen.generateCompiler(), Scenario.Type.JCMD, Scenario.JcmdType.ADD); - compileCommand.print(); builder.add(compileCommand); } // clear the stack
--- a/test/hotspot/jtreg/compiler/compilercontrol/jcmd/PrintDirectivesTest.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/jcmd/PrintDirectivesTest.java Thu Apr 23 16:20:17 2020 +0200 @@ -73,7 +73,6 @@ CompileCommand compileCommand = new CompileCommand(command, methodDescriptor, cmdGen.generateCompiler(), Scenario.Type.DIRECTIVE); - compileCommand.print(); builder.add(compileCommand); } // print all directives
--- a/test/hotspot/jtreg/compiler/compilercontrol/share/MultiCommand.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/share/MultiCommand.java Thu Apr 23 16:20:17 2020 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -76,7 +76,6 @@ builder.addFlag("-XX:+UnlockDiagnosticVMOptions"); builder.addFlag("-XX:CompilerDirectivesLimit=101"); for (CompileCommand cc : testCases) { - cc.print(); builder.add(cc); } Scenario scenario = builder.build();
--- a/test/hotspot/jtreg/compiler/compilercontrol/share/SingleCommand.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/share/SingleCommand.java Thu Apr 23 16:20:17 2020 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,7 +49,6 @@ CommandGenerator cmdGen = new CommandGenerator(); CompileCommand compileCommand = cmdGen.generateCompileCommand(command, md, type); - compileCommand.print(); builder.add(compileCommand); Scenario scenario = builder.build(); scenario.execute();
--- a/test/hotspot/jtreg/compiler/compilercontrol/share/actions/CompileAction.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/share/actions/CompileAction.java Thu Apr 23 16:20:17 2020 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -58,6 +58,13 @@ */ public static void checkCompiled(Executable executable, State state) { + { // Dumping the state being checked + System.out.println("Checking expected compilation state: {"); + System.out.println(" method: " + executable); + state.toString().lines() + .map(line -> " " + line).forEach(System.out::println); + System.out.println("}"); + } int first = COMP_LEVELS[0]; if (first < 4) { checkCompilation(executable, first, state.isC1Compilable());
--- a/test/hotspot/jtreg/compiler/compilercontrol/share/scenario/CompileCommand.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/share/scenario/CompileCommand.java Thu Apr 23 16:20:17 2020 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -57,10 +57,25 @@ } /** - * Prints compile command to the system output + * Formats the command according to the following pattern: + * {@code <command_name> Type: <type> Compiler: <compiler> MethodDescriptor: <method_descriptor> IsValid: <true/false>} + * Sample output: + * COMPILEONLY Type: OPTION Compiler: C1 MethodDescriptor: *Klass.method* IsValid: true */ - public void print() { - System.out.printf("%s (type: %s): %s (valid: %b)%n", command.name(), - type.name(), methodDescriptor.getString(), isValid()); + protected String formatFields() { + return command.name() + + " Type: " + type + + " Compiler: " + compiler + + " MethodDescriptor: " + (methodDescriptor == null ? "null" : methodDescriptor.getString()) + + " IsValid: " + isValid(); + } + + /** + * Returns formatted string representation in the form + * {@code "(CompileCommand Field1: <field1> Field2: <field2> ...)} + * The fields are formatted by {@link #formatFields()}. + */ + public String toString() { + return "(CompileCommand " + formatFields() + ")"; } }
--- a/test/hotspot/jtreg/compiler/compilercontrol/share/scenario/JcmdCommand.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/share/scenario/JcmdCommand.java Thu Apr 23 16:20:17 2020 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,4 +36,13 @@ super(command, methodDescriptor, compiler, type); this.jcmdType = jcmdType; } + + /** + * Enchances parent's class method with the the JCMDtype printing: + * {@code ... JCMDType: <jcmd_type>} + */ + protected String formatFields() { + return super.formatFields() + " JCMDType: " + jcmdType; + } + }
--- a/test/hotspot/jtreg/compiler/compilercontrol/share/scenario/Scenario.java Mon May 11 21:43:57 2020 +0200 +++ b/test/hotspot/jtreg/compiler/compilercontrol/share/scenario/Scenario.java Thu Apr 23 16:20:17 2020 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -214,6 +214,7 @@ } public void add(CompileCommand compileCommand) { + System.out.println(compileCommand); String[] vmOptions = compileCommand.command.vmOpts; Collections.addAll(vmopts, vmOptions); if (compileCommand.command == Command.LOG) {