Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(562)

Unified Diff: editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/AnalysisServerTest.java

Issue 10809037: Fix library scan of loose files (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/AnalysisServerTest.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/AnalysisServerTest.java (revision 9776)
+++ editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/AnalysisServerTest.java (working copy)
@@ -21,6 +21,11 @@
import com.google.dart.tools.core.test.util.FileUtilities;
import com.google.dart.tools.core.test.util.TestUtilities;
+import static com.google.dart.tools.core.analysis.AnalysisTestUtilities.assertQueuedTasks;
+import static com.google.dart.tools.core.analysis.AnalysisTestUtilities.assertTrackedLibraryFiles;
+import static com.google.dart.tools.core.analysis.AnalysisTestUtilities.getServerTaskQueue;
+import static com.google.dart.tools.core.analysis.AnalysisTestUtilities.getTrackedLibraryFiles;
+
import junit.framework.TestCase;
import org.junit.Assert;
@@ -34,8 +39,6 @@
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.HashSet;
import java.util.Set;
public class AnalysisServerTest extends TestCase {
@@ -46,7 +49,6 @@
private static final long FIVE_MINUTES_MS = 300000;
private AnalysisServer server;
- private AnalysisServer defaultServer;
private Listener listener;
public void test_analyzeLibrary() throws Exception {
@@ -61,14 +63,14 @@
public File test_analyzeLibrary(File tempDir) throws Exception, InterruptedException {
File libFile = setupMoneyLibrary(tempDir);
setupServer();
- assertTrackedLibraryFiles();
+ assertTrackedLibraryFiles(server);
server.analyze(libFile);
listener.waitForResolved(FIVE_MINUTES_MS, libFile);
listener.assertResolvedCount(3);
listener.assertNoDuplicates();
listener.assertNoDiscards();
- assertTrackedLibraryFiles(libFile);
+ assertTrackedLibraryFiles(server, libFile);
assertTrue(isLibraryResolved(libFile));
return libFile;
}
@@ -108,21 +110,21 @@
public File test_discardLib(File tempDir, boolean discardParent) throws Exception {
File libFile = test_analyzeLibrary(tempDir);
- assertTrackedLibraryFiles(libFile);
+ assertTrackedLibraryFiles(server, libFile);
listener.reset();
server.discard(discardParent ? libFile.getParentFile() : libFile);
listener.waitForDiscarded(FIVE_MINUTES_MS, libFile);
listener.assertResolvedCount(0);
listener.assertNoDuplicates();
- assertTrackedLibraryFiles();
+ assertTrackedLibraryFiles(server);
assertFalse(isLibraryCached(libFile));
listener.reset();
// Use blocking task to ensure we can add 2 tasks to the queue without being processed
BlockingTask blockingTask = new BlockingTask();
- getServerTaskQueue().addNewTask(blockingTask);
+ getServerTaskQueue(server).addNewTask(blockingTask);
// The discard task should prevent the analysis task from being executed
server.analyze(libFile);
@@ -133,7 +135,7 @@
listener.assertResolvedCount(0);
listener.assertNoDuplicates();
listener.assertNoDiscards();
- assertTrackedLibraryFiles();
+ assertTrackedLibraryFiles(server);
assertFalse(isLibraryCached(libFile));
return libFile;
@@ -179,60 +181,60 @@
public void test_read_analyzeContext() throws Exception {
initServer(new StringReader(
"v3\none\n</end-libraries>\n</end-cache>\nAnalyzeContextTask\n</end-queue>"));
- File[] trackedLibraryFiles = getTrackedLibraryFiles();
+ File[] trackedLibraryFiles = getTrackedLibraryFiles(server);
assertEquals(1, trackedLibraryFiles.length);
assertEquals("one", trackedLibraryFiles[0].getName());
- assertQueuedTasks("AnalyzeContextTask");
+ assertQueuedTasks(server, "AnalyzeContextTask");
}
public void test_read_analyzeLibrary() throws Exception {
initServer(new StringReader("v3\none\n</end-libraries>\n</end-cache>\none\n</end-queue>"));
- File[] trackedLibraryFiles = getTrackedLibraryFiles();
+ File[] trackedLibraryFiles = getTrackedLibraryFiles(server);
assertEquals(1, trackedLibraryFiles.length);
assertEquals("one", trackedLibraryFiles[0].getName());
- assertQueuedTasks("AnalyzeLibraryTask");
+ assertQueuedTasks(server, "AnalyzeLibraryTask");
}
public void test_read_empty() throws Exception {
initServer(new StringReader(EMPTY_CACHE_CONTENT));
- assertEquals(0, getTrackedLibraryFiles().length);
- assertQueuedTasks("AnalyzeLibraryTask");
+ assertEquals(0, getTrackedLibraryFiles(server).length);
+ assertQueuedTasks(server, "AnalyzeLibraryTask");
}
public void test_read_empty_v1() throws Exception {
initServer(new StringReader("v1\n</end-libraries>\nsome-stuff"));
- assertEquals(0, getTrackedLibraryFiles().length);
- assertQueuedTasks("AnalyzeContextTask");
+ assertEquals(0, getTrackedLibraryFiles(server).length);
+ assertQueuedTasks(server, "AnalyzeContextTask");
}
public void test_read_empty_v2() throws Exception {
initServer(new StringReader("v2\n</end-libraries>\n</end-cache>"));
- assertEquals(0, getTrackedLibraryFiles().length);
- assertQueuedTasks("AnalyzeContextTask");
+ assertEquals(0, getTrackedLibraryFiles(server).length);
+ assertQueuedTasks(server, "AnalyzeContextTask");
}
public void test_read_one() throws Exception {
initServer(new StringReader("v3\none\n</end-libraries>\n</end-cache>\n</end-queue>"));
- File[] trackedLibraryFiles = getTrackedLibraryFiles();
+ File[] trackedLibraryFiles = getTrackedLibraryFiles(server);
assertEquals(1, trackedLibraryFiles.length);
assertEquals("one", trackedLibraryFiles[0].getName());
- assertQueuedTasks("AnalyzeLibraryTask");
+ assertQueuedTasks(server, "AnalyzeLibraryTask");
}
public void test_read_one_v1() throws Exception {
initServer(new StringReader("v1\none\n</end-libraries>\nsome-stuff"));
- File[] trackedLibraryFiles = getTrackedLibraryFiles();
+ File[] trackedLibraryFiles = getTrackedLibraryFiles(server);
assertEquals(1, trackedLibraryFiles.length);
assertEquals("one", trackedLibraryFiles[0].getName());
- assertQueuedTasks("AnalyzeContextTask");
+ assertQueuedTasks(server, "AnalyzeContextTask");
}
public void test_read_one_v2() throws Exception {
initServer(new StringReader("v2\none\n</end-libraries>\n</end-cache>"));
- File[] trackedLibraryFiles = getTrackedLibraryFiles();
+ File[] trackedLibraryFiles = getTrackedLibraryFiles(server);
assertEquals(1, trackedLibraryFiles.length);
assertEquals("one", trackedLibraryFiles[0].getName());
- assertQueuedTasks("AnalyzeContextTask");
+ assertQueuedTasks(server, "AnalyzeContextTask");
}
public void test_read_version_invalid() throws Exception {
@@ -257,95 +259,13 @@
}
}
- public void test_scan() throws Exception {
- TestUtilities.runWithTempDirectory(new FileOperation() {
- @Override
- public void run(File tempDir) throws Exception {
- File libFile = setupMoneyLibrary(tempDir);
- setupServer();
- assertTrackedLibraryFiles();
-
- listener.reset();
- server.scan(libFile, true);
- listener.waitForResolved(FIVE_MINUTES_MS, libFile);
- assertTrackedLibraryFiles(libFile);
- listener.assertResolvedCount(3);
- listener.assertNoDuplicates();
- listener.assertNoDiscards();
- }
- });
- }
-
- public void test_scanAndIndex() throws Exception {
- TestUtilities.runWithTempDirectory(new FileOperation() {
- @Override
- public void run(File tempDir) throws Exception {
- File libFile = setupMoneyLibrary(tempDir);
- File sourcedFile = new File(libFile.getParent(), "currency.dart");
- setupServer();
- assertTrackedLibraryFiles();
-
- // final InMemoryIndex index = InMemoryIndex.newInstanceForTesting();
- // new Thread(getClass().getSimpleName() + " scanAndIndex") {
- // @Override
- // public void run() {
- // index.getOperationProcessor().run();
- // };
- // }.start();
- // server.addAnalysisListener(new AnalysisIndexManager(index));
- // assertEquals(0, index.getRelationshipCount());
- //
- // Resource libResource = new Resource(composeResourceId(
- // libFile.toURI().toString(),
- // libFile.toURI().toString()));
- // libElement = new Element(libResource, "#library");
-
- listener.reset();
- server.scan(tempDir, true);
- listener.waitForResolved(FIVE_MINUTES_MS, libFile);
- assertTrackedLibraryFiles(libFile);
- listener.assertResolvedCount(3);
- listener.assertNoDuplicates();
- listener.assertNoDiscards();
-
- listener.reset();
- server.scan(sourcedFile, true);
- waitForIdle();
- assertTrackedLibraryFiles(libFile);
- listener.assertResolvedCount(0);
- listener.assertNoDuplicates();
- listener.assertNoDiscards();
- }
- });
- }
-
- public void test_stop() throws Exception {
- TestUtilities.runWithTempDirectory(new FileOperation() {
- @Override
- public void run(File tempDir) throws Exception {
- File libFile = setupMoneyLibrary(tempDir);
- setupServer();
-
- server.getSavedContext().resolve(libFile, FIVE_MINUTES_MS);
- server.stop();
-
- assertTrue(server.waitForIdle(FIVE_MINUTES_MS));
- listener.waitForIdle(FIVE_MINUTES_MS);
-
- assertQueuedTasks();
- server.getSavedContext().resolve(libFile, null);
- assertQueuedTasks("AnalyzeLibraryTask");
- }
- });
- }
-
public void test_write_1() throws Exception {
final String libraryFileName1 = "myLibrary.dart";
final String libraryFileName2 = "someOtherAbcLibrary.dart";
initServer(null);
server.analyze(new File(libraryFileName1).getAbsoluteFile());
- assertQueuedTasks("AnalyzeContextTask");
+ assertQueuedTasks(server, "AnalyzeContextTask");
synchronized (getServerTaskQueueLock()) {
server.start();
server.stop();
@@ -361,7 +281,7 @@
public void test_write_empty() throws Exception {
initServer(null);
- assertQueuedTasks();
+ assertQueuedTasks(server);
StringWriter writer = new StringWriter(5000);
writeCache(writer);
Assert.assertEquals(EMPTY_CACHE_CONTENT, writer.toString());
@@ -374,7 +294,7 @@
File libFile = test_analyzeLibrary(tempDir);
waitForIdle();
- assertQueuedTasks();
+ assertQueuedTasks(server);
StringWriter writer = new StringWriter(5000);
server.stop();
@@ -384,14 +304,14 @@
writeCache(writer);
initServer(new StringReader(writer.toString()));
- assertQueuedTasks("AnalyzeLibraryTask", "AnalyzeLibraryTask"); // someFile, otherFile
+ assertQueuedTasks(server, "AnalyzeLibraryTask", "AnalyzeLibraryTask"); // someFile, otherFile
server.start();
waitForIdle();
- assertTrackedLibraryFiles(libFile);
+ assertTrackedLibraryFiles(server, libFile);
assertTrue(isLibraryCached(libFile));
assertFalse(isLibraryResolved(libFile));
- assertQueuedTasks();
+ assertQueuedTasks(server);
}
});
}
@@ -402,7 +322,7 @@
public void run(File tempDir) throws Exception {
File libFile = setupMoneyLibrary(tempDir);
setupServer();
- assertTrackedLibraryFiles();
+ assertTrackedLibraryFiles(server);
String contents = FileUtilities.getContents(libFile);
String libraryDirective = "#library(\"Money\");";
@@ -423,7 +343,7 @@
server.analyze(libFile);
listener.waitForResolved(FIVE_MINUTES_MS, libFile);
- assertTrackedLibraryFiles(libFile);
+ assertTrackedLibraryFiles(server, libFile);
assertTrue(isLibraryResolved(libFile));
StringWriter writer = new StringWriter(5000);
@@ -432,8 +352,8 @@
initServer(new StringReader(writer.toString()));
- assertQueuedTasks("AnalyzeLibraryTask"); // dart:core
- assertTrackedLibraryFiles(libFile);
+ assertQueuedTasks(server, "AnalyzeLibraryTask"); // dart:core
+ assertTrackedLibraryFiles(server, libFile);
assertTrue(isLibraryCached(libFile));
assertFalse(isLibraryResolved(libFile));
}
@@ -482,43 +402,11 @@
@Override
protected void tearDown() throws Exception {
- if (server != null && server != defaultServer) {
+ if (server != null) {
server.stop();
}
}
- private void assertNoTopDeclaration(DartUnit unit) {
- assertNotNull(unit);
- Set<String> actualNames = unit.getTopDeclarationNames();
- if (actualNames.size() != 0) {
- fail("Expected no top level declarations, but found " + actualNames);
- }
- }
-
- private void assertQueuedTasks(String... expectedTaskNames) throws Exception {
- Task[] actualTasks = getServerTaskQueue().getTasks();
- int index = 0;
- for (String name : expectedTaskNames) {
- if (index >= actualTasks.length) {
- fail("Expected task(" + index + ") to be " + name + ", but end of queue");
- }
- String taskClassName = actualTasks[index].getClass().getSimpleName();
- if (!name.equals(taskClassName)) {
- fail("Expected task(" + index + ") to be " + name + ", but found " + taskClassName);
- }
- index++;
- }
- if (index < actualTasks.length) {
- String message = "Expected " + expectedTaskNames.length + " tasks, but found "
- + actualTasks.length;
- while (index < actualTasks.length) {
- message += "\n " + actualTasks[index].getClass().getSimpleName();
- index++;
- }
- fail(message);
- }
- }
-
private void assertTopDeclarationExists(DartUnit unit, String expectedName) {
assertNotNull(unit);
Set<String> actualNames = unit.getTopDeclarationNames();
@@ -527,55 +415,13 @@
}
}
- private void assertTrackedLibraryFiles(File... expected) throws Exception {
- File[] actual = getTrackedLibraryFiles();
- if (actual.length == expected.length) {
- HashSet<File> files = new HashSet<File>();
- files.addAll(Arrays.asList(actual));
- if (actual.length == files.size()) {
- for (File file : expected) {
- if (!files.remove(file)) {
- break;
- }
- }
- }
- if (files.size() == 0) {
- return;
- }
- }
- String msg = "Expected:";
- for (File file : expected) {
- msg += "\n " + file;
- }
- msg += "\nbut found:";
- for (File file : actual) {
- msg += "\n " + file;
- }
- fail(msg);
- }
-
- @SuppressWarnings("unchecked")
- private TaskQueue getServerTaskQueue() throws Exception {
- Field field = server.getClass().getDeclaredField("queue");
- field.setAccessible(true);
- return (TaskQueue) field.get(server);
- }
-
- @SuppressWarnings("unchecked")
private Object getServerTaskQueueLock() throws Exception {
- TaskQueue queue = getServerTaskQueue();
+ TaskQueue queue = getServerTaskQueue(server);
Field field = queue.getClass().getDeclaredField("queue");
field.setAccessible(true);
return field.get(queue);
}
- private File[] getTrackedLibraryFiles() throws Exception {
- Method method = server.getClass().getDeclaredMethod("getTrackedLibraryFiles");
- method.setAccessible(true);
- Object result = method.invoke(server);
- return (File[]) result;
- }
-
private void initServer(Reader reader) throws Exception {
EditorLibraryManager libraryManager = SystemLibraryManagerProvider.getAnyLibraryManager();
server = new AnalysisServer(libraryManager);
@@ -610,13 +456,6 @@
}
}
- private void setupDefaultServer() throws Exception {
- defaultServer = SystemLibraryManagerProvider.getDefaultAnalysisServer();
- server = defaultServer;
- listener = new Listener(server);
- waitForIdle();
- }
-
private File setupMoneyLibrary(File tempDir) throws IOException {
File targetDir = new File(tempDir, TEST_CLASS_SIMPLE_NAME);
TestUtilities.copyPluginRelativeContent("Money", targetDir);

Powered by Google App Engine
This is Rietveld 408576698