From: Marc-Andre Laperle Date: Thu, 18 Feb 2016 21:01:33 +0000 (-0500) Subject: lttng: Fix intermittent failure in MemoryUsageViewTest X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=b2d6540e6b1911e1210d3e94df81b4ca8bbd3d42;p=deliverable%2Ftracecompass.git 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 --- 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);