From 4eebea10fc57f4a28c45fcce0ce4f5a76b3d7932 Mon Sep 17 00:00:00 2001 From: Marc-Andre Laperle Date: Thu, 25 Aug 2016 18:23:57 -0400 Subject: [PATCH] ctf: Make LttngKernelTraceGenerator also generate UST test traces LttngKernelTraceGenerator can currently only generate Kernel traces but with a few changes, it can generate a UST trace. The events do not make much sense for a UST trace but this is good enough for trace type validation, etc. Change-Id: I9826383c6d3cb2bdcb24895bbfa9990a75312a4b Signed-off-by: Marc-Andre Laperle Reviewed-on: https://git.eclipse.org/r/79780 Reviewed-by: Hudson CI Reviewed-by: Matthew Khouzam Tested-by: Matthew Khouzam --- ...enerator.java => LttngTraceGenerator.java} | 44 ++++++++++++++----- .../core/tests/trace/CTFTraceGrowingTest.java | 4 +- .../tests/shared/CtfTmfTestTraceUtils.java | 4 +- .../ui/swtbot/tests/ControlViewTest.java | 4 +- .../ui/swtbot/tests/ControlFlowViewTest.java | 8 ++-- .../ui/swtbot/tests/KernelTestBase.java | 6 +-- .../tests/fetch/FetchRemoteTracesTest.java | 4 +- 7 files changed, 49 insertions(+), 25 deletions(-) rename ctf/org.eclipse.tracecompass.ctf.core.tests/shared/org/eclipse/tracecompass/ctf/core/tests/shared/{LttngKernelTraceGenerator.java => LttngTraceGenerator.java} (93%) diff --git a/ctf/org.eclipse.tracecompass.ctf.core.tests/shared/org/eclipse/tracecompass/ctf/core/tests/shared/LttngKernelTraceGenerator.java b/ctf/org.eclipse.tracecompass.ctf.core.tests/shared/org/eclipse/tracecompass/ctf/core/tests/shared/LttngTraceGenerator.java similarity index 93% rename from ctf/org.eclipse.tracecompass.ctf.core.tests/shared/org/eclipse/tracecompass/ctf/core/tests/shared/LttngKernelTraceGenerator.java rename to ctf/org.eclipse.tracecompass.ctf.core.tests/shared/org/eclipse/tracecompass/ctf/core/tests/shared/LttngTraceGenerator.java index 27df0b9e30..a953787437 100644 --- a/ctf/org.eclipse.tracecompass.ctf.core.tests/shared/org/eclipse/tracecompass/ctf/core/tests/shared/LttngKernelTraceGenerator.java +++ b/ctf/org.eclipse.tracecompass.ctf.core.tests/shared/org/eclipse/tracecompass/ctf/core/tests/shared/LttngTraceGenerator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013, 2015 Ericsson + * Copyright (c) 2013, 2017 Ericsson * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which @@ -33,13 +33,13 @@ import java.util.Random; import org.eclipse.tracecompass.ctf.core.tests.CtfCoreTestPlugin; /** - * Generate a kernel trace + * Generate a lttng trace (kernel or ust) * * @author Matthew Khouzam */ -public class LttngKernelTraceGenerator { +public class LttngTraceGenerator { - private static final String metadata = "/* CTF 1.8 */ \n" + + private static final String metadataKernel = "/* CTF 1.8 */ \n" + "typealias integer { size = 8; align = 8; signed = false; } := uint8_t;\n" + "typealias integer { size = 16; align = 8; signed = false; } := uint16_t;\n" + "typealias integer { size = 32; align = 8; signed = false; } := uint32_t;\n" + @@ -158,6 +158,8 @@ public class LttngKernelTraceGenerator { private final long fNbEvents; private final int fNbChans; + private final String metadata; + private static final String[] sfProcesses = { "IDLE", "gnuplot", @@ -183,7 +185,7 @@ public class LttngKernelTraceGenerator { public static void main(String[] args) { // not using createTempFile as this is a directory String path = CtfCoreTestPlugin.getTemporaryDirPath() + File.separator + TRACE_NAME; - generateLttngKernelTrace(new File(path)); + generateLttngTrace(new File(path)); } /** @@ -208,7 +210,7 @@ public class LttngKernelTraceGenerator { Path tracePath = Paths.get("..", "..", "ctf", "org.eclipse.tracecompass.ctf.core.tests", TRACES_DIRECTORY, TRACE_NAME); tracePath = tracePath.toAbsolutePath(); File file = tracePath.toFile(); - generateLttngKernelTrace(file); + generateLttngTrace(file); return file.getAbsolutePath(); } @@ -218,14 +220,28 @@ public class LttngKernelTraceGenerator { * @param file * the file to write the trace to */ - public static void generateLttngKernelTrace(File file) { + public static void generateLttngTrace(File file) { final int cpus = 25; - LttngKernelTraceGenerator gt = new LttngKernelTraceGenerator(2l * Integer.MAX_VALUE - 100, 500000, cpus); + LttngTraceGenerator gt = new LttngTraceGenerator(2l * Integer.MAX_VALUE - 100, 500000, cpus); gt.writeTrace(file); } /** - * Make a kernel trace + * Make a lttng trace + * + * @param duration + * the duration of the trace + * @param events + * the number of events in a trace + * @param nbChannels + * the number of channels in the trace + */ + public LttngTraceGenerator(long duration, long events, int nbChannels) { + this(duration, events, nbChannels, true); + } + + /** + * Make a lttng trace * * @param duration * the duration of the trace @@ -233,12 +249,15 @@ public class LttngKernelTraceGenerator { * the number of events in a trace * @param nbChannels * the number of channels in the trace + * @param isKernel + * true for kernel, false for ust */ - public LttngKernelTraceGenerator(long duration, long events, int nbChannels) { + public LttngTraceGenerator(long duration, long events, int nbChannels, boolean isKernel) { fProcesses = Arrays.asList(sfProcesses); fDuration = duration; fNbEvents = events; fNbChans = nbChannels; + metadata = isKernel ? metadataKernel : getMetadataUST(); } /** @@ -392,6 +411,11 @@ public class LttngKernelTraceGenerator { } } + private static String getMetadataUST() { + String metadata = metadataKernel.replace("\"kernel\"", "\"ust\""); + return metadata.replace("lttng-modules", "lttng-ust"); + } + private class EventWriter { public static final int SIZE = 4 + // timestamp diff --git a/ctf/org.eclipse.tracecompass.ctf.core.tests/src/org/eclipse/tracecompass/ctf/core/tests/trace/CTFTraceGrowingTest.java b/ctf/org.eclipse.tracecompass.ctf.core.tests/src/org/eclipse/tracecompass/ctf/core/tests/trace/CTFTraceGrowingTest.java index b2a721a4e2..2ee963e89d 100644 --- a/ctf/org.eclipse.tracecompass.ctf.core.tests/src/org/eclipse/tracecompass/ctf/core/tests/trace/CTFTraceGrowingTest.java +++ b/ctf/org.eclipse.tracecompass.ctf.core.tests/src/org/eclipse/tracecompass/ctf/core/tests/trace/CTFTraceGrowingTest.java @@ -25,7 +25,7 @@ import java.io.InputStreamReader; import org.eclipse.tracecompass.ctf.core.CTFException; import org.eclipse.tracecompass.ctf.core.event.IEventDefinition; -import org.eclipse.tracecompass.ctf.core.tests.shared.LttngKernelTraceGenerator; +import org.eclipse.tracecompass.ctf.core.tests.shared.LttngTraceGenerator; import org.eclipse.tracecompass.ctf.core.trace.CTFTrace; import org.eclipse.tracecompass.ctf.core.trace.CTFTraceReader; import org.eclipse.tracecompass.ctf.core.trace.Metadata; @@ -40,7 +40,7 @@ import org.junit.Test; */ public class CTFTraceGrowingTest { - private final String fPathName = LttngKernelTraceGenerator.getPath(); + private final String fPathName = LttngTraceGenerator.getPath(); private final CTFTrace fixture = new CTFTrace(); /** diff --git a/ctf/org.eclipse.tracecompass.tmf.ctf.core.tests/shared/org/eclipse/tracecompass/tmf/ctf/core/tests/shared/CtfTmfTestTraceUtils.java b/ctf/org.eclipse.tracecompass.tmf.ctf.core.tests/shared/org/eclipse/tracecompass/tmf/ctf/core/tests/shared/CtfTmfTestTraceUtils.java index f29f919f22..d627c675f1 100644 --- a/ctf/org.eclipse.tracecompass.tmf.ctf.core.tests/shared/org/eclipse/tracecompass/tmf/ctf/core/tests/shared/CtfTmfTestTraceUtils.java +++ b/ctf/org.eclipse.tracecompass.tmf.ctf.core.tests/shared/org/eclipse/tracecompass/tmf/ctf/core/tests/shared/CtfTmfTestTraceUtils.java @@ -15,7 +15,7 @@ import java.util.Map; import org.eclipse.core.runtime.FileLocator; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.tracecompass.ctf.core.tests.shared.LttngKernelTraceGenerator; +import org.eclipse.tracecompass.ctf.core.tests.shared.LttngTraceGenerator; import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace; import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException; import org.eclipse.tracecompass.tmf.ctf.core.event.CtfTmfEvent; @@ -87,7 +87,7 @@ public final class CtfTmfTestTraceUtils { public static CtfTmfTrace getSyntheticTrace() { CtfTmfTrace trace = new CtfTmfTrace(); try { - trace.initTrace(null, LttngKernelTraceGenerator.getPath(), CtfTmfEvent.class); + trace.initTrace(null, LttngTraceGenerator.getPath(), CtfTmfEvent.class); } catch (TmfTraceException e) { throw new IllegalStateException(); } diff --git a/lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/control/ui/swtbot/tests/ControlViewTest.java b/lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/control/ui/swtbot/tests/ControlViewTest.java index 9079678778..8343f95374 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/control/ui/swtbot/tests/ControlViewTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/control/ui/swtbot/tests/ControlViewTest.java @@ -40,7 +40,7 @@ import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.eclipse.swtbot.swt.finder.widgets.SWTBotText; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; -import org.eclipse.tracecompass.ctf.core.tests.shared.LttngKernelTraceGenerator; +import org.eclipse.tracecompass.ctf.core.tests.shared.LttngTraceGenerator; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState; import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState; import org.eclipse.tracecompass.internal.lttng2.control.stubs.service.TestRemoteSystemProxy; @@ -651,7 +651,7 @@ public class ControlViewTest { private static void generateTrace(IPath path) { File traceParent = path.toFile(); traceParent.mkdirs(); - LttngKernelTraceGenerator.generateLttngKernelTrace(path.append(ControlViewSwtBotUtil.KERNEL_TRACE_NAME).toFile()); + LttngTraceGenerator.generateLttngTrace(path.append(ControlViewSwtBotUtil.KERNEL_TRACE_NAME).toFile()); } private static void closeImportWizard(SWTBotShell shell, String buttonName) { diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/ControlFlowViewTest.java b/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/ControlFlowViewTest.java index 46121f8f11..1ce0a6cb48 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/ControlFlowViewTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/ControlFlowViewTest.java @@ -31,7 +31,7 @@ import org.eclipse.swtbot.swt.finder.widgets.SWTBotLabel; import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; -import org.eclipse.tracecompass.ctf.core.tests.shared.LttngKernelTraceGenerator; +import org.eclipse.tracecompass.ctf.core.tests.shared.LttngTraceGenerator; import org.eclipse.tracecompass.tmf.core.signal.TmfSelectionRangeUpdatedSignal; import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager; import org.eclipse.tracecompass.tmf.core.signal.TmfWindowRangeUpdatedSignal; @@ -275,7 +275,7 @@ public class ControlFlowViewTest extends KernelTestBase { checked = UIThreadRunnable.syncExec(treeCheckCounter); assertEquals(UNCHECK_INACTIVE, 69, checked.intValue()); // test check selected - treeBot.getTreeItem(LttngKernelTraceGenerator.getName()).select("gnuplot"); + treeBot.getTreeItem(LttngTraceGenerator.getName()).select("gnuplot"); bot.button(UNCHECK_ALL).click(); bot.button(CHECK_SELECTED).click(); checked = UIThreadRunnable.syncExec(treeCheckCounter); @@ -300,7 +300,7 @@ public class ControlFlowViewTest extends KernelTestBase { checked = UIThreadRunnable.syncExec(treeCheckCounter); assertEquals(0, checked.intValue()); bot.text().setText("half-life 3"); - SWTBotTreeItem treeItem = treeBot.getTreeItem(LttngKernelTraceGenerator.getName()); + SWTBotTreeItem treeItem = treeBot.getTreeItem(LttngTraceGenerator.getName()); treeItem.rowCount(); fBot.waitUntil(ConditionHelpers.treeItemCount(treeItem, 25)); bot.button(CHECK_ALL).click(); @@ -308,7 +308,7 @@ public class ControlFlowViewTest extends KernelTestBase { assertEquals("Filtered", 26, checked.intValue()); bot.button("OK").click(); treeBot = fViewBot.bot().tree(); - treeItem = treeBot.getTreeItem(LttngKernelTraceGenerator.getName()); + treeItem = treeBot.getTreeItem(LttngTraceGenerator.getName()); for (int i = 0; i < 25; i++) { assertEquals("Filtered Control flow view", "Half-life 3", treeItem.cell(i, 0)); } diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/KernelTestBase.java b/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/KernelTestBase.java index 1e3605f6d4..4d3d6b9e57 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/KernelTestBase.java +++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/KernelTestBase.java @@ -30,7 +30,7 @@ import org.eclipse.swtbot.swt.finder.results.BoolResult; import org.eclipse.swtbot.swt.finder.results.Result; import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; -import org.eclipse.tracecompass.ctf.core.tests.shared.LttngKernelTraceGenerator; +import org.eclipse.tracecompass.ctf.core.tests.shared.LttngTraceGenerator; import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers; import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils; import org.eclipse.ui.PlatformUI; @@ -125,8 +125,8 @@ public abstract class KernelTestBase { */ @Before public void before() { - SWTBotUtils.openTrace(TRACE_PROJECT_NAME, LttngKernelTraceGenerator.getPath(), KERNEL_TRACE_TYPE); - SWTBotUtils.activateEditor(fBot, LttngKernelTraceGenerator.getName()); + SWTBotUtils.openTrace(TRACE_PROJECT_NAME, LttngTraceGenerator.getPath(), KERNEL_TRACE_TYPE); + SWTBotUtils.activateEditor(fBot, LttngTraceGenerator.getName()); } /** diff --git a/tmf/org.eclipse.tracecompass.tmf.remote.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/remote/ui/swtbot/tests/fetch/FetchRemoteTracesTest.java b/tmf/org.eclipse.tracecompass.tmf.remote.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/remote/ui/swtbot/tests/fetch/FetchRemoteTracesTest.java index a2360967ac..7e6654bf0d 100644 --- a/tmf/org.eclipse.tracecompass.tmf.remote.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/remote/ui/swtbot/tests/fetch/FetchRemoteTracesTest.java +++ b/tmf/org.eclipse.tracecompass.tmf.remote.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/remote/ui/swtbot/tests/fetch/FetchRemoteTracesTest.java @@ -42,7 +42,7 @@ import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.eclipse.swtbot.swt.finder.widgets.SWTBotText; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; -import org.eclipse.tracecompass.ctf.core.tests.shared.LttngKernelTraceGenerator; +import org.eclipse.tracecompass.ctf.core.tests.shared.LttngTraceGenerator; import org.eclipse.tracecompass.tmf.remote.ui.swtbot.tests.TmfRemoteUISWTBotTestPlugin; import org.eclipse.tracecompass.tmf.ui.project.model.TmfProjectElement; import org.eclipse.tracecompass.tmf.ui.project.model.TmfProjectRegistry; @@ -87,7 +87,7 @@ public class FetchRemoteTracesTest { IPath generatedTraceFullPath = subDirFullPath.append("synthetic-trace"); File generatedTraceFile = new File(generatedTraceFullPath.toOSString()); - LttngKernelTraceGenerator.generateLttngKernelTrace(generatedTraceFile); + LttngTraceGenerator.generateLttngTrace(generatedTraceFile); traceLocation = new Path(resourcesFile.getAbsolutePath()).toString(); } catch (IOException e) { e.printStackTrace(); -- 2.34.1