24
24
25
25
26
26
/*
27
- * @test
27
+ * @test id=static
28
+ * @bug 8361725
29
+ * @summary -javaagent should be disabled with -Xshare:dump -XX:+AOTClassLinking
30
+ * @requires vm.cds.supports.aot.class.linking
31
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds/test-classes
32
+ * @build JavaAgent JavaAgentTransformer Util
33
+ * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar app.jar JavaAgentApp JavaAgentApp$ShouldBeTransformed
34
+ * @run driver JavaAgent STATIC
35
+ */
36
+
37
+ /*
38
+ * @test id=aot
28
39
* @summary -javaagent should be allowed in AOT workflow. However, classes transformed/redefined by agents will not
29
40
* be cached.
30
41
* @requires vm.cds.supports.aot.class.linking
@@ -68,7 +79,13 @@ public String classpath(RunMode runMode) {
68
79
69
80
@ Override
70
81
public String [] vmArgs (RunMode runMode ) {
71
- return new String [] { "-javaagent:" + agentJar , "-Xlog:aot,cds" };
82
+ return new String [] {
83
+ "-XX:+UnlockDiagnosticVMOptions" ,
84
+ "-XX:+AllowArchivingWithJavaAgent" ,
85
+ "-javaagent:" + agentJar ,
86
+ "-Xlog:aot,cds" ,
87
+ "-XX:+AOTClassLinking" ,
88
+ };
72
89
}
73
90
74
91
@ Override
@@ -80,7 +97,18 @@ public String[] appCommandLine(RunMode runMode) {
80
97
81
98
@ Override
82
99
public void checkExecution (OutputAnalyzer out , RunMode runMode ) throws Exception {
83
- String agentLoadedMsg = "JavaAgentTransformer.premain() is called" ;
100
+ if (isAOTWorkflow ()) {
101
+ checkExecutionForAOTWorkflow (out , runMode );
102
+ } else {
103
+ checkExecutionForStaticWorkflow (out , runMode );
104
+ }
105
+ }
106
+
107
+ static String agentLoadedMsg = "JavaAgentTransformer.premain() is called" ;
108
+ static String agentPremainFinished = "JavaAgentTransformer::premain() is finished" ;
109
+
110
+ public void checkExecutionForAOTWorkflow (OutputAnalyzer out , RunMode runMode ) throws Exception {
111
+
84
112
if (runMode .isApplicationExecuted ()) {
85
113
out .shouldContain (agentLoadedMsg );
86
114
out .shouldContain ("Transforming: JavaAgentApp$ShouldBeTransformed; Class<?> = null" );
@@ -91,12 +119,26 @@ public void checkExecution(OutputAnalyzer out, RunMode runMode) throws Exception
91
119
92
120
switch (runMode ) {
93
121
case RunMode .TRAINING :
122
+ out .shouldContain (agentPremainFinished );
94
123
out .shouldContain ("Skipping JavaAgentApp$ShouldBeTransformed: From ClassFileLoadHook" );
95
124
out .shouldContain ("Skipping JavaAgentTransformer: Unsupported location" );
96
125
break ;
97
126
case RunMode .ASSEMBLY :
98
127
out .shouldContain ("Disabled all JVMTI agents during -XX:AOTMode=create" );
128
+ out .shouldNotContain (agentPremainFinished );
129
+ break ;
130
+ }
131
+
132
+ }
133
+
134
+ public void checkExecutionForStaticWorkflow (OutputAnalyzer out , RunMode runMode ) throws Exception {
135
+ switch (runMode ) {
136
+ case RunMode .DUMP_STATIC :
137
+ out .shouldContain ("Disabled all JVMTI agents with -Xshare:dump -XX:+AOTClassLinking" );
138
+ out .shouldNotContain (agentPremainFinished );
99
139
break ;
140
+ default :
141
+ out .shouldContain (agentPremainFinished );
100
142
}
101
143
}
102
144
}
0 commit comments