1 /* 2 * Copyright (c) 2018, 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. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package jdk.jfr.jcmd; 27 28 import java.io.File; 29 import java.io.IOException; 30 import java.nio.file.Path; 31 import java.nio.file.Paths; 32 33 import jdk.jfr.Recording; 34 import jdk.jfr.consumer.RecordedEvent; 35 import jdk.jfr.consumer.RecordingFile; 36 import jdk.test.lib.Utils; 37 import jdk.test.lib.jfr.EventNames; 38 import jdk.test.lib.jfr.FileHelper; 39 import jdk.test.lib.process.OutputAnalyzer; 40 41 /** 42 * @test TestClassId 43 * @key jfr 44 * @requires vm.hasJFR 45 * @library /test/lib /test/jdk 46 * @modules jdk.jfr/jdk.jfr.internal 47 * @run main/othervm jdk.jfr.jcmd.TestJcmdLegacy 48 */ 49 public class TestJcmdLegacy { 50 51 private static final String DIR = System.getProperty("test.src", "."); 52 private static final File SETTINGS = new File(DIR, "legacy.jfc"); 53 54 private static final String LEGACY_EVENT = "com.oracle.jdk.JVMInformation"; 55 56 public static void main(String... args) throws Exception { 57 testAPI(); 58 testJcmd(); 59 } 60 61 private static void testJcmd() throws Exception { 62 String name = "testLegacy"; 63 Path p = Paths.get(name + ".jfr").toAbsolutePath().normalize(); 64 OutputAnalyzer output = JcmdHelper.jcmd("JFR.start", "name=" + name, "settings=" + SETTINGS.getCanonicalPath()); 65 JcmdAsserts.assertRecordingHasStarted(output); 66 JcmdHelper.waitUntilRunning(name); 67 JcmdHelper.stopWriteToFileAndCheck(name, p.toFile()); 68 FileHelper.verifyRecording(p.toFile()); 69 verify(p); 70 } 71 72 private static void testAPI() throws IOException, Exception { 73 Path p = Utils.createTempFile("enable-legacy-event", ".jfr"); 74 75 try (Recording r = new Recording()) { 76 r.enable(LEGACY_EVENT); 77 r.start(); 78 r.stop(); 79 r.dump(p); 80 verify(p); 81 } 82 } 83 84 private static void verify(Path p) throws IOException, Exception { 85 for (RecordedEvent e : RecordingFile.readAllEvents(p)) { 86 System.out.println(e.getEventType().getName()); 87 if (e.getEventType().getName().equals(EventNames.JVMInformation)) { 88 return; 89 } 90 } 91 throw new Exception("Could not find legacy event"); 92 } 93 }