From b957fb8c2ee8e14b8f4cfaa31e37d7e0a54aedd8 Mon Sep 17 00:00:00 2001 From: Bernd Hufmann Date: Fri, 23 Mar 2012 14:43:09 -0400 Subject: [PATCH] Improved GUI refresh and JUnit tests --- .../TraceControlKernelProviderTests.java | 12 +++++- .../TraceControlKernelSessionTests.java | 10 ++++- .../component/TraceControlPropertiesTest.java | 1 + .../component/TraceControlTestFacility.java | 21 ++++++--- .../component/TraceControlTreeModelTest.java | 1 + .../TraceControlUstProviderTests.java | 9 +++- .../TraceControlUstSessionTests.java | 11 +++-- .../stubs/service/TestRemoteSystemProxy.java | 1 + .../lttng2/ui/views/control/ControlView.java | 43 +++++++++++++------ .../control/model/ITraceControlComponent.java | 6 +++ .../model/impl/TraceChannelComponent.java | 8 +++- .../model/impl/TraceControlComponent.java | 4 +- 12 files changed, 98 insertions(+), 29 deletions(-) diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelProviderTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelProviderTests.java index cc6c3b997b..567ec7c906 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelProviderTests.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelProviderTests.java @@ -107,6 +107,7 @@ public class TraceControlKernelProviderTests extends TestCase { @Override @After public void tearDown() throws Exception { + fFacility.waitForJobs(); } /** @@ -114,6 +115,7 @@ public class TraceControlKernelProviderTests extends TestCase { */ public void testKernelProviderTree() throws Exception { + fProxy.setTestFile(fTestFile); fProxy.setScenario(TraceControlTestFacility.SCEN_INIT_TEST); @@ -122,14 +124,20 @@ public class TraceControlKernelProviderTests extends TestCase { @SuppressWarnings("restriction") IHost host = new Host(new SystemProfile("myProfile", true)); host.setHostName("127.0.0.1"); - + TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, fProxy); root.addChild(node); - node.connect(); fFacility.waitForJobs(); + fFacility.executeCommand(node, "connect"); + int i = 0; + while ((i < 20) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { + i++; + fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); + } + // Verify that node is connected assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelSessionTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelSessionTests.java index 92ac65a133..0ff1d56641 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelSessionTests.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlKernelSessionTests.java @@ -112,6 +112,7 @@ public class TraceControlKernelSessionTests extends TestCase { @Override @After public void tearDown() throws Exception { + fFacility.waitForJobs(); } /** @@ -131,10 +132,15 @@ public class TraceControlKernelSessionTests extends TestCase { TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, fProxy); root.addChild(node); - node.connect(); - fFacility.waitForJobs(); + fFacility.executeCommand(node, "connect"); + int i = 0; + while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { + i++; + fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); + } + // Verify that node is connected assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlPropertiesTest.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlPropertiesTest.java index 2771df2c27..964559dfab 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlPropertiesTest.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlPropertiesTest.java @@ -112,6 +112,7 @@ public class TraceControlPropertiesTest extends TestCase { @Override @After public void tearDown() throws Exception { + TraceControlTestFacility.getInstance().waitForJobs(); } /** diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTestFacility.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTestFacility.java index 46b75357d1..436291ee95 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTestFacility.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTestFacility.java @@ -75,6 +75,18 @@ public class TraceControlTestFacility { IViewPart view; try { + + view = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow() + .getActivePage() + .findView("org.eclipse.ui.internal.introview"); //$NON-NLS-1$ + + if (view != null) { + PlatformUI.getWorkbench() + .getActiveWorkbenchWindow() + .getActivePage().hideView(view); + } + view = PlatformUI.getWorkbench() .getActiveWorkbenchWindow() .getActivePage() @@ -192,9 +204,8 @@ public class TraceControlTestFacility { */ public void setSelection(ITraceControlComponent component) { fControlView.setSelection(component); - - // Give GUI time to actually execute refresh - delay(TraceControlTestFacility.GUI_REFESH_DELAY); + // Selection is done in own job + waitForJobs(); } @@ -206,8 +217,8 @@ public class TraceControlTestFacility { public void setSelection(ITraceControlComponent[] components) { fControlView.setSelection(components); - // Give GUI time to actually execute refresh - delay(TraceControlTestFacility.GUI_REFESH_DELAY); + // Selection is done in own job + waitForJobs(); } /** diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTreeModelTest.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTreeModelTest.java index a83288b744..5a8ac9d9e3 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTreeModelTest.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlTreeModelTest.java @@ -109,6 +109,7 @@ public class TraceControlTreeModelTest extends TestCase { @Override @After public void tearDown() throws Exception { + TraceControlTestFacility.getInstance().waitForJobs(); } /** diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstProviderTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstProviderTests.java index a1b9df6831..e27ae6e832 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstProviderTests.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstProviderTests.java @@ -109,6 +109,7 @@ public class TraceControlUstProviderTests extends TestCase { @Override @After public void tearDown() throws Exception { + fFacility.waitForJobs(); } /** @@ -128,9 +129,15 @@ public class TraceControlUstProviderTests extends TestCase { TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, fProxy); root.addChild(node); - fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); + fFacility.waitForJobs(); fFacility.executeCommand(node, "connect"); + + int i = 0; + while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { + i++; + fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); + } // Verify that node is connected assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstSessionTests.java b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstSessionTests.java index c47e49b6fe..9906fa4910 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstSessionTests.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/src/org/eclipse/linuxtools/lttng2/ui/tests/control/model/component/TraceControlUstSessionTests.java @@ -111,6 +111,7 @@ public class TraceControlUstSessionTests extends TestCase { @Override @After public void tearDown() throws Exception { + fFacility.waitForJobs(); } /** @@ -130,12 +131,14 @@ public class TraceControlUstSessionTests extends TestCase { TargetNodeComponent node = new TargetNodeComponent("myNode", root, host, fProxy); root.addChild(node); - node.connect(); - fFacility.waitForJobs(); - // Verify that node is connected - assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState()); + fFacility.executeCommand(node, "connect"); + int i = 0; + while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) { + i++; + fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY); + } // Get provider groups ITraceControlComponent[] groups = node.getChildren(); diff --git a/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/service/TestRemoteSystemProxy.java b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/service/TestRemoteSystemProxy.java index 1c6c450b77..033976c349 100644 --- a/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/service/TestRemoteSystemProxy.java +++ b/org.eclipse.linuxtools.lttng2.ui.tests/stubs/org/eclipse/linuxtools/internal/lttng2/stubs/service/TestRemoteSystemProxy.java @@ -56,6 +56,7 @@ public class TestRemoteSystemProxy implements IRemoteSystemProxy { @Override public void connect(IRSECallback callback) throws ExecutionException { +// System.out.println("in done: proxy connect "); if (callback != null) { callback.done(Status.OK_STATUS, null); } diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/ControlView.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/ControlView.java index eb0dc3ff94..ccb1164f76 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/ControlView.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/ControlView.java @@ -13,6 +13,9 @@ package org.eclipse.linuxtools.internal.lttng2.ui.views.control; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.ColumnViewerToolTipSupport; import org.eclipse.jface.viewers.ISelection; @@ -25,6 +28,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.part.ViewPart; +import org.eclipse.ui.progress.UIJob; /** * ControlView @@ -116,7 +120,7 @@ public class ControlView extends ViewPart implements ITraceControlComponentChang */ @Override public void componentAdded(ITraceControlComponent parent, ITraceControlComponent component) { - componentChanged(component); + componentChanged(parent); } /* @@ -125,7 +129,7 @@ public class ControlView extends ViewPart implements ITraceControlComponentChang */ @Override public void componentRemoved(ITraceControlComponent parent, ITraceControlComponent component) { - componentChanged(component); + componentChanged(parent); } /* @@ -133,24 +137,30 @@ public class ControlView extends ViewPart implements ITraceControlComponentChang * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponentChangedListener#componentChanged(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent) */ @Override - public void componentChanged(ITraceControlComponent component) { + public void componentChanged(final ITraceControlComponent component) { if (fTreeViewer.getTree().isDisposed()) { return; } - fTreeViewer.getTree().getDisplay().asyncExec(new Runnable() { + UIJob myJob = new UIJob("Refresh") { //$NON-NLS-1$ @Override - public void run() { + public IStatus runInUIThread(IProgressMonitor monitor) { if (fTreeViewer.getTree().isDisposed()) { - return; + return Status.OK_STATUS; } - fTreeViewer.refresh(); + + fTreeViewer.refresh(component); + // Change selection needed final ISelection sel = fTreeViewer.getSelection(); fTreeViewer.setSelection(null); fTreeViewer.setSelection(sel); + + return Status.OK_STATUS; } - }); + }; + myJob.setUser(false); + myJob.schedule(); } /** @@ -158,8 +168,9 @@ public class ControlView extends ViewPart implements ITraceControlComponentChang * @param component - component to select */ public void setSelection(ITraceControlComponent component) { - StructuredSelection selection = new StructuredSelection(component); - fTreeViewer.setSelection(selection); + ITraceControlComponent[] components = new ITraceControlComponent[1]; + components[0] = component; + setSelection(components); } /** @@ -167,8 +178,16 @@ public class ControlView extends ViewPart implements ITraceControlComponentChang * @param component - array of components to select */ public void setSelection(ITraceControlComponent[] components) { - StructuredSelection selection = new StructuredSelection(components); - fTreeViewer.setSelection(selection); + final StructuredSelection selection = new StructuredSelection(components); + UIJob myJob = new UIJob("Select") { //$NON-NLS-1$ + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + fTreeViewer.setSelection(selection); + return Status.OK_STATUS; + } + }; + myJob.setUser(false); + myJob.schedule(); } // public ITraceControlComponent getSelection() { diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/ITraceControlComponent.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/ITraceControlComponent.java index fb2c5916ae..2a827cf0ff 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/ITraceControlComponent.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/ITraceControlComponent.java @@ -132,6 +132,12 @@ public interface ITraceControlComponent extends IAdaptable { */ public void addChild(ITraceControlComponent component); + /** + * Adds several components. + * @param components - array of components to add. + */ +// public void addChildren(ITraceControlComponent[] components); + /** * Removes the given child component. * @param component - the child to remove. diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TraceChannelComponent.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TraceChannelComponent.java index bf0438e037..29d3ca7dc5 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TraceChannelComponent.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TraceChannelComponent.java @@ -11,6 +11,7 @@ **********************************************************************/ package org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl; +import java.util.ArrayList; import java.util.List; import org.eclipse.core.commands.ExecutionException; @@ -98,6 +99,7 @@ public class TraceChannelComponent extends TraceControlComponent { public void setChannelInfo(IChannelInfo channelInfo) { fChannelInfo = channelInfo; IEventInfo[] events = fChannelInfo.getEvents(); + List eventComponents = new ArrayList(); for (int i = 0; i < events.length; i++) { TraceEventComponent event = null; if (events[i].getClass() == ProbeEventInfo.class) { @@ -106,8 +108,12 @@ public class TraceChannelComponent extends TraceControlComponent { event = new TraceEventComponent(events[i].getName(), this); } + eventComponents.add(event); event.setEventInfo(events[i]); - addChild(event); +// addChild(event); + } + if (!eventComponents.isEmpty()) { + setChildren(eventComponents); } } diff --git a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TraceControlComponent.java b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TraceControlComponent.java index cc040534b0..0e6b056696 100644 --- a/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TraceControlComponent.java +++ b/org.eclipse.linuxtools.lttng2.ui/src/org/eclipse/linuxtools/internal/lttng2/ui/views/control/model/impl/TraceControlComponent.java @@ -202,14 +202,14 @@ public class TraceControlComponent implements ITraceControlComponent { } /* - * (non-Javadoc) - * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setChildren(java.util.List) + * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponents#etChildren(java.util.List) */ @Override public void setChildren(List children) { for (Iterator iterator = children.iterator(); iterator.hasNext();) { ITraceControlComponent traceControlComponent = (ITraceControlComponent) iterator.next(); fChildren.add(traceControlComponent); + fireComponentChanged(this); } } -- 2.34.1