Revision: 5910 Author: [email protected] Date: Thu Aug 6 16:38:05 2009 Log: Rolling back r5906 due to a build failure.
http://code.google.com/p/google-web-toolkit/source/detail?r=5910 Deleted: /trunk/user/test/com/google/gwt/dev/jjs/RunAsyncMetricsIntegrationTest.gwt.xml /trunk/user/test/com/google/gwt/dev/jjs/test/RunAsyncMetricsIntegrationTest.java Modified: /trunk/user/src/com/google/gwt/core/client/impl/AsyncFragmentLoader.java /trunk/user/test/com/google/gwt/core/client/impl/AsyncFragmentLoaderTest.java /trunk/user/test/com/google/gwt/dev/jjs/CompilerSuite.java ======================================= --- /trunk/user/test/com/google/gwt/dev/jjs/RunAsyncMetricsIntegrationTest.gwt.xml Thu Aug 6 13:55:18 2009 +++ /dev/null @@ -1,17 +0,0 @@ -<!-- --> -<!-- Copyright 2009 Google Inc. --> -<!-- Licensed under the Apache License, Version 2.0 (the "License"); you --> -<!-- may not use this file except in compliance with the License. You may --> -<!-- may obtain a copy of the License at --> -<!-- --> -<!-- http://www.apache.org/licenses/LICENSE-2.0 --> -<!-- --> -<!-- Unless required by applicable law or agreed to in writing, software --> -<!-- distributed under the License is distributed on an "AS IS" BASIS, --> -<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or --> -<!-- implied. License for the specific language governing permissions and --> -<!-- limitations under the License. --> - -<module> - <inherits name="com.google.gwt.dev.jjs.CompilerSuite"/> -</module> ======================================= --- /trunk/user/test/com/google/gwt/dev/jjs/test/RunAsyncMetricsIntegrationTest.java Thu Aug 6 13:55:18 2009 +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.google.gwt.dev.jjs.test; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.core.client.JavaScriptObject; -import com.google.gwt.core.client.RunAsyncCallback; -import com.google.gwt.junit.client.GWTTestCase; -import com.google.gwt.user.client.Command; -import com.google.gwt.user.client.DeferredCommand; - -import java.util.LinkedList; -import java.util.Queue; - -/** - * A simple test that the - * {...@link GWT#runAsync(com.google.gwt.core.client.RunAsyncCallback) runAsync} - * lightweight metrics make it all the way out to the JavaScript LWM system. A - * number of more detailed tests are in - * {...@link com.google.gwt.core.client.impl.AsyncFragmentLoaderTest}. - */ -public class RunAsyncMetricsIntegrationTest extends GWTTestCase { - private static final class LightweightMetricsEvent extends JavaScriptObject { - protected LightweightMetricsEvent() { - } - - public native String getEvtGroup() /*-{ - return this.evtGroup; - }-*/; - - public native int getFragment() /*-{ - return this.fragment; - }-*/; - - public native int getMillis() /*-{ - return this.millis; - }-*/; - - public native String getModuleName() /*-{ - return this.moduleName; - }-*/; - - public native int getSize() /*-{ - return this.size; - }-*/; - - public native String getSubSystem() /*-{ - return this.subSystem; - }-*/; - - public native String getType() /*-{ - return this.type; - }-*/; - } - - private static class LightweightMetricsObserver { - public final Queue<LightweightMetricsEvent> events = new LinkedList<LightweightMetricsEvent>(); - @SuppressWarnings("unused") - private JavaScriptObject previousObserver; - - /** - * Install this observer and start watching events. - */ - public native void install() /*-{ - var self = this; - th...@com.google.gwt.dev.jjs.test.runasyncmetricsintegrationtest.lightweightmetricsobserver::previousObserver - = $stats; - $stats = function(evt) { - se...@com.google.gwt.dev.jjs.test.runasyncmetricsintegrationtest.lightweightmetricsobserver::recordEvent(Lcom/google/gwt/dev/jjs/test/RunAsyncMetricsIntegrationTest$LightweightMetricsEvent;)(evt); - } - }-*/; - - /** - * No more to do; uninstall this observer. - */ - public native void uninstall() /*-{ - $stats = th...@com.google.gwt.dev.jjs.test.runasyncmetricsintegrationtest.lightweightmetricsobserver::previousObserver - }-*/; - - @SuppressWarnings("unused") - private void recordEvent(LightweightMetricsEvent event) { - if (event.getSubSystem().equals("runAsync")) { - events.add(event); - } - } - } - - private static final int TIMEOUT = 10000; - - private final LightweightMetricsObserver lwmObserver = new LightweightMetricsObserver(); - - @Override - public String getModuleName() { - return "com.google.gwt.dev.jjs.RunAsyncMetricsIntegrationTest"; - } - - @Override - public void gwtSetUp() { - lwmObserver.events.clear(); - lwmObserver.install(); - } - - @Override - public void gwtTearDown() { - lwmObserver.uninstall(); - } - - public void testMetricsSignalled() { - if (!GWT.isScript()) { - // There are no runAsync lightweight metrics in hosted mode - return; - } - delayTestFinish(TIMEOUT); - GWT.runAsync(new RunAsyncCallback() { - public void onFailure(Throwable reason) { - fail(); - } - - public void onSuccess() { - DeferredCommand.addCommand(new Command() { - - public void execute() { - checkMetrics(); - finishTest(); - } - - }); - } - }); - } - - /** - * This should be called after a runAsync has been called and completed. It - * checks that all lightweight metrics have occurred and are well formatted. - */ - private void checkMetrics() { - int lastMillis; - - { - LightweightMetricsEvent event = lwmObserver.events.remove(); - assertEquals(getJunitModuleName(), event.getModuleName()); - assertEquals("leftoversDownload", event.getEvtGroup()); - assertEquals("begin", event.getType()); - assertEquals(2, event.getFragment()); - assertTrue(event.getMillis() != 0); - lastMillis = event.getMillis(); - } - { - LightweightMetricsEvent event = lwmObserver.events.remove(); - assertEquals(getJunitModuleName(), event.getModuleName()); - assertEquals("leftoversDownload", event.getEvtGroup()); - assertEquals("end", event.getType()); - assertEquals(2, event.getFragment()); - assertTrue(event.getMillis() >= lastMillis); - lastMillis = event.getMillis(); - } - { - LightweightMetricsEvent event = lwmObserver.events.remove(); - assertEquals(getJunitModuleName(), event.getModuleName()); - assertEquals("download1", event.getEvtGroup()); - assertEquals("begin", event.getType()); - assertEquals(1, event.getFragment()); - assertTrue(event.getMillis() >= lastMillis); - lastMillis = event.getMillis(); - } - { - LightweightMetricsEvent event = lwmObserver.events.remove(); - assertEquals(getJunitModuleName(), event.getModuleName()); - assertEquals("download1", event.getEvtGroup()); - assertEquals("end", event.getType()); - assertEquals(1, event.getFragment()); - assertTrue(event.getMillis() >= lastMillis); - lastMillis = event.getMillis(); - } - { - LightweightMetricsEvent event = lwmObserver.events.remove(); - assertEquals(getJunitModuleName(), event.getModuleName()); - assertEquals("runCallbacks1", event.getEvtGroup()); - assertEquals("begin", event.getType()); - assertTrue(event.getMillis() >= lastMillis); - lastMillis = event.getMillis(); - } - { - LightweightMetricsEvent event = lwmObserver.events.remove(); - assertEquals(getJunitModuleName(), event.getModuleName()); - assertEquals("runCallbacks1", event.getEvtGroup()); - assertEquals("end", event.getType()); - assertTrue(event.getMillis() >= lastMillis); - lastMillis = event.getMillis(); - } - - assertTrue(lwmObserver.events.isEmpty()); - } - - private String getJunitModuleName() { - return getModuleName() + ".JUnit"; - } -} ======================================= --- /trunk/user/src/com/google/gwt/core/client/impl/AsyncFragmentLoader.java Thu Aug 6 13:55:18 2009 +++ /trunk/user/src/com/google/gwt/core/client/impl/AsyncFragmentLoader.java Thu Aug 6 16:38:05 2009 @@ -101,7 +101,7 @@ private static final String LEFTOVERS_DOWNLOAD = "leftoversDownload"; - private static String downloadGroupForExclusive(int splitPoint) { + private static String downloadGroup(int splitPoint) { return "download" + splitPoint; } } @@ -445,7 +445,8 @@ * The initial fragments has loaded. Immediately start loading the * requested code. */ - logDownloadStart(splitPoint); + logEventProgress(LwmLabels.downloadGroup(splitPoint), LwmLabels.BEGIN, + splitPoint, null); startLoadingFragment(splitPoint, loadErrorHandler); return; } @@ -486,11 +487,6 @@ public void logEventProgress(String eventGroup, String type) { logEventProgress(eventGroup, type, null, null); } - - private String downloadGroup(int fragment) { - return (fragment == leftoversFragment()) ? LwmLabels.LEFTOVERS_DOWNLOAD - : LwmLabels.downloadGroupForExclusive(fragment); - } /** * Return whether all initial fragments have completed loading. @@ -515,10 +511,6 @@ private int leftoversFragment() { return numEntries; } - - private void logDownloadStart(int fragment) { - logEventProgress(downloadGroup(fragment), LwmLabels.BEGIN, fragment, null); - } /** * Log event progress via the {...@link Logger} this instance was provided. The @@ -531,7 +523,8 @@ } private void logFragmentLoaded(int fragment) { - String logGroup = downloadGroup(fragment); + String logGroup = (fragment == leftoversFragment()) + ? LwmLabels.LEFTOVERS_DOWNLOAD : LwmLabels.downloadGroup(fragment); logEventProgress(logGroup, LwmLabels.END, fragment, null); } @@ -570,7 +563,8 @@ // start loading the next initial fragment initialFragmentsLoading = true; int nextSplitPoint = remainingInitialFragments.peek(); - logDownloadStart(nextSplitPoint); + logEventProgress(LwmLabels.downloadGroup(nextSplitPoint), + LwmLabels.BEGIN, nextSplitPoint, null); startLoadingFragment(nextSplitPoint, new InitialFragmentDownloadFailed()); return; } @@ -582,10 +576,8 @@ // start loading any pending fragments assert (waitingForInitialFragments.size() == waitingForInitialFragmentsErrorHandlers.size()); while (waitingForInitialFragments.size() > 0) { - int nextSplitPoint = waitingForInitialFragments.remove(); - LoadErrorHandler handler = waitingForInitialFragmentsErrorHandlers.remove(); - logDownloadStart(nextSplitPoint); - startLoadingFragment(nextSplitPoint, handler); + startLoadingFragment(waitingForInitialFragments.remove(), + waitingForInitialFragmentsErrorHandlers.remove()); } } } ======================================= --- /trunk/user/test/com/google/gwt/core/client/impl/AsyncFragmentLoaderTest.java Thu Aug 6 13:55:18 2009 +++ /trunk/user/test/com/google/gwt/core/client/impl/AsyncFragmentLoaderTest.java Thu Aug 6 16:38:05 2009 @@ -26,7 +26,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Queue; /** Tests the fragment loader. */ public class AsyncFragmentLoaderTest extends TestCase { @@ -98,45 +97,14 @@ } } - private static class MockProgressEvent { - public final String eventGroup; - public final Integer fragment; - public final String type; - - public MockProgressEvent(String eventGroup, String type, Integer fragment) { - this.eventGroup = eventGroup; - this.type = type; - this.fragment = fragment; - } - } - - private static class MockProgressLogger implements Logger { - private Queue<MockProgressEvent> events = new LinkedList<MockProgressEvent>(); - - public void assertEvent(String eventGroup, String type, Integer fragment) { - MockProgressEvent event = events.remove(); - assertEquals(eventGroup, event.eventGroup); - assertEquals(type, event.type); - assertEquals(fragment, event.fragment); - } - - public void assertNoEvents() { - assertTrue("Expected no more progress events, but there are " - + events.size(), events.size() == 0); - } - + private static final LoadErrorHandler NULL_ERROR_HANDLER = new LoadErrorHandler() { + public void loadFailed(Throwable reason) { + } + }; + + private static final Logger NULL_LOGGER = new Logger() { public void logEventProgress(String eventGroup, String type, Integer fragment, Integer size) { - events.add(new MockProgressEvent(eventGroup, type, fragment)); - } - } - - private static final String BEGIN = "begin"; - private static final String END = "end"; - private static final String LEFTOVERS_DOWNLOAD = "leftoversDownload"; - - private static final LoadErrorHandler NULL_ERROR_HANDLER = new LoadErrorHandler() { - public void loadFailed(Throwable reason) { } }; @@ -146,31 +114,19 @@ public void testBasics() { MockLoadStrategy reqs = new MockLoadStrategy(); - MockProgressLogger progress = new MockProgressLogger(); int numEntries = 5; AsyncFragmentLoader loader = new AsyncFragmentLoader(numEntries, - new int[] {}, reqs, progress); + new int[] {}, reqs, NULL_LOGGER); loader.inject(1, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(numEntries); - progress.assertEvent(LEFTOVERS_DOWNLOAD, BEGIN, numEntries); - loader.leftoversFragmentHasLoaded(); reqs.assertFragmentsRequested(1); - progress.assertEvent(LEFTOVERS_DOWNLOAD, END, numEntries); - progress.assertEvent("download1", BEGIN, 1); - loader.fragmentHasLoaded(1); - progress.assertEvent("download1", END, 1); loader.inject(2, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(2); - progress.assertEvent("download2", BEGIN, 2); - loader.fragmentHasLoaded(2); - progress.assertEvent("download2", END, 2); - - progress.assertNoEvents(); } /** @@ -178,16 +134,14 @@ */ public void testDownloadFailures() { MockLoadStrategy reqs = new MockLoadStrategy(); - MockProgressLogger progress = new MockProgressLogger(); int numEntries = 6; AsyncFragmentLoader loader = new AsyncFragmentLoader(numEntries, new int[] { - 1, 2, 3}, reqs, progress); + 1, 2, 3}, reqs, NULL_LOGGER); // request fragment 1 MockErrorHandler error1try1 = new MockErrorHandler(); loader.inject(1, error1try1); reqs.assertFragmentsRequested(1); - progress.assertEvent("download1", BEGIN, 1); // fragment 1 fails loadFailed(reqs, 1); @@ -197,42 +151,34 @@ MockErrorHandler error1try2 = new MockErrorHandler(); loader.inject(1, error1try2); reqs.assertFragmentsRequested(1); - progress.assertEvent("download1", BEGIN, 1); // this time fragment 1 succeeds loader.fragmentHasLoaded(1); reqs.assertFragmentsRequested(); assertFalse(error1try2.getWasCalled()); - progress.assertEvent("download1", END, 1); // request a later initial fragment (3), and see what happens if an // intermediate download fails MockErrorHandler error3try1 = new MockErrorHandler(); loader.inject(3, error3try1); reqs.assertFragmentsRequested(2); - progress.assertEvent("download2", BEGIN, 2); loadFailed(reqs, 2); assertTrue(error3try1.wasCalled); - // request both 3 and 5, and see what happens if + // request both 3 and 5, an see what happens if // the leftovers download fails MockErrorHandler error3try2 = new MockErrorHandler(); MockErrorHandler error5try1 = new MockErrorHandler(); loader.inject(3, error3try2); loader.inject(5, error5try1); reqs.assertFragmentsRequested(2); - progress.assertEvent("download2", BEGIN, 2); loader.fragmentHasLoaded(2); reqs.assertFragmentsRequested(3); - progress.assertEvent("download2", END, 2); - progress.assertEvent("download3", BEGIN, 3); loader.fragmentHasLoaded(3); reqs.assertFragmentsRequested(numEntries); - progress.assertEvent("download3", END, 3); - progress.assertEvent(LEFTOVERS_DOWNLOAD, BEGIN, numEntries); loadFailed(reqs, numEntries); // leftovers fails! assertFalse(error3try2.getWasCalled()); // 3 should have succeeded @@ -243,19 +189,13 @@ MockErrorHandler error5try2 = new MockErrorHandler(); loader.inject(5, error5try2); reqs.assertFragmentsRequested(numEntries); - progress.assertEvent(LEFTOVERS_DOWNLOAD, BEGIN, numEntries); loader.leftoversFragmentHasLoaded(); reqs.assertFragmentsRequested(5); - progress.assertEvent(LEFTOVERS_DOWNLOAD, END, numEntries); - progress.assertEvent("download5", BEGIN, 5); loader.fragmentHasLoaded(5); reqs.assertFragmentsRequested(); assertFalse(error5try2.getWasCalled()); - progress.assertEvent("download5", END, 5); - - progress.assertNoEvents(); } /** @@ -264,51 +204,38 @@ */ public void testLoadingPartOfInitialSequence() { MockLoadStrategy reqs = new MockLoadStrategy(); - MockProgressLogger progress = new MockProgressLogger(); int numEntries = 6; AsyncFragmentLoader loader = new AsyncFragmentLoader(numEntries, new int[] { - 1, 2, 3}, reqs, progress); + 1, 2, 3}, reqs, NULL_LOGGER); loader.inject(1, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(1); - progress.assertEvent("download1", BEGIN, 1); loader.fragmentHasLoaded(1); reqs.assertFragmentsRequested(); // should stop - progress.assertEvent("download1", END, 1); loader.inject(2, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(2); - progress.assertEvent("download2", BEGIN, 2); loader.fragmentHasLoaded(2); reqs.assertFragmentsRequested(); // again, should stop - progress.assertEvent("download2", END, 2); loader.inject(3, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(3); - progress.assertEvent("download3", BEGIN, 3); loader.fragmentHasLoaded(3); - // last initial, so it should now request the leftovers - reqs.assertFragmentsRequested(numEntries); - progress.assertEvent("download3", END, 3); - progress.assertEvent(LEFTOVERS_DOWNLOAD, BEGIN, numEntries); + reqs.assertFragmentsRequested(numEntries); // last initial, so it should + // request the leftovers loader.fragmentHasLoaded(numEntries); reqs.assertFragmentsRequested(); - progress.assertEvent(LEFTOVERS_DOWNLOAD, END, numEntries); // check that exclusives now load loader.inject(5, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(5); - progress.assertEvent("download5", BEGIN, 5); loader.fragmentHasLoaded(5); reqs.assertFragmentsRequested(); - progress.assertEvent("download5", END, 5); - - progress.assertNoEvents(); } /** @@ -318,10 +245,9 @@ */ public void testOverflowInWaitingForInitialFragments() { MockLoadStrategy reqs = new MockLoadStrategy(); - MockProgressLogger progress = new MockProgressLogger(); int numEntries = 6; AsyncFragmentLoader loader = new AsyncFragmentLoader(numEntries, new int[] { - 1, 2, 3}, reqs, progress); + 1, 2, 3}, reqs, NULL_LOGGER); /* * Repeatedly queue up extra downloads waiting on an initial and then fail. @@ -330,11 +256,9 @@ MockErrorHandler error = new MockErrorHandler(); loader.inject(4, error); reqs.assertFragmentsRequested(1); - progress.assertEvent("download1", BEGIN, 1); loadFailed(reqs, 1); assertTrue(error.getWasCalled()); - progress.assertNoEvents(); } } @@ -343,58 +267,40 @@ */ public void testWithInitialLoadSequence() { MockLoadStrategy reqs = new MockLoadStrategy(); - MockProgressLogger progress = new MockProgressLogger(); int numEntries = 6; AsyncFragmentLoader loader = new AsyncFragmentLoader(numEntries, new int[] { - 1, 2, 3}, reqs, progress); + 1, 2, 3}, reqs, NULL_LOGGER); loader.inject(1, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(1); - progress.assertEvent("download1", BEGIN, 1); loader.inject(3, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(); // still waiting on fragment 1 - progress.assertNoEvents(); loader.inject(5, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(); // still waiting on fragment 1 - progress.assertNoEvents(); // say that 1 loads, which should trigger a chain of backlogged downloads loader.fragmentHasLoaded(1); reqs.assertFragmentsRequested(2); // next initial - progress.assertEvent("download1", END, 1); - progress.assertEvent("download2", BEGIN, 2); loader.fragmentHasLoaded(2); reqs.assertFragmentsRequested(3); // next initial - progress.assertEvent("download2", END, 2); - progress.assertEvent("download3", BEGIN, 3); loader.fragmentHasLoaded(3); reqs.assertFragmentsRequested(numEntries); // leftovers - progress.assertEvent("download3", END, 3); - progress.assertEvent("leftoversDownload", BEGIN, numEntries); loader.leftoversFragmentHasLoaded(); reqs.assertFragmentsRequested(5); - progress.assertEvent("leftoversDownload", END, numEntries); - progress.assertEvent("download5", BEGIN, 5); loader.fragmentHasLoaded(5); reqs.assertFragmentsRequested(); // quiescent - progress.assertEvent("download5", END, 5); - progress.assertNoEvents(); // check that new exclusive fragment requests work loader.inject(4, NULL_ERROR_HANDLER); reqs.assertFragmentsRequested(4); - progress.assertEvent("download4", BEGIN, 4); - loader.fragmentHasLoaded(4); reqs.assertFragmentsRequested(); - progress.assertEvent("download4", END, 4); - progress.assertNoEvents(); } private void loadFailed(MockLoadStrategy reqs, int fragment) { ======================================= --- /trunk/user/test/com/google/gwt/dev/jjs/CompilerSuite.java Thu Aug 6 13:55:18 2009 +++ /trunk/user/test/com/google/gwt/dev/jjs/CompilerSuite.java Thu Aug 6 16:38:05 2009 @@ -42,7 +42,6 @@ import com.google.gwt.dev.jjs.test.NativeLongTest; import com.google.gwt.dev.jjs.test.ObjectIdentityTest; import com.google.gwt.dev.jjs.test.RunAsyncFailureTest; -import com.google.gwt.dev.jjs.test.RunAsyncMetricsIntegrationTest; import com.google.gwt.dev.jjs.test.RunAsyncTest; import com.google.gwt.dev.jjs.test.SingleJsoImplTest; import com.google.gwt.dev.jjs.test.UnstableGeneratorTest; @@ -87,7 +86,6 @@ suite.addTestSuite(NativeLongTest.class); suite.addTestSuite(ObjectIdentityTest.class); suite.addTestSuite(RunAsyncFailureTest.class); - suite.addTestSuite(RunAsyncMetricsIntegrationTest.class); suite.addTestSuite(RunAsyncTest.class); suite.addTestSuite(ScriptOnlyTest.class); suite.addTestSuite(SingleJsoImplTest.class); --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
