diff options
2 files changed, 198 insertions, 217 deletions
diff --git a/org.eclipse.mylyn.sandbox.tests/src/org/eclipse/mylyn/monitor/tests/MultiWindowMonitorTest.java b/org.eclipse.mylyn.sandbox.tests/src/org/eclipse/mylyn/monitor/tests/MultiWindowMonitorTest.java index 6b66146a..0a5397d7 100644 --- a/org.eclipse.mylyn.sandbox.tests/src/org/eclipse/mylyn/monitor/tests/MultiWindowMonitorTest.java +++ b/org.eclipse.mylyn.sandbox.tests/src/org/eclipse/mylyn/monitor/tests/MultiWindowMonitorTest.java @@ -12,29 +12,8 @@ package org.eclipse.mylyn.monitor.tests; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - import junit.framework.TestCase; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.jface.window.WindowManager; -import org.eclipse.mylyn.internal.monitor.ui.IMonitoredWindow; -import org.eclipse.mylyn.internal.monitor.ui.MonitorUiPlugin; -import org.eclipse.mylyn.internal.monitor.usage.InteractionEventLogger; -import org.eclipse.mylyn.internal.monitor.usage.UiUsageMonitorPlugin; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.XMLMemento; -import org.eclipse.ui.internal.IWorkbenchConstants; -import org.eclipse.ui.internal.Workbench; -import org.eclipse.ui.internal.WorkbenchWindow; - /** * @author Brian de Alwis * @author Mik Kersten @@ -42,199 +21,201 @@ import org.eclipse.ui.internal.WorkbenchWindow; */ public class MultiWindowMonitorTest extends TestCase { - private class ContextAwareWorkbenchWindow extends WorkbenchWindow implements IMonitoredWindow { - - private boolean monitored = true; - - public ContextAwareWorkbenchWindow(int number, boolean monitored) { - super(number); - this.monitored = monitored; - } - - public boolean isMonitored() { - return monitored; - } - - public boolean isPerspectiveManaged() { - return false; - } - } - - private class MockWorkbench { - private final Workbench wBench; - - private WindowManager parentManager = null; - - private MockWorkbench() { - wBench = Workbench.getInstance(); - - Field wManagerField; - try { - wManagerField = Workbench.class.getDeclaredField("windowManager"); - wManagerField.setAccessible(true); - parentManager = (WindowManager) wManagerField.get(wBench); - - } catch (Exception e) { - } - } - - private int getNewWindowNumber() { - Window[] windows = parentManager.getWindows(); - int count = windows.length; - - boolean checkArray[] = new boolean[count]; - for (int nX = 0; nX < count; nX++) { - if (windows[nX] instanceof WorkbenchWindow) { - WorkbenchWindow ww = (WorkbenchWindow) windows[nX]; - int index = ww.getNumber() - 1; - if (index >= 0 && index < count) { - checkArray[index] = true; - } - } - } - - for (int index = 0; index < count; index++) { - if (!checkArray[index]) { - return index + 1; - } - } - return count + 1; - } - - private ContextAwareWorkbenchWindow newWorkbenchWindow(boolean isMonitored) { - return new ContextAwareWorkbenchWindow(getNewWindowNumber(), isMonitored); - } - - public ContextAwareWorkbenchWindow restoreState(IMemento memento, boolean isMonitored) { - - ContextAwareWorkbenchWindow newWindow = newWorkbenchWindow(isMonitored); - newWindow.create(); - - parentManager.add(newWindow); - - boolean opened = false; - - try { - newWindow.restoreState(memento, null); - newWindow.open(); - opened = true; - } finally { - if (!opened) { - newWindow.close(); - } - } - - return newWindow; - } - } - - private final InteractionEventLogger logger = UiUsageMonitorPlugin.getDefault().getInteractionLogger(); - - private MockSelectionMonitor selectionMonitor; - - private IWorkbenchWindow window1; - - private IWorkbenchWindow window2; - - private IWorkbenchWindow window3; - - private IWorkbenchWindow window4; - - private boolean monitoringWasEnabled; - - @Override - protected void setUp() throws Exception { - super.setUp(); - selectionMonitor = new MockSelectionMonitor(); - monitoringWasEnabled = UiUsageMonitorPlugin.getDefault().isMonitoringEnabled(); - UiUsageMonitorPlugin.getDefault().stopMonitoring(); - - // make sure the MonitorUiPlugin is fully initialized - while (PlatformUI.getWorkbench().getDisplay().readAndDispatch()) { - } - - window1 = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - assertTrue(MonitorUiPlugin.getDefault().getMonitoredWindows().contains(window1)); - window2 = duplicateWindow(window1); - assertNotNull(window2); - assertTrue(MonitorUiPlugin.getDefault().getMonitoredWindows().contains(window2)); - window3 = createContextAwareWindow(true, window1); - assertNotNull(window3); - assertTrue(MonitorUiPlugin.getDefault().getMonitoredWindows().contains(window3)); - window4 = createContextAwareWindow(false, window1); - assertNotNull(window4); - assertFalse(MonitorUiPlugin.getDefault().getMonitoredWindows().contains(window4)); - } - - @Override - protected void tearDown() throws Exception { - super.tearDown(); - window2.close(); - window3.close(); - window4.close(); - if (monitoringWasEnabled) { - UiUsageMonitorPlugin.getDefault().startMonitoring(); - } - if (selectionMonitor != null) { - selectionMonitor.dispose(); - } - } - - protected void generateSelection(IWorkbenchWindow w) { - selectionMonitor.selectionChanged(w.getActivePage().getActivePart(), new StructuredSelection("yo")); - } - - public void testMultipleWindows() throws IOException { - File monitorFile = UiUsageMonitorPlugin.getDefault().getMonitorLogFile(); - logger.clearInteractionHistory(); - assertEquals(0, logger.getHistoryFromFile(monitorFile).size()); - - generateSelection(window1); - assertEquals(0, logger.getHistoryFromFile(monitorFile).size()); - - UiUsageMonitorPlugin.getDefault().startMonitoring(); - generateSelection(window1); - generateSelection(window2); - generateSelection(window3); - generateSelection(window4); - assertEquals(3, logger.getHistoryFromFile(monitorFile).size()); - } - - protected IWorkbenchWindow duplicateWindow(IWorkbenchWindow window) { - WorkbenchWindow w = (WorkbenchWindow) window; - XMLMemento memento = XMLMemento.createWriteRoot(IWorkbenchConstants.TAG_WINDOW); - IStatus status = w.saveState(memento); - if (!status.isOK()) { - fail("failed to duplicate window: " + status); - } - return restoreWorkbenchWindow((Workbench) w.getWorkbench(), memento); - } - - private IWorkbenchWindow createContextAwareWindow(boolean monitored, IWorkbenchWindow window) { - WorkbenchWindow w = (WorkbenchWindow) window; - XMLMemento memento = XMLMemento.createWriteRoot(IWorkbenchConstants.TAG_WINDOW); - IStatus status = w.saveState(memento); - if (!status.isOK()) { - fail("failed to duplicate window: " + status); - } - return new MockWorkbench().restoreState(memento, monitored); - } - - protected IWorkbenchWindow restoreWorkbenchWindow(Workbench workbench, IMemento memento) { - return (IWorkbenchWindow) invokeMethod(workbench, "restoreWorkbenchWindow", new Class[] { IMemento.class }, - new Object[] { memento }); - } - - protected Object invokeMethod(Object instance, String methodName, Class<?> argTypes[], Object arguments[]) { - Class<?> clas = instance.getClass(); - try { - Method method = clas.getDeclaredMethod(methodName, argTypes); - method.setAccessible(true); - return method.invoke(instance, arguments); - } catch (Exception ex) { - fail("exception during reflective invocation of " + clas.getName() + "." + methodName + ": " + ex); - return null; - } - } + // disabled due to compile errors on Eclipse 4.2 + +// private class ContextAwareWorkbenchWindow extends WorkbenchWindow implements IMonitoredWindow { +// +// private boolean monitored = true; +// +// public ContextAwareWorkbenchWindow(int number, boolean monitored) { +// super(number); +// this.monitored = monitored; +// } +// +// public boolean isMonitored() { +// return monitored; +// } +// +// public boolean isPerspectiveManaged() { +// return false; +// } +// } +// +// private class MockWorkbench { +// private final Workbench wBench; +// +// private WindowManager parentManager = null; +// +// private MockWorkbench() { +// wBench = Workbench.getInstance(); +// +// Field wManagerField; +// try { +// wManagerField = Workbench.class.getDeclaredField("windowManager"); +// wManagerField.setAccessible(true); +// parentManager = (WindowManager) wManagerField.get(wBench); +// +// } catch (Exception e) { +// } +// } +// +// private int getNewWindowNumber() { +// Window[] windows = parentManager.getWindows(); +// int count = windows.length; +// +// boolean checkArray[] = new boolean[count]; +// for (int nX = 0; nX < count; nX++) { +// if (windows[nX] instanceof WorkbenchWindow) { +// WorkbenchWindow ww = (WorkbenchWindow) windows[nX]; +// int index = ww.getNumber() - 1; +// if (index >= 0 && index < count) { +// checkArray[index] = true; +// } +// } +// } +// +// for (int index = 0; index < count; index++) { +// if (!checkArray[index]) { +// return index + 1; +// } +// } +// return count + 1; +// } +// +// private ContextAwareWorkbenchWindow newWorkbenchWindow(boolean isMonitored) { +// return new ContextAwareWorkbenchWindow(getNewWindowNumber(), isMonitored); +// } +// +// public ContextAwareWorkbenchWindow restoreState(IMemento memento, boolean isMonitored) { +// +// ContextAwareWorkbenchWindow newWindow = newWorkbenchWindow(isMonitored); +// newWindow.create(); +// +// parentManager.add(newWindow); +// +// boolean opened = false; +// +// try { +// newWindow.restoreState(memento, null); +// newWindow.open(); +// opened = true; +// } finally { +// if (!opened) { +// newWindow.close(); +// } +// } +// +// return newWindow; +// } +// } +// +// private final InteractionEventLogger logger = UiUsageMonitorPlugin.getDefault().getInteractionLogger(); +// +// private MockSelectionMonitor selectionMonitor; +// +// private IWorkbenchWindow window1; +// +// private IWorkbenchWindow window2; +// +// private IWorkbenchWindow window3; +// +// private IWorkbenchWindow window4; +// +// private boolean monitoringWasEnabled; +// +// @Override +// protected void setUp() throws Exception { +// super.setUp(); +// selectionMonitor = new MockSelectionMonitor(); +// monitoringWasEnabled = UiUsageMonitorPlugin.getDefault().isMonitoringEnabled(); +// UiUsageMonitorPlugin.getDefault().stopMonitoring(); +// +// // make sure the MonitorUiPlugin is fully initialized +// while (PlatformUI.getWorkbench().getDisplay().readAndDispatch()) { +// } +// +// window1 = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); +// assertTrue(MonitorUiPlugin.getDefault().getMonitoredWindows().contains(window1)); +// window2 = duplicateWindow(window1); +// assertNotNull(window2); +// assertTrue(MonitorUiPlugin.getDefault().getMonitoredWindows().contains(window2)); +// window3 = createContextAwareWindow(true, window1); +// assertNotNull(window3); +// assertTrue(MonitorUiPlugin.getDefault().getMonitoredWindows().contains(window3)); +// window4 = createContextAwareWindow(false, window1); +// assertNotNull(window4); +// assertFalse(MonitorUiPlugin.getDefault().getMonitoredWindows().contains(window4)); +// } +// +// @Override +// protected void tearDown() throws Exception { +// super.tearDown(); +// window2.close(); +// window3.close(); +// window4.close(); +// if (monitoringWasEnabled) { +// UiUsageMonitorPlugin.getDefault().startMonitoring(); +// } +// if (selectionMonitor != null) { +// selectionMonitor.dispose(); +// } +// } +// +// protected void generateSelection(IWorkbenchWindow w) { +// selectionMonitor.selectionChanged(w.getActivePage().getActivePart(), new StructuredSelection("yo")); +// } +// +// public void testMultipleWindows() throws IOException { +// File monitorFile = UiUsageMonitorPlugin.getDefault().getMonitorLogFile(); +// logger.clearInteractionHistory(); +// assertEquals(0, logger.getHistoryFromFile(monitorFile).size()); +// +// generateSelection(window1); +// assertEquals(0, logger.getHistoryFromFile(monitorFile).size()); +// +// UiUsageMonitorPlugin.getDefault().startMonitoring(); +// generateSelection(window1); +// generateSelection(window2); +// generateSelection(window3); +// generateSelection(window4); +// assertEquals(3, logger.getHistoryFromFile(monitorFile).size()); +// } +// +// protected IWorkbenchWindow duplicateWindow(IWorkbenchWindow window) { +// WorkbenchWindow w = (WorkbenchWindow) window; +// XMLMemento memento = XMLMemento.createWriteRoot(IWorkbenchConstants.TAG_WINDOW); +// IStatus status = w.saveState(memento); +// if (!status.isOK()) { +// fail("failed to duplicate window: " + status); +// } +// return restoreWorkbenchWindow((Workbench) w.getWorkbench(), memento); +// } +// +// private IWorkbenchWindow createContextAwareWindow(boolean monitored, IWorkbenchWindow window) { +// WorkbenchWindow w = (WorkbenchWindow) window; +// XMLMemento memento = XMLMemento.createWriteRoot(IWorkbenchConstants.TAG_WINDOW); +// IStatus status = w.saveState(memento); +// if (!status.isOK()) { +// fail("failed to duplicate window: " + status); +// } +// return new MockWorkbench().restoreState(memento, monitored); +// } +// +// protected IWorkbenchWindow restoreWorkbenchWindow(Workbench workbench, IMemento memento) { +// return (IWorkbenchWindow) invokeMethod(workbench, "restoreWorkbenchWindow", new Class[] { IMemento.class }, +// new Object[] { memento }); +// } +// +// protected Object invokeMethod(Object instance, String methodName, Class<?> argTypes[], Object arguments[]) { +// Class<?> clas = instance.getClass(); +// try { +// Method method = clas.getDeclaredMethod(methodName, argTypes); +// method.setAccessible(true); +// return method.invoke(instance, arguments); +// } catch (Exception ex) { +// fail("exception during reflective invocation of " + clas.getName() + "." + methodName + ": " + ex); +// return null; +// } +// } } diff --git a/org.eclipse.mylyn.sandbox.tests/src/org/eclipse/mylyn/sandbox/tests/AllSandboxTests.java b/org.eclipse.mylyn.sandbox.tests/src/org/eclipse/mylyn/sandbox/tests/AllSandboxTests.java index 77c5f4e3..e2622f6c 100644 --- a/org.eclipse.mylyn.sandbox.tests/src/org/eclipse/mylyn/sandbox/tests/AllSandboxTests.java +++ b/org.eclipse.mylyn.sandbox.tests/src/org/eclipse/mylyn/sandbox/tests/AllSandboxTests.java @@ -19,7 +19,6 @@ import org.eclipse.mylyn.monitor.tests.InteractionEventExternalizationTest; import org.eclipse.mylyn.monitor.tests.InteractionLoggerTest; import org.eclipse.mylyn.monitor.tests.MonitorPackagingTest; import org.eclipse.mylyn.monitor.tests.MonitorTest; -import org.eclipse.mylyn.monitor.tests.MultiWindowMonitorTest; import org.eclipse.mylyn.monitor.tests.StatisticsLoggingTest; import org.eclipse.mylyn.monitor.usage.tests.AllMonitorUsageTests; import org.eclipse.mylyn.tasks.tests.web.HtmlDecodeEntityTest; @@ -59,7 +58,8 @@ public class AllSandboxTests { suite.addTestSuite(MonitorTest.class); suite.addTestSuite(InteractionEventExternalizationTest.class); suite.addTestSuite(MonitorPackagingTest.class); - suite.addTestSuite(MultiWindowMonitorTest.class); + // disabled due to compile errors on Eclipse 4.2 + //suite.addTestSuite(MultiWindowMonitorTest.class); return suite; } |