swtbot: Help stabilize SWTChart tests by waiting for number of series
authorMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Wed, 22 Jun 2016 21:21:29 +0000 (17:21 -0400)
committerMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Mon, 27 Jun 2016 22:02:53 +0000 (18:02 -0400)
Some tests do not have any waiting for the chart to be populated
before starting to inspect its content. By waiting until the expected
number of series is reached, it is much more likely that the expected
content will be there.

Change-Id: Id0c4f8ec2fae2507ed37c2e3ef9178f789af8b5e
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/75782
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-by: Hudson CI
analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/os/linux/ui/swtbot/tests/latency/SystemCallLatencyDensityViewTest.java
analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/os/linux/ui/swtbot/tests/latency/SystemCallLatencyScatterChartViewTest.java
lttng/org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/ust/ui/swtbot/tests/MemoryUsageViewTest.java
releng/org.eclipse.tracecompass.alltests/META-INF/MANIFEST.MF
tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/swtbot/tests/latency/PatternDensityViewTest.java
tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/swtbot/tests/latency/PatternScatterChartViewTest.java
tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/META-INF/MANIFEST.MF
tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/ConditionHelpers.java

index eeccab6635370c02b3dddc5309b95680e0c4f0cc..bbaa540b16e9b1fc803aca9014fadc11cebe4fa4 100644 (file)
@@ -191,6 +191,8 @@ public class SystemCallLatencyDensityViewTest {
         bot.waitUntil(ConditionHelpers.isTableCellFilled(tableBot, "1001046400", 0, 2));
         final Chart densityChart = fDensityChart;
         assertNotNull(densityChart);
+        bot.waitUntil(ConditionHelpers.numberOfSeries(densityChart, 1));
+
         SWTBotChart chartBot = new SWTBotChart(densityChart);
         assertVisible(chartBot);
         assertEquals("", chartBot.getToolTipText());
index 7c834227855d913adf60aa26c36a83d0714cd298..bd8f341606d9298f75ba3355048e775a850ed4d0 100644 (file)
@@ -167,6 +167,8 @@ public class SystemCallLatencyScatterChartViewTest {
 
         final Chart scatterChart = fScatterChart;
         assertNotNull(scatterChart);
+        bot.waitUntil(ConditionHelpers.numberOfSeries(scatterChart, 1));
+
         SWTBotChart chartBot = new SWTBotChart(scatterChart);
         assertVisible(chartBot);
         assertEquals("", chartBot.getToolTipText());
index 5f475950f60271e31e0f981025b0baa046446cf8..d74b68103b8325427fac6ebce9d469ee92ade922 100644 (file)
@@ -9,7 +9,6 @@
 
 package org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests;
 
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
@@ -23,11 +22,11 @@ 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;
 import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
+import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
 import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
 import org.hamcrest.Matcher;
 import org.junit.After;
@@ -114,29 +113,10 @@ public class MemoryUsageViewTest {
         Chart chart = viewBot.bot().widget(matcher);
 
         // Verify that the chart has 4 series
-        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;
-            }
-        });
+        fBot.waitUntil(ConditionHelpers.numberOfSeries(chart, EXPECTED_NUM_SERIES));
 
         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);
index ee3bd6fb43588641a61957eb77f15b23d326fc6c..8c1bc41c70b585a972f52dd4201ecce332cbf4a9 100644 (file)
@@ -40,7 +40,8 @@ Require-Bundle: org.junit;bundle-version="4.0.0",
  org.eclipse.tracecompass.tmf.pcap.ui.swtbot.tests,
  org.eclipse.tracecompass.tmf.remote.core.tests,
  org.eclipse.tracecompass.tmf.remote.ui.tests,
- org.eclipse.tracecompass.tmf.remote.ui.swtbot.tests
+ org.eclipse.tracecompass.tmf.remote.ui.swtbot.tests,
+ org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests
 Export-Package: org.eclipse.tracecompass.alltests;x-internal:=true,
  org.eclipse.tracecompass.alltests.perf;x-internal:=true,
  org.eclipse.tracecompass.alltests.swtbot;x-internal:=true
