tmf.swtbot: Test event highlighting
Change-Id: I4494069d84175c72ed88ed5e66f2af254578e1ea
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/128940
Reviewed-by: Jean-Christian Kouame <jean-christian.kouame@ericsson.com>
Tested-by: Jean-Christian Kouame <jean-christian.kouame@ericsson.com>
Tested-by: CI Bot
(cherry picked from commit c2af083923248224acb003fa620e2981c27ed8d0)
Reviewed-on: https://git.eclipse.org/r/129130
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/TimeGraphViewStub.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/TimeGraphViewStub.java
index 82de041..cfa722f 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/TimeGraphViewStub.java
+++ b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/TimeGraphViewStub.java
@@ -20,6 +20,7 @@
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.swt.graphics.RGBA;
+import org.eclipse.tracecompass.tmf.core.model.timegraph.IFilterProperty;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
@@ -33,6 +34,8 @@
import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeGraphEntry;
import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeLinkEvent;
+import com.google.common.collect.Multimap;
+
/**
* Time graph stub.
*
@@ -76,6 +79,8 @@
private final @NonNull TimeGraphEntry fRow4;
private StubPresentationProvider fPresentationProvider;
+ private String fFilterRegex;
+
/**
* Constructor
*/
@@ -142,6 +147,25 @@
}
@Override
+ protected @NonNull Multimap<@NonNull Integer, @NonNull String> getRegexes() {
+ Multimap<@NonNull Integer, @NonNull String> regexes = super.getRegexes();
+ if (regexes.containsKey(IFilterProperty.BOUND) && (fFilterRegex == null || fFilterRegex.isEmpty())) {
+ regexes.removeAll(IFilterProperty.BOUND);
+ }
+ if (!regexes.containsKey(IFilterProperty.BOUND) && fFilterRegex != null && !fFilterRegex.isEmpty()) {
+ regexes.put(IFilterProperty.BOUND, fFilterRegex);
+ }
+ return regexes;
+ }
+
+ /**
+ * Set the regex to highlight on
+ */
+ public void setFilterRegex(String filterRegex) {
+ fFilterRegex = filterRegex;
+ }
+
+ @Override
protected void buildEntryList(@NonNull ITmfTrace trace, @NonNull ITmfTrace parentTrace, @NonNull IProgressMonitor monitor) {
List<@NonNull TimeGraphEntry> entryList = getEntryList(trace);
if (entryList == null || entryList.isEmpty()) {
@@ -163,7 +187,7 @@
* Set the presentation provider
*
* @param presentaitonProvider
- * the presentation provider
+ * the presentation provider
*/
public void setPresentationProvider(StubPresentationProvider presentaitonProvider) {
fPresentationProvider = presentaitonProvider;
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/TimeGraphViewTest.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/TimeGraphViewTest.java
index e514c97..aa3dc3b 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/TimeGraphViewTest.java
+++ b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/TimeGraphViewTest.java
@@ -225,7 +225,8 @@
TmfWindowRangeUpdatedSignal signal = new TmfWindowRangeUpdatedSignal(this, smallerRange);
TimeGraphViewStub view = getView();
- // This is an oddity: the signals may be lost if a view is not initialized, so
+ // This is an oddity: the signals may be lost if a view is not
+ // initialized, so
// they are send in the condition.
//
// NOTE: maybe use a shorter poll delay?
@@ -269,8 +270,8 @@
}
/**
- * Clean up after a test, reset the views and reset the states of the timegraph
- * by pressing reset on all the resets of the legend
+ * Clean up after a test, reset the views and reset the states of the
+ * timegraph by pressing reset on all the resets of the legend
*/
@After
public void after() {
@@ -356,8 +357,39 @@
}
/**
- * Test the legend operation. Change sliders and reset, do not change colors as
- * there is not mock of the color picker yet
+ * Test the event styling methods, should put a box around the events.
+ */
+ @Test
+ public void testEventStyling() {
+ SWTWorkbenchBot bot = new SWTWorkbenchBot();
+ resetTimeRange(bot);
+ Rectangle bounds = fBounds;
+ ImageHelper precollapse = ImageHelper.grabImage(bounds);
+ SWTBotTimeGraph tg = new SWTBotTimeGraph(fViewBot.bot());
+ tg.getEntry("Plumber guy").collapse();
+ TimeGraphViewStub view = getView();
+ // take a first saved picture, the original is pre-collapse
+ ImageHelper ref = ImageHelper.waitForNewImage(bounds, precollapse);
+ /*
+ * Regex, not a question
+ */
+ view.setFilterRegex("row?");
+ UIThreadRunnable.syncExec(() -> view.restartZoomThread());
+ // Take another picture/
+ ImageHelper highlighted = ImageHelper.waitForNewImage(bounds, ref);
+ view.setFilterRegex(null);
+ UIThreadRunnable.syncExec(() -> view.restartZoomThread());
+ // take a third picture
+ ImageHelper reset = ImageHelper.waitForNewImage(bounds, highlighted);
+ assertEquals(ref.getHistogram(), reset.getHistogram());
+ ImageHelper delta = highlighted.diff(reset);
+ tg.expandAll();
+ assertTrue("Some highlighting", delta.getHistogram().elementSet().size() > 1);
+ }
+
+ /**
+ * Test the legend operation. Change sliders and reset, do not change colors
+ * as there is not mock of the color picker yet
*
* TODO: mock color picker
*/
@@ -406,14 +438,15 @@
}
/**
- * Test the legend and export operations. Resize states, take screenshots and
- * compare, they should be different. then reset the sizes and compare, they
- * should be the same.
+ * Test the legend and export operations. Resize states, take screenshots
+ * and compare, they should be different. then reset the sizes and compare,
+ * they should be the same.
*
* NOTE: This utterly fails in GTK3.
*
* @throws IOException
- * file not found, someone deleted files while the test is running
+ * file not found, someone deleted files while the test is
+ * running
*/
@Test
public void testExport() throws IOException {
@@ -455,7 +488,8 @@
/* Compare with the original, they should be different */
int refCount = refImage.getHistogram().count(HAIR);
int skinnyCount = skinnyImage.getHistogram().count(HAIR);
- assertTrue(String.format("Count of \"\"HAIR\"\" (%s) did not get change despite change of width before: %d after:%d histogram:%s", HAIR, refCount, skinnyCount, Multisets.copyHighestCountFirst(skinnyImage.getHistogram())), skinnyCount < refCount);
+ assertTrue(String.format("Count of \"\"HAIR\"\" (%s) did not get change despite change of width before: %d after:%d histogram:%s", HAIR, refCount, skinnyCount, Multisets.copyHighestCountFirst(skinnyImage.getHistogram())),
+ skinnyCount < refCount);
/* reset all */
fViewBot.toolbarButton(SHOW_LEGEND).click();
@@ -477,13 +511,12 @@
assertEquals("Count of \"HAIR\" did not get change despite reset of width", refCount, resetCount);
}
- private static class PaletteIsPresent extends DefaultCondition {
+ private static class PaletteIsPresent extends DefaultCondition {
private String fFailureMessage;
private List<RGB> fRgbs;
private Rectangle fRect;
-
public PaletteIsPresent(List<RGB> rgbs, Rectangle bounds) {
fRgbs = rgbs;
fRect = bounds;
@@ -512,7 +545,6 @@
}
}
-
/**
* Test time graph with color palettes
*/
@@ -530,7 +562,7 @@
return paletteBlue;
}
}));
- List<RGB> rgbs = Lists.transform(paletteBlue.get(), a->RGBAUtil.fromInt(a.toInt()).rgb);
+ List<RGB> rgbs = Lists.transform(paletteBlue.get(), a -> RGBAUtil.fromInt(a.toInt()).rgb);
fViewBot.bot().waitUntil(new PaletteIsPresent(rgbs, bounds));
IPaletteProvider paletteGreen = SequentialPaletteProvider.create(new RGBAColor(0x23, 0xf3, 0x67, 0xff), 5);
@@ -540,7 +572,7 @@
return paletteGreen;
}
}));
- rgbs = Lists.transform(paletteGreen.get(), a->RGBAUtil.fromInt(a.toInt()).rgb);
+ rgbs = Lists.transform(paletteGreen.get(), a -> RGBAUtil.fromInt(a.toInt()).rgb);
fViewBot.bot().waitUntil(new PaletteIsPresent(rgbs, bounds));
IPaletteProvider rotating = new QualitativePaletteProvider.Builder().setAttenuation(0.5f).setBrightness(1.0f).setNbColors(4).build();
@@ -550,7 +582,7 @@
return rotating;
}
}));
- rgbs = Lists.transform(rotating.get(), a->RGBAUtil.fromInt(a.toInt()).rgb);
+ rgbs = Lists.transform(rotating.get(), a -> RGBAUtil.fromInt(a.toInt()).rgb);
fViewBot.bot().waitUntil(new PaletteIsPresent(rgbs, bounds));
}
@@ -572,7 +604,7 @@
ImageHelper ref = ImageHelper.grabImage(bounds);
timegraph.setFocus();
- //Press '/' to open the filter dialog
+ // Press '/' to open the filter dialog
timegraph.pressShortcut(KeyStroke.getInstance('/'));
SWTBotShell dialogShell = viewBot.shell("Time Event Filter").activate();