- }
-
- /**
- * Test decrementing
- */
- @Test
- public void decrementingTest() {
- List<@NonNull BasicSegment> fixture = new ArrayList<>();
- for (int i = 100; i >= 0; i--) {
- fixture.add(new BasicSegment(i, 2 * i));
- }
- assertNotNull(fTable);
- fTable.updateModel(fixture);
- SWTBotTable tableBot = new SWTBotTable(fTable.getTableViewer().getTable());
- SWTBot bot = new SWTBot();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "100", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "0", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "100", 0, 2));
- }
-
- /**
- * Test small table
- */
- @Test
- public void smallTest() {
- List<@NonNull BasicSegment> fixture = new ArrayList<>();
- for (int i = 1; i >= 0; i--) {
- fixture.add(new BasicSegment(i, 2 * i));
- }
- assertNotNull(fTable);
- fTable.updateModel(fixture);
- SWTBotTable tableBot = new SWTBotTable(fTable.getTableViewer().getTable());
- SWTBot bot = new SWTBot();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "1", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "0", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "1", 0, 2));
- }
-
- /**
- * Test large
- */
- @Test
- public void largeTest() {
- final int size = 1000000;
- BasicSegment[] fixture = new BasicSegment[size];
- for (int i = 0; i < size; i++) {
- fixture[i] = (new BasicSegment(i, 2 * i));
- }
- assertNotNull(fTable);
- fTable.updateModel(fixture);
- SWTBotTable tableBot = new SWTBotTable(fTable.getTableViewer().getTable());
- SWTBot bot = new SWTBot();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "0", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "0", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "999,999", 0, 2));
- }
-
- /**
- * Test noise
- */
- @Test
- public void noiseTest() {
- Random rnd = new Random();
- rnd.setSeed(1234);
- final int size = 1000000;
- BasicSegment[] fixture = new BasicSegment[size];
- for (int i = 0; i < size; i++) {
- int start = Math.abs(rnd.nextInt(100000000));
- int end = start + Math.abs(rnd.nextInt(1000000));
- fixture[i] = (new BasicSegment(start, end));
- }
- assertNotNull(fTable);
- fTable.updateModel(fixture);
- SWTBotTable tableBot = new SWTBotTable(fTable.getTableViewer().getTable());
- SWTBot bot = new SWTBot();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "894,633", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "0", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "999,999", 0, 2));
- }
-
- /**
- * Test gaussian noise
- */
- @Test
- public void gaussianNoiseTest() {
- Random rnd = new Random();
- rnd.setSeed(1234);
- List<@NonNull BasicSegment> fixture = new ArrayList<>();
- for (int i = 1; i <= 1000000; i++) {
- int start = Math.abs(rnd.nextInt(100000000));
- final int delta = Math.abs(rnd.nextInt(1000));
- int end = start + delta * delta;
- fixture.add(new BasicSegment(start, end));
- }
- assertNotNull(fTable);
- fTable.updateModel(fixture);
- SWTBotTable tableBot = new SWTBotTable(fTable.getTableViewer().getTable());
- SWTBot bot = new SWTBot();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "400,689", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "0", 0, 2));
- tableBot.header("Duration").click();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "998,001", 0, 2));
- }
-
- /**
- * Test creating a tsv
- *
- * @throws NoSuchMethodException
- * Error creating the tsv
- * @throws IOException
- * no such file or the file is locked.
- */
- @Ignore
- @Test
- public void testWriteToTsv() throws NoSuchMethodException, IOException {
-
- List<@NonNull BasicSegment> fixture = new ArrayList<>();
- for (int i = 1; i <= 20; i++) {
- int start = i;
- final int delta = i;
- int end = start + delta * delta;
- fixture.add(new BasicSegment(start, end));
- }
- assertNotNull(fTable);
- fTable.updateModel(fixture);
- SWTBotTable tableBot = new SWTBotTable(fTable.getTableViewer().getTable());
- SWTBot bot = new SWTBot();
- bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "1", 0, 2));
- SWTWorkbenchBot swtWorkbenchBot = new SWTWorkbenchBot();
- SWTBotView viewBot = swtWorkbenchBot.viewById(VIEW_ID);
- List<String> 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");
- try {
- assertTrue(menuBot.isEnabled());
- assertTrue(menuBot.isVisible());
- menuBot.click();
-
- try (BufferedReader br = new BufferedReader(new FileReader(absolutePath))) {
- List<String> lines = br.lines().collect(Collectors.toList());
- assertEquals("Both reads", actionResult, lines);
- }
- } finally {
- new File(absolutePath).delete();
- }
-
- }
-
- private String[] testToTsv(SWTBotView view) throws NoSuchMethodException {
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- assertNotNull(os);
- Class<@NonNull AbstractSegmentStoreTableView> clazz = AbstractSegmentStoreTableView.class;
- Method method = clazz.getDeclaredMethod("exportToTsv", java.io.OutputStream.class);
- method.setAccessible(true);
- final Exception[] except = new Exception[1];
- UIThreadRunnable.syncExec(() -> {
- try {
- method.invoke(fLatencyView, os);
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
- except[0] = e;
- }
- });
- assertNull(except[0]);
- @SuppressWarnings("null")
- String[] lines = String.valueOf(os).split(System.getProperty("line.separator"));
- 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.
- 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;