index c73f292afa0e1c9d40c068b0fe07c3746228204c..626d8516963da6f24c629ec5bcf704577007da8f 100644 (file)
@@ -127,6 +127,8 @@ public class PatternDensityViewTest extends PatternLatencyViewTestBase {
         //Test the chart content
         final Chart densityChart = fDensityChart;
         assertNotNull(densityChart);
+        fBot.waitUntil(ConditionHelpers.numberOfSeries(densityChart, 1));
+
         SWTBotChart chartBot = new SWTBotChart(densityChart);
         assertVisible(chartBot);
 
index fa0cdec0779e1eedd0bf08a8b5826836b5f6e8de..2fd21b944ae4e9dd48d8b73aa95d89cd06c691dd 100644 (file)
@@ -23,6 +23,7 @@ import org.eclipse.swtbot.swt.finder.matchers.WidgetOfType;
 import org.eclipse.swtbot.swt.finder.results.Result;
 import org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBotControl;
 import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency.PatternScatterGraphView;
+import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
 import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
 import org.eclipse.ui.IViewPart;
 import org.eclipse.ui.IViewReference;
@@ -72,6 +73,7 @@ public class PatternScatterChartViewTest extends PatternLatencyViewTestBase {
         SWTBotUtils.waitForJobs();
         final Chart scatterChart = fScatterChart;
         assertNotNull(scatterChart);
+        fBot.waitUntil(ConditionHelpers.numberOfSeries(scatterChart, 1));
 
         SWTBotChart chartBot = new SWTBotChart(scatterChart);
         assertVisible(chartBot);
index b0a7900daea318dd1e85e688e5ed4177f9461d9c..7723eccc4c172a4338c08947698be356642dcdda 100644 (file)
@@ -32,7 +32,8 @@ Import-Package: com.google.common.collect,
  org.eclipse.swtbot.swt.finder.results,
  org.eclipse.swtbot.swt.finder.utils,
  org.eclipse.swtbot.swt.finder.waits,
- org.eclipse.swtbot.swt.finder.widgets
+ org.eclipse.swtbot.swt.finder.widgets,
+ org.swtchart
 Export-Package: org.eclipse.tracecompass.tmf.ui.swtbot.tests.parsers.custom;x-internal:=true,
  org.eclipse.tracecompass.tmf.ui.swtbot.tests.perspectives;x-internal:=true,
  org.eclipse.tracecompass.tmf.ui.swtbot.tests.projectexplorer,
index 366fb05a0a70f360d1134397aaf32a71f6780b50..07f4aa0a68734cf92a0666f7ad852be6f078970e 100644 (file)
@@ -47,6 +47,7 @@ import org.eclipse.tracecompass.tmf.ui.editors.TmfEventsEditor;
 import org.eclipse.tracecompass.tmf.ui.views.timegraph.AbstractTimeGraphView;
 import org.eclipse.ui.IEditorReference;
 import org.hamcrest.Matcher;
+import org.swtchart.Chart;
 
 /**
  * Is a tree node available
@@ -657,4 +658,45 @@ public final class ConditionHelpers {
             return fEditor;
         }
     }
+
+    private static class NumberOfSeries extends DefaultCondition {
+        private String fFailureMessage;
+        private Chart fChart;
+        private final int fNumberOfSeries;
+
+        public NumberOfSeries(Chart chart, int numberOfSeries) {
+            fChart = chart;
+            fNumberOfSeries = numberOfSeries;
+        }
+
+        @Override
+        public boolean test() throws Exception {
+            int length = fChart.getSeriesSet().getSeries().length;
+            if (length != fNumberOfSeries){
+                fFailureMessage = "Chart did not contain the expected number series. Actual " + length + ", expected " + fNumberOfSeries;
+                return false;
+            }
+
+            return true;
+        }
+
+        @Override
+        public String getFailureMessage() {
+            return fFailureMessage;
+        }
+    }
+
+    /**
+     * Wait until the chart has the specified number of series.
+     *
+     * @param chart
+     *            the chart
+     * @param numberOfSeries
+     *            the number of expected series
+     *
+     * @return ICondition for verification
+     */
+    public static ICondition numberOfSeries(Chart chart, int numberOfSeries) {
+        return new NumberOfSeries(chart, numberOfSeries);
+    }
 }
This page took 0.028681 seconds and 5 git commands to generate.