ASSIGNED - bug 298688: [context] support ant filters for resource monitoring exclusions
https://bugs.eclipse.org/bugs/show_bug.cgi?id=298688
diff --git a/org.eclipse.mylyn.tests.performance/META-INF/MANIFEST.MF b/org.eclipse.mylyn.tests.performance/META-INF/MANIFEST.MF
index 95532bb..f7b59e6 100644
--- a/org.eclipse.mylyn.tests.performance/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.tests.performance/META-INF/MANIFEST.MF
@@ -14,6 +14,7 @@
  org.eclipse.mylyn.commons.ui,
  org.eclipse.mylyn.tasks.core,
  org.eclipse.mylyn.tasks.ui,
+ org.eclipse.mylyn.resources.ui,
  org.eclipse.mylyn.tasks.tests
 Bundle-ClassPath: .
 Export-Package: org.eclipse.mylyn.tasks.tests.performance;x-internal:=true,
diff --git a/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/resources/tests/performance/ResourceChangeMonitorPerformanceTest.java b/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/resources/tests/performance/ResourceChangeMonitorPerformanceTest.java
new file mode 100644
index 0000000..d9377fc
--- /dev/null
+++ b/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/resources/tests/performance/ResourceChangeMonitorPerformanceTest.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Tasktop Technologies 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:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.resources.tests.performance;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.mylyn.internal.resources.ui.ResourceChangeMonitor;
+import org.eclipse.mylyn.tests.performance.PerformanceConstants;
+import org.eclipse.mylyn.tests.performance.support.CommonTestUtil;
+import org.eclipse.test.performance.PerformanceTestCase;
+
+/**
+ * @author Shawn Minto
+ */
+public class ResourceChangeMonitorPerformanceTest extends PerformanceTestCase {
+
+	private Set<IPath> paths;
+
+	private Set<String> excludedPatterns;
+
+	@Override
+	protected void setUp() throws Exception {
+		super.setUp();
+		excludedPatterns = new HashSet<String>();
+		excludedPatterns.add(ResourceChangeMonitor.createRegexFromPattern("*.class"));
+		excludedPatterns.add(ResourceChangeMonitor.createRegexFromPattern("*.tmp"));
+		excludedPatterns.add(ResourceChangeMonitor.createRegexFromPattern("~*"));
+		excludedPatterns.add(ResourceChangeMonitor.createRegexFromPattern(".*"));
+		excludedPatterns.add(ResourceChangeMonitor.createRegexFromPattern("generated"));
+
+		paths = new HashSet<IPath>();
+		File pathFile = CommonTestUtil.getFile(ResourceChangeMonitorPerformanceTest.class,
+				"resourceExclusionTestPaths.txt");
+		assertNotNull(pathFile);
+
+		BufferedReader br = null;
+		try {
+			br = new BufferedReader(new FileReader(pathFile));
+			String line;
+			while ((line = br.readLine()) != null) {
+				paths.add(new Path(line));
+			}
+		} finally {
+			if (br != null) {
+				br.close();
+			}
+		}
+		assertFalse(paths.isEmpty());
+
+	}
+
+	public void testIsExcluded() {
+
+		for (int i = 0; i < PerformanceConstants.REPEAT; i++) {
+			startMeasuring();
+			boolean excluded = false;
+			for (IPath path : paths) {
+				excluded |= ResourceChangeMonitor.isExcluded(path, null, excludedPatterns);
+			}
+			assertTrue(excluded);
+
+			stopMeasuring();
+		}
+
+		commitMeasurements();
+		assertPerformance();
+	}
+
+}
diff --git a/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/tests/performance/AllPerformanceTests.java b/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/tests/performance/AllPerformanceTests.java
index 1da9cf7..a275224 100644
--- a/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/tests/performance/AllPerformanceTests.java
+++ b/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/tests/performance/AllPerformanceTests.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2008 Tasktop Technologies and others.
+ * Copyright (c) 2004, 2009 Tasktop Technologies 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
@@ -22,6 +22,7 @@
 	public static Test suite() {
 		TestSuite suite = new TestSuite("Performance tests for org.eclipse.mylyn.tests.performance");
 		suite.addTest(AllTasksPerformanceTests.suite());
+		suite.addTest(AllResourcesPerformanceTests.suite());
 		return suite;
 	}
 
diff --git a/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/tests/performance/AllResourcesPerformanceTests.java b/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/tests/performance/AllResourcesPerformanceTests.java
new file mode 100644
index 0000000..a1e7811
--- /dev/null
+++ b/org.eclipse.mylyn.tests.performance/src/org/eclipse/mylyn/tests/performance/AllResourcesPerformanceTests.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Tasktop Technologies 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:
+ *     Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.tests.performance;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.mylyn.resources.tests.performance.ResourceChangeMonitorPerformanceTest;
+
+/**
+ * @author Shawn Minto
+ */
+public class AllResourcesPerformanceTests {
+	public static Test suite() {
+		TestSuite suite = new TestSuite("Test for org.eclipse.mylyn.resources.tests.performance");
+		suite.addTestSuite(ResourceChangeMonitorPerformanceTest.class);
+		return suite;
+	}
+}