X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=analysis%2Forg.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests%2Fsrc%2Forg%2Feclipse%2Ftracecompass%2Fanalysis%2Fos%2Flinux%2Fui%2Fswtbot%2Ftests%2Flatency%2FSystemCallLatencyTableAnalysisTest.java;h=b1ac1070d1f7cbddfe321c244c19d92deb0d98c0;hb=b8dd6611a7067fdf52a79aec226e0ed4db23e4a4;hp=a5b312f3280fdc70476eb41ec15756fd3e23285c;hpb=37b7faba6f4b597d03a6fd982bfc49dd1b199080;p=deliverable%2Ftracecompass.git diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/os/linux/ui/swtbot/tests/latency/SystemCallLatencyTableAnalysisTest.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/os/linux/ui/swtbot/tests/latency/SystemCallLatencyTableAnalysisTest.java index a5b312f328..b1ac1070d1 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/os/linux/ui/swtbot/tests/latency/SystemCallLatencyTableAnalysisTest.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/os/linux/ui/swtbot/tests/latency/SystemCallLatencyTableAnalysisTest.java @@ -12,15 +12,24 @@ package org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests.latency; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import java.io.BufferedReader; import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Random; +import java.util.stream.Collectors; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Logger; @@ -42,8 +51,11 @@ import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table.Abst import org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency.SystemCallLatencyView; import org.eclipse.tracecompass.segmentstore.core.BasicSegment; import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace; +import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager; +import org.eclipse.tracecompass.tmf.ui.dialog.TmfFileDialogFactory; import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers; import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils; +import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; import org.eclipse.ui.PlatformUI; @@ -51,6 +63,7 @@ import org.eclipse.ui.WorkbenchException; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -96,7 +109,7 @@ public class SystemCallLatencyTableAnalysisTest { /* Switch perspectives */ switchTracingPerspective(); /* Finish waiting for eclipse to load */ - SWTBotUtils.waitForJobs(); + WaitUtils.waitForJobs(); } @@ -294,9 +307,13 @@ public class SystemCallLatencyTableAnalysisTest { * * @throws NoSuchMethodException * Error creating the tsv + * @throws IOException + * no such file or the file is locked. */ + @Ignore @Test - public void testWriteToTsv() throws NoSuchMethodException { + public void testWriteToTsv() throws NoSuchMethodException, IOException { + List<@NonNull BasicSegment> fixture = new ArrayList<>(); for (int i = 1; i <= 20; i++) { int start = i; @@ -311,13 +328,26 @@ public class SystemCallLatencyTableAnalysisTest { bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "1", 0, 2)); SWTWorkbenchBot swtWorkbenchBot = new SWTWorkbenchBot(); SWTBotView viewBot = swtWorkbenchBot.viewById(VIEW_ID); - testToTsv(viewBot); + List actionResult = Arrays.asList(testToTsv(viewBot)); + String absolutePath = TmfTraceManager.getTemporaryDirPath() + File.separator + "syscallLatencyTest.testWriteToTsv.tsv"; + TmfFileDialogFactory.setOverrideFiles(absolutePath); SWTBotMenu menuBot = viewBot.viewMenu().menu("Export to TSV"); - assertTrue(menuBot.isEnabled()); - assertTrue(menuBot.isVisible()); + try { + assertTrue(menuBot.isEnabled()); + assertTrue(menuBot.isVisible()); + menuBot.click(); + + try (BufferedReader br = new BufferedReader(new FileReader(absolutePath))) { + List lines = br.lines().collect(Collectors.toList()); + assertEquals("Both reads", actionResult, lines); + } + } finally { + new File(absolutePath).delete(); + } + } - private void testToTsv(SWTBotView view) throws NoSuchMethodException { + private String[] testToTsv(SWTBotView view) throws NoSuchMethodException { ByteArrayOutputStream os = new ByteArrayOutputStream(); assertNotNull(os); Class<@NonNull AbstractSegmentStoreTableView> clazz = AbstractSegmentStoreTableView.class; @@ -337,8 +367,29 @@ public class SystemCallLatencyTableAnalysisTest { assertNotNull(lines); assertEquals("number of lines", 21, lines.length); assertEquals("header", "Start Time\tEnd Time\tDuration", lines[0]); - // not a straight up string compare due to time zones. Kathmandu and Eucla have 15 minute time zones. + // not a straight up string compare due to time zones. Kathmandu and + // Eucla have 15 minute time zones. assertTrue("line 1", lines[1].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s001\\t\\d\\d:\\d\\d:00.000 000 002\\t1")); + assertTrue("line 2", lines[2].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s002\\t\\d\\d:\\d\\d:00.000 000 006\\t4")); + assertTrue("line 3", lines[3].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s003\\t\\d\\d:\\d\\d:00.000 000 012\\t9")); + assertTrue("line 4", lines[4].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s004\\t\\d\\d:\\d\\d:00.000 000 020\\t16")); + assertTrue("line 5", lines[5].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s005\\t\\d\\d:\\d\\d:00.000 000 030\\t25")); + assertTrue("line 6", lines[6].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s006\\t\\d\\d:\\d\\d:00.000 000 042\\t36")); + assertTrue("line 7", lines[7].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s007\\t\\d\\d:\\d\\d:00.000 000 056\\t49")); + assertTrue("line 8", lines[8].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s008\\t\\d\\d:\\d\\d:00.000 000 072\\t64")); + assertTrue("line 9", lines[9].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s009\\t\\d\\d:\\d\\d:00.000 000 090\\t81")); + assertTrue("line 10", lines[10].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s010\\t\\d\\d:\\d\\d:00.000 000 110\\t100")); + assertTrue("line 11", lines[11].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s011\\t\\d\\d:\\d\\d:00.000 000 132\\t121")); + assertTrue("line 12", lines[12].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s012\\t\\d\\d:\\d\\d:00.000 000 156\\t144")); + assertTrue("line 13", lines[13].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s013\\t\\d\\d:\\d\\d:00.000 000 182\\t169")); + assertTrue("line 14", lines[14].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s014\\t\\d\\d:\\d\\d:00.000 000 210\\t196")); + assertTrue("line 15", lines[15].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s015\\t\\d\\d:\\d\\d:00.000 000 240\\t225")); + assertTrue("line 16", lines[16].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s016\\t\\d\\d:\\d\\d:00.000 000 272\\t256")); + assertTrue("line 17", lines[17].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s017\\t\\d\\d:\\d\\d:00.000 000 306\\t289")); + assertTrue("line 18", lines[18].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s018\\t\\d\\d:\\d\\d:00.000 000 342\\t324")); + assertTrue("line 19", lines[19].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s019\\t\\d\\d:\\d\\d:00.000 000 380\\t361")); + assertTrue("line 20", lines[20].matches("\\d\\d:\\d\\d:00\\.000\\s000\\s020\\t\\d\\d:\\d\\d:00.000 000 420\\t400")); + return lines; } /** @@ -360,9 +411,9 @@ public class SystemCallLatencyTableAnalysisTest { bot.waitUntil(ConditionHelpers.ViewIsClosed(view)); SWTBotUtils.createProject(PROJECT_NAME); SWTBotUtils.openTrace(PROJECT_NAME, tracePath, TRACE_TYPE); - SWTBotUtils.waitForJobs(); + WaitUtils.waitForJobs(); createTable(); - SWTBotUtils.waitForJobs(); + WaitUtils.waitForJobs(); SWTBotTable tableBot = new SWTBotTable(fTable.getTableViewer().getTable()); bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "24,100", 0, 2)); tableBot.header("Duration").click();