1 /*
2 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
38 public class ClassResolutionTest {
39
40 public static class ClassResolutionTestMain {
41
42 public static class Thing1 {
43 public static int getThingNumber() {
44 return 1;
45 }
46 };
47 public static class Thing1Handler {
48 public static int getThingNumber() {
49 return Thing1.getThingNumber();
50 }
51 };
52
53 public static void main(String... args) throws Exception {
54 Thing1Handler.getThingNumber();
55 }
56 }
57
58 public static void main(String... args) throws Exception {
59
60 // (1) classresolve should turn on.
61 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
62 "-Xlog:classresolve=info", ClassResolutionTestMain.class.getName());
63 OutputAnalyzer o = new OutputAnalyzer(pb.start());
64 o.shouldContain("[classresolve] ClassResolutionTest$ClassResolutionTestMain$Thing1Handler ClassResolutionTest$ClassResolutionTestMain$Thing1");
65
66 // (2) classresolve should turn off.
67 pb = ProcessTools.createJavaProcessBuilder(
68 "-Xlog", "-Xlog:classresolve=off", ClassResolutionTestMain.class.getName());
69 o = new OutputAnalyzer(pb.start());
70 o.shouldNotContain("[classresolve]");
71
72 // (3) TraceClassResolution should turn on.
73 pb = ProcessTools.createJavaProcessBuilder(
74 "-XX:+TraceClassResolution", ClassResolutionTestMain.class.getName());
75 o = new OutputAnalyzer(pb.start());
76 o.shouldContain("[classresolve] ClassResolutionTest$ClassResolutionTestMain$Thing1Handler ClassResolutionTest$ClassResolutionTestMain$Thing1");
77
78 // (4) TraceClassResolution should turn off.
79 pb = ProcessTools.createJavaProcessBuilder(
80 "-Xlog", "-XX:-TraceClassResolution", ClassResolutionTestMain.class.getName());
81 o = new OutputAnalyzer(pb.start());
82 o.shouldNotContain("[classresolve]");
83
84
85 };
86 }
|
1 /*
2 * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
38 public class ClassResolutionTest {
39
40 public static class ClassResolutionTestMain {
41
42 public static class Thing1 {
43 public static int getThingNumber() {
44 return 1;
45 }
46 };
47 public static class Thing1Handler {
48 public static int getThingNumber() {
49 return Thing1.getThingNumber();
50 }
51 };
52
53 public static void main(String... args) throws Exception {
54 Thing1Handler.getThingNumber();
55 }
56 }
57
58 // Each ProcessBuilder should disable CDS with -Xshare:off so that no steps
59 // that produce necessary logging are skipped.
60 public static void main(String... args) throws Exception {
61
62 // (1) classresolve should turn on.
63 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
64 "-Xlog:classresolve=info", "-Xshare:off",
65 ClassResolutionTestMain.class.getName());
66 OutputAnalyzer o = new OutputAnalyzer(pb.start());
67 o.shouldContain("[classresolve] ClassResolutionTest$ClassResolutionTestMain$Thing1Handler ClassResolutionTest$ClassResolutionTestMain$Thing1");
68
69 // (2) classresolve should turn off.
70 pb = ProcessTools.createJavaProcessBuilder(
71 "-Xlog", "-Xlog:classresolve=off", "-Xshare:off",
72 ClassResolutionTestMain.class.getName());
73 o = new OutputAnalyzer(pb.start());
74 o.shouldNotContain("[classresolve]");
75
76 // (3) TraceClassResolution should turn on.
77 pb = ProcessTools.createJavaProcessBuilder(
78 "-XX:+TraceClassResolution", "-Xshare:off",
79 ClassResolutionTestMain.class.getName());
80 o = new OutputAnalyzer(pb.start());
81 o.shouldContain("[classresolve] ClassResolutionTest$ClassResolutionTestMain$Thing1Handler ClassResolutionTest$ClassResolutionTestMain$Thing1");
82
83 // (4) TraceClassResolution should turn off.
84 pb = ProcessTools.createJavaProcessBuilder(
85 "-Xlog", "-XX:-TraceClassResolution", "-Xshare:off",
86 ClassResolutionTestMain.class.getName());
87 o = new OutputAnalyzer(pb.start());
88 o.shouldNotContain("[classresolve]");
89
90
91 };
92 }
|