Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/wizards/StandardImportGzipTraceTest.java')
-rw-r--r--tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/wizards/StandardImportGzipTraceTest.java242
1 files changed, 242 insertions, 0 deletions
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/wizards/StandardImportGzipTraceTest.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/wizards/StandardImportGzipTraceTest.java
new file mode 100644
index 0000000000..a070b9100c
--- /dev/null
+++ b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/wizards/StandardImportGzipTraceTest.java
@@ -0,0 +1,242 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Matthew Khouzam - Initial API and implementation.
+ *******************************************************************************/
+package org.eclipse.tracecompass.tmf.ui.swtbot.tests.wizards;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.zip.GZIPOutputStream;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.varia.NullAppender;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
+import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
+import org.eclipse.swtbot.swt.finder.results.VoidResult;
+import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
+import org.eclipse.swtbot.swt.finder.waits.Conditions;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotButton;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotCheckBox;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotCombo;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotRadio;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
+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.internal.tmf.ui.project.wizards.importtrace.ImportTraceWizard;
+import org.eclipse.tracecompass.internal.tmf.ui.project.wizards.importtrace.Messages;
+import org.eclipse.tracecompass.tmf.core.tests.shared.TmfTestTrace;
+import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
+import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ *
+ * Import operation for gz traces
+ *
+ */
+@RunWith(SWTBotJunit4ClassRunner.class)
+public class StandardImportGzipTraceTest {
+ private static final String ROOT_FOLDER = "/";
+ private static final String PROJECT_NAME = "Tracing";
+ private static File fGzipTrace;
+ private Wizard fWizard;
+ private SWTWorkbenchBot fBot;
+
+ /** The Log4j logger instance. */
+ protected static final Logger fLogger = Logger.getRootLogger();
+
+ /**
+ * create a gzip file
+ */
+ @BeforeClass
+ public static void init() {
+ SWTBotUtils.failIfUIThread();
+ zipTrace();
+ fLogger.removeAllAppenders();
+ fLogger.addAppender(new NullAppender());
+ }
+
+ /**
+ * create the project
+ */
+ @Before
+ public void setup() {
+ createProject();
+ SWTBotPreferences.TIMEOUT = 20000;
+ }
+
+ /**
+ * cleanup
+ */
+ @AfterClass
+ public static void destroy() {
+ fLogger.removeAllAppenders();
+ }
+
+ private void createProject() {
+ fBot = new SWTWorkbenchBot();
+ /* Close welcome view */
+ SWTBotUtils.closeView("Welcome", fBot);
+
+ SWTBotUtils.createProject(PROJECT_NAME);
+ }
+
+ /**
+ * Import a gzip trace
+ */
+ @Test
+ public void testGzipImport() {
+ final String traceType = "Test trace : TMF Tests";
+ final String tracesNode = "Traces [1]";
+
+ /*
+ * Actual importing
+ */
+ openImportWizard();
+ selectImportFromArchive(fGzipTrace.getAbsolutePath());
+ selectFolder(ROOT_FOLDER);
+ SWTBotCheckBox checkBox = fBot.checkBox(Messages.ImportTraceWizard_CreateLinksInWorkspace);
+ assertFalse(checkBox.isEnabled());
+ SWTBotCombo comboBox = fBot.comboBoxWithLabel(Messages.ImportTraceWizard_TraceType);
+ comboBox.setSelection(traceType);
+ importFinish();
+ /*
+ * Remove .gz extension
+ */
+ assertNotNull(fGzipTrace);
+ String name = fGzipTrace.getName();
+ assertNotNull(name);
+ assertTrue(name.length() > 3);
+ String traceName = name.substring(0, name.length() - 3);
+ assertNotNull(traceName);
+ assertFalse(traceName.isEmpty());
+
+ /*
+ * Open trace
+ */
+ SWTBotView projectExplorer = fBot.viewById(IPageLayout.ID_PROJECT_EXPLORER);
+ projectExplorer.setFocus();
+ final SWTBotTree tree = projectExplorer.bot().tree();
+ /*
+ * This appears to be problematic due to the length of the file name and
+ * the resolution in our CI.
+ */
+ tree.expandNode(PROJECT_NAME, true);
+ SWTBotTreeItem treeItem = tree.getTreeItem(PROJECT_NAME);
+ fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(tracesNode, treeItem));
+ treeItem = treeItem.getNode(tracesNode);
+ fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(traceName, treeItem));
+ treeItem = treeItem.getNode(traceName);
+ treeItem.doubleClick();
+ SWTBotUtils.waitForJobs();
+ /*
+ * Check results
+ */
+ SWTBotTable editor = fBot.activeEditor().bot().table();
+ String c22 = editor.cell(2, 2);
+ String c10 = editor.cell(1, 0);
+ assertEquals("Type-1", c22);
+ assertEquals("", c10);
+ }
+
+ private static void zipTrace() {
+ try {
+ fGzipTrace = File.createTempFile("trace", ".gz");
+ byte[] buffer = new byte[1024];
+
+ try (GZIPOutputStream gzos = new GZIPOutputStream(new FileOutputStream(fGzipTrace));) {
+
+ try (FileInputStream in = new FileInputStream(TmfTestTrace.A_TEST_10K2.getFullPath());) {
+
+ int len;
+ while ((len = in.read(buffer)) > 0) {
+ gzos.write(buffer, 0, len);
+ }
+ }
+ gzos.finish();
+ }
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ private void selectImportFromArchive(String archivePath) {
+ SWTBotRadio button = fBot.radio("Select &archive file:");
+ button.click();
+
+ SWTBotCombo sourceCombo = fBot.comboBox(1);
+
+ sourceCombo.setText(new File(archivePath).getAbsolutePath());
+
+ SWTBotText text = fBot.text();
+ text.setFocus();
+ }
+
+ private void openImportWizard() {
+ fWizard = new ImportTraceWizard();
+
+ UIThreadRunnable.asyncExec(new VoidResult() {
+ @Override
+ public void run() {
+ final IWorkbench workbench = PlatformUI.getWorkbench();
+ // Fire the Import Trace Wizard
+ if (workbench != null) {
+ final IWorkbenchWindow activeWorkbenchWindow = workbench.getActiveWorkbenchWindow();
+ Shell shell = activeWorkbenchWindow.getShell();
+ assertNotNull(shell);
+ ((ImportTraceWizard) fWizard).init(PlatformUI.getWorkbench(), StructuredSelection.EMPTY);
+ WizardDialog dialog = new WizardDialog(shell, fWizard);
+ dialog.open();
+ }
+ }
+ });
+
+ fBot.waitUntil(ConditionHelpers.isWizardReady(fWizard));
+ }
+
+ private void selectFolder(String... treePath) {
+ SWTBotTree tree = fBot.tree();
+ fBot.waitUntil(Conditions.widgetIsEnabled(tree));
+ SWTBotTreeItem folderNode = SWTBotUtils.getTreeItem(fBot, tree, treePath);
+ folderNode.check();
+ }
+
+ private void importFinish() {
+ SWTBotShell shell = fBot.activeShell();
+ final SWTBotButton finishButton = fBot.button("Finish");
+ finishButton.click();
+ fBot.waitUntil(Conditions.shellCloses(shell));
+ SWTBotUtils.waitForJobs();
+ }
+}

Back to the top