Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java')
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java329
1 files changed, 329 insertions, 0 deletions
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java
new file mode 100644
index 000000000..52e2d21b8
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java
@@ -0,0 +1,329 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+/*
+ * Created on Nov 19, 2004
+ */
+package org.eclipse.mylar.tasks.bugzilla.tests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.mylar.core.search.IActiveSearchListener;
+import org.eclipse.mylar.core.tests.support.WorkspaceSetupHelper;
+import org.eclipse.mylar.core.tests.support.search.SearchPluginTestHelper;
+import org.eclipse.mylar.tasks.BugzillaTask;
+import org.eclipse.mylar.tasks.ITask;
+import org.eclipse.mylar.tasks.MylarTasksPlugin;
+import org.eclipse.mylar.tasks.Task;
+import org.eclipse.mylar.tasks.TaskList;
+import org.eclipse.mylar.tasks.BugzillaTask.BugTaskState;
+import org.eclipse.mylar.tasks.bugzilla.BugzillaReportNode;
+import org.eclipse.mylar.tasks.bugzilla.search.BugzillaMylarSearch;
+
+/*TEST CASES TO HANDLE
+ * 1. what is here
+ * 2. different scopes ( local and remote )
+ * 3. no bugs
+ * 4. offline bugs
+ *
+ * DEGREE OF SEPARATIONS
+ * 1 Local bug, qualified reference
+ * 2 local bug, unqualified reference
+ * 3 remote bug, qualified reference
+ * 4 remote bug, unqualified reference
+ * 5 NONE
+ */
+
+/**
+ * Test the bugzilla search functionality of the bridge
+ * @author sminto
+ */
+public class BugzillaSearchPluginTest extends TestCase{
+
+ //SHAWNTODO Add tests for the different types of searches (local qual, local unqual, fully qual, unqual) and mock up a bugs db for testing
+
+ /** The expected number of results when searching for astNode */
+// SHAWNTODO add back in when we have a test server mocked up
+// private static final int NUM_AST_RESULTS = 302;
+//
+// private static final int NUM_AST_SETSOURCERANGE_RESULTS = 15;
+
+ /** list to add collectors to when notified */
+ private List<List<?>> lists = new ArrayList<List<?>>();
+
+ private IType astNodeType;
+
+ @Override
+ protected void setUp() throws Exception {
+ WorkspaceSetupHelper.setupWorkspace();
+ IJavaProject jp = WorkspaceSetupHelper.getJdtCoreDomProject();
+ astNodeType = WorkspaceSetupHelper.getType(jp, "org.eclipse.jdt.core.dom.ASTNode");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ WorkspaceSetupHelper.clearDoiModel();
+ }
+
+ /**
+ * Test adding and removing ISearchCompletedListeners
+ */
+ public void testSearchCompletedListenerAddAndRemove(){
+ lists.clear();
+
+ // create 2 listeners
+ IActiveSearchListener l1 =new IActiveSearchListener() {
+ private boolean gathered = false;
+
+ public void searchCompleted(List<?> l)
+ {
+ lists.add(l);
+ gathered = true;
+ }
+
+ public boolean resultsGathered() {
+ return gathered;
+ }
+ };
+ IActiveSearchListener l2 =new IActiveSearchListener() {
+ private boolean gathered = false;
+
+ public void searchCompleted(List<?> l)
+ {
+ lists.add(l);
+ gathered = true;
+ }
+
+ public boolean resultsGathered() {
+ return gathered;
+ }
+ };
+
+ BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.UNQUAL, astNodeType);
+
+ // add the first listener
+ s.addListener(l1);
+ // remove the first listener
+ s.removeListener(l1);
+
+ // perform the search
+ SearchPluginTestHelper.search(s, l2);
+
+ // make sure that only the second listener added has any results left
+ assertTrue("listener was not removed", lists.size() >= 1 && !l1.resultsGathered());
+ assertTrue("listener was not added", lists.size() == 1);
+
+ // display the time it took for the search
+// System.err.println("Search Took About " + time + " seconds");
+ MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType);
+ }
+
+ /**
+ * Tests that the bridge gets the right data for us
+ * This test is wierd because it waits on results.
+ */
+ public void testBridge() {
+ lists.clear();
+ BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.UNQUAL, astNodeType);
+
+ IActiveSearchListener l = new IActiveSearchListener() {
+ private boolean gathered = false;
+
+ public void searchCompleted(List<?> results)
+ {
+ lists.add(results);
+ gathered = true;
+ }
+
+ public boolean resultsGathered() {
+ return gathered;
+ }
+ };
+
+ // perform the search
+ SearchPluginTestHelper.search(s, l);
+
+ // make sure we got the right number of bugs back
+ assertTrue("No collector returned", lists.size() != 0);
+ List<?> c = lists.get(0);
+ assertTrue("Results not the right size", c.size() > 0); // TODO should be assertEquals on expected size
+
+ // display the time it took for the search and the results returned
+// System.err.println("Search Took About " + time + " seconds");
+// System.err.println(c);
+ MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType);
+
+ }
+
+
+ /**
+ * Tests that the bridge saves the results of a search so that it
+ * can be used later
+ */
+ public void testSaveResults() {
+ lists.clear();
+ BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.UNQUAL, astNodeType);
+
+ IActiveSearchListener l = new IActiveSearchListener() {
+ private boolean gathered = false;
+
+ public void searchCompleted(List<?> results)
+ {
+ lists.add(results);
+ gathered = true;
+ }
+
+ public boolean resultsGathered() {
+ return gathered;
+ }
+ };
+
+ // perform the search
+ SearchPluginTestHelper.search(s, l);
+// System.err.println("Search Took About " + time + " seconds");
+
+ // do an inital search
+ assertTrue("No collectors returned", lists.size() != 0);
+ List<?> c = lists.get(0);
+ assertTrue("Results not the right size", c.size() > 0); // TODO should be assertEquals on expected size
+
+ // check that the search has been saved
+ List<BugzillaReportNode> saved = MylarTasksPlugin.getBridge().getFromLandmarksHash(astNodeType, BugzillaMylarSearch.UNQUAL);
+ assertTrue("Results not cached", saved != null);
+ assertTrue("Results not the right size", saved.size() > 0); // TODO should be assertEquals on expected size
+
+ assertTrue(c.containsAll(saved) && saved.containsAll(c));
+ MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType);
+ }
+
+ public void testLocalBugUnqual() throws InterruptedException {
+ lists.clear();
+
+ String bugPrefix = "Bugzilla-";
+
+ TaskList t = MylarTasksPlugin.getTaskListManager().createNewTaskList();
+ MylarTasksPlugin.getTaskListManager().setTaskList(t);
+ ITask cat = new Task(MylarTasksPlugin.getTaskListManager().genUniqueTaskId(), "Testing Category");
+ t.addRootTask(cat);
+ BugzillaTask bugTask1 = new BugzillaTask(bugPrefix +94185, "<bugzilla info>");
+ cat.addSubtask(bugTask1);
+ while(bugTask1.getState() != BugTaskState.FREE){
+ Thread.sleep(500);
+ }
+ BugzillaTask bugTask2 = new BugzillaTask(bugPrefix + 3692, "<bugzilla info>");
+ bugTask1.addSubtask(bugTask2);
+ while(bugTask2.getState() != BugTaskState.FREE){
+ Thread.sleep(500);
+ }
+ BugzillaTask bugTask3 = new BugzillaTask(bugPrefix + 3693, "<bugzilla info>");
+ cat.addSubtask(bugTask3);
+ while(bugTask3.getState() != BugTaskState.FREE){
+ Thread.sleep(500);
+ }
+
+ BugzillaTask bugTask4 = new BugzillaTask(bugPrefix + 9583, "<bugzilla info>");
+ bugTask3.addSubtask(bugTask4);
+ while(bugTask4.getState() != BugTaskState.FREE){
+ Thread.sleep(500);
+ }
+
+ BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.LOCAL_UNQUAL, astNodeType);
+
+ IActiveSearchListener l = new IActiveSearchListener() {
+ private boolean gathered = false;
+
+ public void searchCompleted(List<?> results)
+ {
+ lists.add(results);
+ gathered = true;
+ }
+
+ public boolean resultsGathered() {
+ return gathered;
+ }
+ };
+
+ // perform the search
+ SearchPluginTestHelper.search(s, l);
+// System.err.println("Search Took About " + time + " seconds");
+
+ // do an inital search
+ assertTrue("No collectors returned", lists.size() != 0);
+ List<?> c = lists.get(0);
+ assertEquals("Results not the right size", 3, c.size());
+
+ MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType);
+ MylarTasksPlugin.getTaskListManager().deleteTask(cat);
+ }
+
+ //TODO need to test a bug that wraps...should fail since we can only search on a single line
+ public void testLocalBugFullyQual() throws InterruptedException{
+ lists.clear();
+
+ String bugPrefix = "Bugzilla-";
+
+
+ TaskList t = MylarTasksPlugin.getTaskListManager().createNewTaskList();
+ MylarTasksPlugin.getTaskListManager().setTaskList(t);
+ ITask cat = new Task(MylarTasksPlugin.getTaskListManager().genUniqueTaskId(), "Testing Category");
+ t.addRootTask(cat);
+ BugzillaTask bugTask1 = new BugzillaTask(bugPrefix + 94185, "<bugzilla info>");
+ cat.addSubtask(bugTask1);
+ while(bugTask1.getState() != BugTaskState.FREE){
+ Thread.sleep(500);
+ }
+
+ BugzillaTask bugTask2 = new BugzillaTask(bugPrefix + 9583, "<bugzilla info>");
+ bugTask1.addSubtask(bugTask2);
+ while(bugTask2.getState() != BugTaskState.FREE){
+ Thread.sleep(500);
+ }
+ BugzillaTask bugTask3 = new BugzillaTask(bugPrefix + 3693, "<bugzilla info>");
+ cat.addSubtask(bugTask3);
+ while(bugTask3.getState() != BugTaskState.FREE){
+ Thread.sleep(500);
+ }
+
+
+ BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.LOCAL_QUAL, astNodeType);
+
+ IActiveSearchListener l = new IActiveSearchListener() {
+ private boolean gathered = false;
+
+ public void searchCompleted(List<?> results)
+ {
+ lists.add(results);
+ gathered = true;
+ }
+
+ public boolean resultsGathered() {
+ return gathered;
+ }
+ };
+
+ // perform the search
+ SearchPluginTestHelper.search(s, l);
+// System.err.println("Search Took About " + time + " seconds");
+
+ // do an inital search
+ assertTrue("No collectors returned", lists.size() != 0);
+ List<?> c = lists.get(0);
+ assertEquals("Results not the right size", 1, c.size());
+
+ MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType);
+ MylarTasksPlugin.getTaskListManager().deleteTask(cat);
+ }
+
+}

Back to the top