From b2d6540e6b1911e1210d3e94df81b4ca8bbd3d42 Mon Sep 17 00:00:00 2001 From: Marc-Andre Laperle Date: Thu, 18 Feb 2016 16:01:33 -0500 Subject: [PATCH] lttng: Fix intermittent failure in MemoryUsageViewTest It's possible that the series are not there yet after the jobs running. This is because of an asyncExec in the view code. To reproduce the issue, in TmfCommonXLineChartViewer.updateDisplay, change the asyncExec to a timerExec(5000, ...) We can use a waitUntil to wait until the series are there. Change-Id: Ic70d3adbec88578c155b53a4f42e51c568180511 Signed-off-by: Marc-Andre Laperle Reviewed-on: https://git.eclipse.org/r/66865 Reviewed-by: Hudson CI Reviewed-by: Bernd Hufmann Tested-by: Bernd Hufmann --- .../ui/swtbot/tests/MemoryUsageViewTest.java | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/lttng/org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/ust/ui/swtbot/tests/MemoryUsageViewTest.java b/lttng/org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/ust/ui/swtbot/tests/MemoryUsageViewTest.java index 5a31373689..5f475950f6 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/ust/ui/swtbot/tests/MemoryUsageViewTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/ust/ui/swtbot/tests/MemoryUsageViewTest.java @@ -23,6 +23,7 @@ import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner; import org.eclipse.swtbot.swt.finder.matchers.WidgetOfType; import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences; +import org.eclipse.swtbot.swt.finder.waits.DefaultCondition; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; import org.eclipse.tracecompass.internal.lttng2.ust.ui.views.memusage.MemoryUsageView; import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace; @@ -45,6 +46,8 @@ import org.swtchart.ISeriesSet; @RunWith(SWTBotJunit4ClassRunner.class) public class MemoryUsageViewTest { + private static final int EXPECTED_NUM_SERIES = 4; + private static final String UST_ID = "org.eclipse.linuxtools.lttng2.ust.tracetype"; private static final String PROJECT_NAME = "TestForMemory"; @@ -109,13 +112,31 @@ public class MemoryUsageViewTest { // Do some basic validation Matcher matcher = WidgetOfType.widgetOfType(Chart.class); Chart chart = viewBot.bot().widget(matcher); - ISeriesSet seriesSet = chart.getSeriesSet(); - assertNotNull(seriesSet); - ISeries[] series = seriesSet.getSeries(); - assertNotNull(series); // Verify that the chart has 4 series - assertEquals(4, series.length); + fBot.waitUntil(new DefaultCondition() { + private String fFailureMessage; + + @Override + public boolean test() throws Exception { + int length = chart.getSeriesSet().getSeries().length; + if (length != EXPECTED_NUM_SERIES){ + fFailureMessage = "Chart did not contain the expected number series. Actual " + length + ", expected " + EXPECTED_NUM_SERIES; + return false; + } + + return true; + } + + @Override + public String getFailureMessage() { + return fFailureMessage; + } + }); + + ISeriesSet seriesSet = chart.getSeriesSet(); + ISeries[] series = seriesSet.getSeries(); + assertEquals(EXPECTED_NUM_SERIES, series.length); // Verify that each series is a ILineSeries for (int i = 0; i < series.length; i++) { assertTrue(series[i] instanceof ILineSeries); -- 2.34.1