Gmail Calendar Documents Reader Web more »
Recently Visited Groups | Help | Sign in
Google Groups Home
r7153 committed - Fix JUnitShell/etc so it doesn't rely on the user agent to identify di...
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  1 message - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
codesite-nore...@google.com  
View profile  
 More options Nov 24 2009, 4:02 am
From: codesite-nore...@google.com
Date: Tue, 24 Nov 2009 09:02:47 +0000
Local: Tues, Nov 24 2009 4:02 am
Subject: [google-web-toolkit] r7153 committed - Fix JUnitShell/etc so it doesn't rely on the user agent to identify di...
Revision: 7153
Author: j...@google.com
Date: Tue Nov 24 01:02:15 2009
Log: Fix JUnitShell/etc so it doesn't rely on the user agent to identify  
different
sessions, but instead sets a session cookie.  This fixes two instances/tabs
of the same browser as well as connections via proxies.

Patch by: scottb
Review by: jat

http://code.google.com/p/google-web-toolkit/source/detail?r=7153

Modified:
  /trunk/user/src/com/google/gwt/junit/JUnitMessageQueue.java
  /trunk/user/src/com/google/gwt/junit/JUnitShell.java
  /trunk/user/src/com/google/gwt/junit/server/JUnitHostImpl.java

/trunk/user/super/com/google/gwt/junit/translatable/com/google/gwt/junit/cl ient/impl/GWTRunner.java
  /trunk/user/test/com/google/gwt/junit/JUnitMessageQueueTest.java

=======================================
--- /trunk/user/src/com/google/gwt/junit/JUnitMessageQueue.java Mon Nov 16  
18:58:40 2009
+++ /trunk/user/src/com/google/gwt/junit/JUnitMessageQueue.java Tue Nov 24  
01:02:15 2009
@@ -16,6 +16,7 @@
  package com.google.gwt.junit;

  import com.google.gwt.dev.util.collect.HashSet;
+import com.google.gwt.dev.util.collect.IdentityHashMap;
  import com.google.gwt.junit.client.TimeoutException;
  import com.google.gwt.junit.client.impl.JUnitResult;
  import com.google.gwt.junit.client.impl.JUnitHost.TestBlock;
@@ -50,10 +51,12 @@
    public static class ClientStatus {
      public int blockIndex = 0;
      public final String clientId;
+    public String clientDesc;
      public boolean isNew = true;

-    public ClientStatus(String clientId) {
+    public ClientStatus(String clientId, String clientDesc) {
        this.clientId = clientId;
+      this.clientDesc = clientDesc;
      }
    }

@@ -97,7 +100,7 @@
     * null, it means that the client requested the test but did not report  
the
     * results yet.
     */
-  private final Map<TestInfo, Map<String, JUnitResult>> testResults = new  
HashMap<TestInfo, Map<String, JUnitResult>>();
+  private final Map<TestInfo, Map<ClientStatus, JUnitResult>> testResults  
= new HashMap<TestInfo, Map<ClientStatus, JUnitResult>>();

    /**
     * A set of the GWT user agents (eg. ie6, gecko) that have connected.
@@ -122,11 +125,11 @@
     *         <code>timeout</code> is exceeded or the next test does not  
match
     *         <code>testClassName</code>
     */
-  public TestBlock getTestBlock(String clientId, String userAgent,
-      int blockIndex, long timeout) throws TimeoutException {
+  public TestBlock getTestBlock(String clientId, String clientDesc,
+      String userAgent, int blockIndex, long timeout) throws  
TimeoutException {
      synchronized (clientStatusesLock) {
        userAgents.add(userAgent);
-      ClientStatus clientStatus = ensureClientStatus(clientId);
+      ClientStatus clientStatus = ensureClientStatus(clientId, clientDesc);
        clientStatus.blockIndex = blockIndex;

        // The client has finished all of the tests.
@@ -161,21 +164,21 @@
        // Record that this client has retrieved the current tests.
        TestInfo[] tests = testBlocks.get(blockIndex);
        for (TestInfo testInfo : tests) {
-        ensureResults(testInfo).put(clientId, null);
+        ensureResults(testInfo).put(clientStatus, null);
        }
        return new TestBlock(tests, blockIndex);
      }
    }

-  public void reportFatalLaunch(String clientId, String userAgent,
+  public void reportFatalLaunch(String clientId, String clientDesc, String  
userAgent,
        JUnitResult result) {
      // Fatal launch error, cause this client to fail the whole block.
-    ClientStatus clientStatus = ensureClientStatus(clientId);
+    ClientStatus clientStatus = ensureClientStatus(clientId, clientDesc);
      Map<TestInfo, JUnitResult> results = new HashMap<TestInfo,  
JUnitResult>();
      for (TestInfo testInfo : testBlocks.get(clientStatus.blockIndex)) {
        results.put(testInfo, result);
      }
-    reportResults(clientId, userAgent, results);
+    reportResults(clientId, clientDesc, userAgent, results);
    }

    /**
@@ -185,19 +188,19 @@
     * @param userAgent the user agent property of the client
     * @param results the result of running the test block
     */
-  public void reportResults(String clientId, String userAgent,
+  public void reportResults(String clientId, String clientDesc, String  
userAgent,
        Map<TestInfo, JUnitResult> results) {
      synchronized (clientStatusesLock) {
        if (results == null) {
          throw new IllegalArgumentException("results cannot be null");
        }
        userAgents.add(userAgent);
-      ensureClientStatus(clientId);
+      ClientStatus clientStatus = ensureClientStatus(clientId, clientDesc);

        // Cache the test results.
        for (Map.Entry<TestInfo, JUnitResult> entry : results.entrySet()) {
          TestInfo testInfo = entry.getKey();
-        ensureResults(testInfo).put(clientId, entry.getValue());
+        ensureResults(testInfo).put(clientStatus, entry.getValue());
        }

        clientStatusesLock.notifyAll();
@@ -237,7 +240,7 @@
        List<String> results = new ArrayList<String>();
        for (ClientStatus clientStatus : clientStatuses.values()) {
          if (clientStatus.isNew) {
-          results.add(clientStatus.clientId);
+          results.add(clientStatus.clientDesc);
            // Record that this client is no longer new.
            clientStatus.isNew = false;
          }
@@ -259,7 +262,7 @@
    int getNumClientsRetrievedTest(TestInfo testInfo) {
      synchronized (clientStatusesLock) {
        int count = 0;
-      Map<String, JUnitResult> results = testResults.get(testInfo);
+      Map<ClientStatus, JUnitResult> results = testResults.get(testInfo);
        if (results != null) {
          count = results.size();
        }
@@ -282,7 +285,7 @@
     * @param testInfo the {@link TestInfo} to check for results
     * @return A map of results from all clients.
     */
-  Map<String, JUnitResult> getResults(TestInfo testInfo) {
+  Map<ClientStatus, JUnitResult> getResults(TestInfo testInfo) {
      synchronized (clientStatusesLock) {
        return testResults.get(testInfo);
      }
@@ -307,7 +310,7 @@
     */
    String getUnretrievedClients(TestInfo testInfo) {
      synchronized (clientStatusesLock) {
-      Map<String, JUnitResult> results = testResults.get(testInfo);
+      Map<ClientStatus, JUnitResult> results = testResults.get(testInfo);
        StringBuilder buf = new StringBuilder();
        int lineCount = 0;
        for (ClientStatus clientStatus : clientStatuses.values()) {
@@ -315,12 +318,12 @@
            buf.append('\n');
          }

-        if (results == null |
| !results.containsKey(clientStatus.clientId)) {
+        if (results == null || !results.containsKey(clientStatus)) {
            buf.append(" - NO RESPONSE: ");
          } else {
            buf.append(" - (ok): ");
          }
-        buf.append(clientStatus.clientId);
+        buf.append(clientStatus.clientDesc);
          ++lineCount;
        }
        int difference = numClients - getNumClientsRetrievedTest(testInfo);
@@ -358,11 +361,11 @@
        // Print a list of clients that have connected but not returned  
results.
        int itemCount = 0;
        StringBuilder buf = new StringBuilder();
-      Map<String, JUnitResult> results = testResults.get(testInfo);
+      Map<ClientStatus, JUnitResult> results = testResults.get(testInfo);
        if (results != null) {
-        for (Map.Entry<String, JUnitResult> entry : results.entrySet()) {
+        for (Map.Entry<ClientStatus, JUnitResult> entry :  
results.entrySet()) {
            if (entry.getValue() == null) {
-            buf.append(entry.getKey());
+            buf.append(entry.getKey().clientDesc);
              buf.append("\n");
              itemCount++;
            }
@@ -391,7 +394,7 @@
     */
    boolean hasResults(TestInfo testInfo) {
      synchronized (clientStatusesLock) {
-      Map<String, JUnitResult> results = testResults.get(testInfo);
+      Map<ClientStatus, JUnitResult> results = testResults.get(testInfo);
        if (results == null || results.size() < numClients) {
          return false;
        }
@@ -410,14 +413,14 @@
     * THROWABLES_NOT_RETRIED}.
     */
    boolean needsRerunning(TestInfo testInfo) {
-    Map<String, JUnitResult> results = getResults(testInfo);
+    Map<ClientStatus, JUnitResult> results = getResults(testInfo);
      if (results == null) {
        return true;
      }
      if (results.size() != numClients) {
        return true;
      }
-    for (Entry<String, JUnitResult> entry : results.entrySet()) {
+    for (Entry<ClientStatus, JUnitResult> entry : results.entrySet()) {
        JUnitResult result = entry.getValue();
        if (result == null) {
          return true;
@@ -451,11 +454,14 @@
     * @param clientId the id of the client
     * @return the {@link ClientStatus} for the client
     */
-  private ClientStatus ensureClientStatus(String clientId) {
+  private ClientStatus ensureClientStatus(String clientId, String  
clientDesc) {
      ClientStatus clientStatus = clientStatuses.get(clientId);
      if (clientStatus == null) {
-      clientStatus = new ClientStatus(clientId);
+      clientStatus = new ClientStatus(clientId, clientDesc);
        clientStatuses.put(clientId, clientStatus);
+    } else {
+      // Maybe update the description (ip might change if through a proxy).
+      clientStatus.clientDesc = clientDesc;
      }
      return clientStatus;
    }
@@ -467,10 +473,10 @@
     * @param testInfo the {@link TestInfo}
     * @return the map of all results
     */
-  private Map<String, JUnitResult> ensureResults(TestInfo testInfo) {
-    Map<String, JUnitResult> results = testResults.get(testInfo);
+  private Map<ClientStatus, JUnitResult> ensureResults(TestInfo testInfo) {
+    Map<ClientStatus, JUnitResult> results = testResults.get(testInfo);
      if (results == null) {
-      results = new HashMap<String, JUnitResult>();
+      results = new IdentityHashMap<ClientStatus, JUnitResult>();
        testResults.put(testInfo, results);
      }
      return results;
=======================================
--- /trunk/user/src/com/google/gwt/junit/JUnitShell.java        Mon Nov 23  
12:05:34 2009
+++ /trunk/user/src/com/google/gwt/junit/JUnitShell.java        Tue Nov 24  
01:02:15 2009
@@ -40,6 +40,7 @@
  import com.google.gwt.dev.util.arg.ArgHandlerLocalWorkers;
  import com.google.gwt.dev.util.arg.ArgHandlerLogLevel;
  import com.google.gwt.dev.util.arg.ArgHandlerScriptStyle;
+import com.google.gwt.junit.JUnitMessageQueue.ClientStatus;
  import com.google.gwt.junit.client.GWTTestCase;
  import com.google.gwt.junit.client.TimeoutException;
  import com.google.gwt.junit.client.impl.JUnitResult;
@@ -1054,20 +1055,20 @@
    private void processTestResult(TestCase testCase, TestResult testResult,
        Strategy strategy) {

-    Map<String, JUnitResult> results =  
messageQueue.getResults(currentTestInfo);
+    Map<ClientStatus, JUnitResult> results =  
messageQueue.getResults(currentTestInfo);
      assert results != null;
      assert results.size() == messageQueue.getNumClients() : results.size()
          + " != " + messageQueue.getNumClients();

-    for (Entry<String, JUnitResult> entry : results.entrySet()) {
-      String clientId = entry.getKey();
+    for (Entry<ClientStatus, JUnitResult> entry : results.entrySet()) {
+      ClientStatus client = entry.getKey();
        JUnitResult result = entry.getValue();
        assert (result != null);
        Throwable exception = result.getException();

        // Let the user know the browser in which the failure happened.
        if (exception != null) {
-        String msg = "Remote test failed at " + clientId;
+        String msg = "Remote test failed at " + client.clientDesc;
          if (exception instanceof AssertionFailedError) {
            String oldMessage = exception.getMessage();
            if (oldMessage != null) {
=======================================
--- /trunk/user/src/com/google/gwt/junit/server/JUnitHostImpl.java      Tue Sep  
15 11:52:45 2009
+++ /trunk/user/src/com/google/gwt/junit/server/JUnitHostImpl.java      Tue Nov  
24 01:02:15 2009
@@ -31,8 +31,10 @@
  import java.lang.reflect.Constructor;
  import java.lang.reflect.Field;
  import java.util.HashMap;
+import java.util.concurrent.atomic.AtomicLong;

  import javax.servlet.ServletException;
+import javax.servlet.http.Cookie;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;

@@ -55,6 +57,8 @@
     */
    private static final int TIME_TO_WAIT_FOR_TESTNAME = 300000;

+  private static final AtomicLong uniqueSessionId = new AtomicLong();
+
    /**
     * Tries to grab the GWTUnitTestShell sHost environment to communicate  
with
     * the real test process.
@@ -83,8 +87,10 @@

    public TestBlock getTestBlock(int blockIndex, String userAgent)
        throws TimeoutException {
-    return getHost().getTestBlock(getClientId(getThreadLocalRequest()),
-        userAgent, blockIndex, TIME_TO_WAIT_FOR_TESTNAME);
+    return getHost().getTestBlock(
+        getClientId(getThreadLocalRequest(), getThreadLocalResponse()),
+        getClientDesc(getThreadLocalRequest()), userAgent, blockIndex,
+        TIME_TO_WAIT_FOR_TESTNAME);
    }

    public TestBlock reportResultsAndGetTestBlock(
@@ -96,9 +102,11 @@
        result.setException(deserialize(ew));
      }
      JUnitMessageQueue host = getHost();
-    String clientId = getClientId(getThreadLocalRequest());
-    host.reportResults(clientId, userAgent, results);
-    return host.getTestBlock(clientId, userAgent, testBlock,
+    String clientId = getClientId(getThreadLocalRequest(),
+        getThreadLocalResponse());
+    String clientDesc = getClientDesc(getThreadLocalRequest());
+    host.reportResults(clientId, clientDesc, userAgent, results);
+    return host.getTestBlock(clientId, clientDesc, userAgent, testBlock,
          TIME_TO_WAIT_FOR_TESTNAME);
    }

@@ -111,7 +119,8 @@
        JUnitResult result = new JUnitResult();
        initResult(request, result);
        result.setException(new JUnitFatalLaunchException(requestPayload));
-      getHost().reportFatalLaunch(getClientId(request), null, result);
+      getHost().reportFatalLaunch(getClientId(request, response),
+          getClientDesc(request), null, result);
      } else {
        super.service(request, response);
      }
@@ -223,14 +232,29 @@
      return result;
    }

-  /**
-   * Returns a "client id" for the current request.
-   */
-  private String getClientId(HttpServletRequest request) {
+  private String getClientDesc(HttpServletRequest request) {
      String machine = request.getRemoteHost();
      String agent = request.getHeader("User-Agent");
      return machine + " / " + agent;
    }
+
+  /**
+   * Returns a "client id" for the current request.
+   */
+  private String getClientId(HttpServletRequest request,
+      HttpServletResponse response) {
+    Cookie[] cookies = request.getCookies();
+    if (cookies != null) {
+      for (Cookie cookie : cookies) {
+        if ("gwt.junit.sessionCookie".equals(cookie.getName())) {
+          return cookie.getValue();
+        }
+      }
+    }
+    String cookie = String.valueOf(uniqueSessionId.getAndIncrement());
+    response.addCookie(new Cookie("gwt.junit.sessionCookie", cookie));
+    return cookie;
+  }

    private void initResult(HttpServletRequest request, JUnitResult result) {
      String agent = request.getHeader("User-Agent");
=======================================
---  
/trunk/user/super/com/google/gwt/junit/translatable/com/google/gwt/junit/cl ient/impl/GWTRunner.java    
Mon Nov  2 08:50:07 2009
+++  
/trunk/user/super/com/google/gwt/junit/translatable/com/google/gwt/junit/cl ient/impl/GWTRunner.java    
Tue Nov 24 01:02:15 2009
@@ -22,6 +22,7 @@
  import com.google.gwt.junit.client.impl.JUnitHost.TestBlock;
  import com.google.gwt.junit.client.impl.JUnitHost.TestInfo;
  import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Cookies;
  import com.google.gwt.user.client.DeferredCommand;
  import com.google.gwt.user.client.Timer;
  import com.google.gwt.user.client.Window;
@@ -100,6 +101,11 @@
     */
    private static GWTRunner sInstance;

+  /**
+   * A query param specifying my unique session cookie.
+   */
+  private static final String SESSIONCOOKIE_QUERY_PARAM  
= "gwt.junit.sessionCookie";
+
    /**
     * A query param specifying the test class to run, for serverless mode.
     */
@@ -181,6 +187,12 @@
    }

    public void onModuleLoad() {
+    // Try to import a session cookie from the previous module.
+    String value = Window.Location.getParameter(SESSIONCOOKIE_QUERY_PARAM);
+    if (value != null) {
+      Cookies.setCookie(SESSIONCOOKIE_QUERY_PARAM, value);
+    }
+
      maxRetryCount = parseQueryParamInteger(RETRYCOUNT_QUERY_PARAM, -1);
      currentBlock = checkForQueryParamTestToRun();
      if (currentBlock != null) {
@@ -266,6 +278,11 @@
        builder.setParameter(BLOCKINDEX_QUERY_PARAM,
            Integer.toString(currentBlock.getIndex())).setPath(
            newModule + pathSuffix);
+      // Hand off the session cookie to the next module.
+      String sessionCookie = Cookies.getCookie(SESSIONCOOKIE_QUERY_PARAM);
+      if (sessionCookie != null) {
+        builder.setParameter(SESSIONCOOKIE_QUERY_PARAM, sessionCookie);
+      }
        Window.Location.replace(builder.buildString());
        currentBlock = null;
        currentTestIndex = 0;
=======================================
--- /trunk/user/test/com/google/gwt/junit/JUnitMessageQueueTest.java    Mon  
Nov 16 18:58:40 2009
+++ /trunk/user/test/com/google/gwt/junit/JUnitMessageQueueTest.java    Tue  
Nov 24 01:02:15 2009
@@ -16,6 +16,7 @@
  package com.google.gwt.junit;

  import com.google.gwt.core.ext.UnableToCompleteException;
+import com.google.gwt.junit.JUnitMessageQueue.ClientStatus;
  import com.google.gwt.junit.client.impl.JUnitResult;
  import com.google.gwt.junit.client.impl.JUnitHost.TestBlock;
  import com.google.gwt.junit.client.impl.JUnitHost.TestInfo;
@@ -26,15 +27,16 @@
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
+import java.util.Map.Entry;

  /**
   * Tests of {@link JUnitMessageQueue}.
   */
  public class JUnitMessageQueueTest extends TestCase {

-  private final static int TWO_CLIENTS = 2;
    private final static int ONE_BLOCK = 1;
    private final static int ONE_TEST_PER_BLOCK = 1;
+  private final static int TWO_CLIENTS = 2;

    public void testAddTestBlocks() {
      JUnitMessageQueue queue = new JUnitMessageQueue(10);
@@ -89,25 +91,25 @@

      // Add some clients in a few ways.
      {
-      queue.getTestBlock("client0", "ie6", 0, timeout);
-      queue.reportFatalLaunch("client1", "gecko", null);
-      queue.reportResults("client2", "safari", createTestResults(0));
+      queue.getTestBlock("client0", "desc0", "ie6", 0, timeout);
+      queue.reportFatalLaunch("client1", "desc1", "gecko", null);
+      queue.reportResults("client2", "desc2", "safari",  
createTestResults(0));
        assertEquals(3, queue.getNumConnectedClients());
      }

      // Add duplicate clients.
      {
-      queue.getTestBlock("client3", "ie6", 0, timeout);
-      queue.reportFatalLaunch("client3", "ie6", null);
-      queue.reportResults("client4", "safari", createTestResults(0));
+      queue.getTestBlock("client3", "desc3", "ie6", 0, timeout);
+      queue.reportFatalLaunch("client3", "desc3", "ie6", null);
+      queue.reportResults("client4", "desc3", "safari",  
createTestResults(0));
        assertEquals(5, queue.getNumConnectedClients());
      }

      // Add existing clients.
      {
-      queue.getTestBlock("client0", "ie6", 0, timeout);
-      queue.reportFatalLaunch("client1", "gecko", null);
-      queue.reportResults("client2", "safari", createTestResults(0));
+      queue.getTestBlock("client0", "desc0", "ie6", 0, timeout);
+      queue.reportFatalLaunch("client1", "desc1", "gecko", null);
+      queue.reportResults("client2", "desc2", "safari",  
createTestResults(0));
        assertEquals(5, queue.getNumConnectedClients());
      }
    }
@@ -132,7 +134,7 @@

      // First client retrieves the first test block.
      {
-      queue.getTestBlock("client0", "ie6", 0, timeout);
+      queue.getTestBlock("client0", "desc0", "ie6", 0, timeout);
        assertEquals(1, queue.getNumClientsRetrievedTest(test0_0));
        assertEquals(1, queue.getNumClientsRetrievedTest(test0_1));
        assertEquals(1, queue.getNumClientsRetrievedTest(test0_2));
@@ -143,7 +145,7 @@

      // Second client retrieves the first test block.
      {
-      queue.getTestBlock("client1", "ie6", 0, timeout);
+      queue.getTestBlock("client1", "desc1", "ie6", 0, timeout);
        assertEquals(2, queue.getNumClientsRetrievedTest(test0_0));
        assertEquals(2, queue.getNumClientsRetrievedTest(test0_1));
        assertEquals(2, queue.getNumClientsRetrievedTest(test0_2));
@@ -154,7 +156,7 @@

      // First client retrieves the second test block.
      {
-      queue.getTestBlock("client0", "ie6", 1, timeout);
+      queue.getTestBlock("client0", "desc0", "ie6", 1, timeout);
        assertEquals(2, queue.getNumClientsRetrievedTest(test0_0));
        assertEquals(2, queue.getNumClientsRetrievedTest(test0_1));
        assertEquals(2, queue.getNumClientsRetrievedTest(test0_2));
@@ -165,7 +167,7 @@

      // First client retrieves the second test block again.
      {
-      queue.getTestBlock("client0", "ie6", 1, timeout);
+      queue.getTestBlock("client0", "desc0", "ie6", 1, timeout);
        assertEquals(2, queue.getNumClientsRetrievedTest(test0_0));
        assertEquals(2, queue.getNumClientsRetrievedTest(test0_1));
        assertEquals(2, queue.getNumClientsRetrievedTest(test0_2));
@@ -192,28 +194,39 @@
      {
        Map<TestInfo, JUnitResult> results = new HashMap<TestInfo,  
JUnitResult>();
        results.put(test0_0, result0);
-      queue.reportResults("client0", "ie6", results);
+      queue.reportResults("client0", "desc0", "ie6", results);
      }

      // Client 1 reports results for first test case.
      {
        Map<TestInfo, JUnitResult> results = new HashMap<TestInfo,  
JUnitResult>();
        results.put(test0_0, result1);
-      queue.reportResults("client1", "ie6", results);
+      queue.reportResults("client1", "desc1", "ie6", results);
      }

      // Client 2 reports results for first test case.
      {
        Map<TestInfo, JUnitResult> results = new HashMap<TestInfo,  
JUnitResult>();
        results.put(test0_0, result2);
-      queue.reportResults("client2", "ie6", results);
+      queue.reportResults("client2", "desc2", "ie6", results);
      }

      // Get the results
-    Map<String, JUnitResult> results = queue.getResults(test0_0);
-    assertEquals(result0, results.get("client0"));
-    assertEquals(result1, results.get("client1"));
-    assertEquals(result2, results.get("client2"));
+    Map<ClientStatus, JUnitResult> results = queue.getResults(test0_0);
+    assertEquals(3, results.size());
+    for (Entry<ClientStatus, JUnitResult> entry : results.entrySet()) {
+      ClientStatus client = entry.getKey();
+      JUnitResult result = entry.getValue();
+      if ("client0".equals(client.clientId)) {
+        assertEquals(result0, result);
+      } else if ("client1".equals(client.clientId)) {
+        assertEquals(result1, result);
+      } else if ("client2".equals(client.clientId)) {
+        assertEquals(result2, result);
+      } else {
+        fail("Unexpected client");
+      }
+    }
    }

    public void testGetTestBlock() {
@@ -224,21 +237,23 @@

      // Get the first test block.
      {
-      TestBlock block = queue.getTestBlock("client0", "ie6", 0, timeout);
+      TestBlock block = queue.getTestBlock("client0", "desc0", "ie6", 0,
+          timeout);
        assertEquals(testBlock0, block.getTests());
        assertEquals(0, block.getIndex());
      }

      // Get the second test block.
      {
-      TestBlock block = queue.getTestBlock("client0", "ie6", 1, timeout);
+      TestBlock block = queue.getTestBlock("client0", "desc0", "ie6", 1,
+          timeout);
        assertEquals(testBlock1, block.getTests());
        assertEquals(1, block.getIndex());
      }

      // Get the third test block.
      {
-      assertNull(queue.getTestBlock("client0", "ie6", 2, timeout));
+      assertNull(queue.getTestBlock("client0", "desc0", "ie6", 2,  
timeout));
      }
    }

@@ -249,28 +264,28 @@

      // Add some clients in a few ways.
      {
-      queue.getTestBlock("client0", "ie6", 0, timeout);
-      queue.reportFatalLaunch("client1", "gecko", null);
-      queue.reportResults("client2", "safari", createTestResults(0));
+      queue.getTestBlock("client0", "desc0", "ie6", 0, timeout);
+      queue.reportFatalLaunch("client1", "desc1", "gecko", null);
+      queue.reportResults("client2", "desc2", "safari",  
createTestResults(0));
        assertSimilar(new String[] {"ie6", "gecko", "safari"},
            queue.getUserAgents());
      }

      // Add duplicate clients.
      {
-      queue.getTestBlock("client3", "ie7", 0, timeout);
-      queue.reportFatalLaunch("client3", "ie7", null);
-      queue.reportResults("client4", "gecko1_8", createTestResults(0));
-      queue.getTestBlock("client3", "ie7", 0, timeout);
+      queue.getTestBlock("client3", "desc3", "ie7", 0, timeout);
+      queue.reportFatalLaunch("client3", "desc3", "ie7", null);
+      queue.reportResults("client4", "desc4", "gecko1_8",  
createTestResults(0));
+      queue.getTestBlock("client3", "desc3", "ie7", 0, timeout);
        assertSimilar(new String[]  
{"ie6", "ie7", "gecko", "gecko1_8", "safari"},
            queue.getUserAgents());
      }

      // Add existing clients.
      {
-      queue.getTestBlock("client0", "ie6", 0, timeout);
-      queue.reportFatalLaunch("client1", "gecko", null);
-      queue.reportResults("client2", "safari", createTestResults(0));
+      queue.getTestBlock("client0", "desc0", "ie6", 0, timeout);
+      queue.reportFatalLaunch("client1", "desc1", "gecko", null);
+      queue.reportResults("client2", "desc2", "safari",  
createTestResults(0));
        assertSimilar(new String[]  
{"ie6", "ie7", "gecko", "gecko1_8", "safari"},
            queue.getUserAgents());
      }
@@ -297,7 +312,7 @@
      {
        Map<TestInfo, JUnitResult> results = new HashMap<TestInfo,  
JUnitResult>();
        results.put(test0_0, new JUnitResult());
-      queue.reportResults("client0", "ie6", results);
+      queue.reportResults("client0", "desc0", "ie6", results);
        assertFalse(queue.hasResults(test0_0));
        assertFalse(queue.hasResults(test0_1));
        assertFalse(queue.hasResults(test0_2));
@@ -310,7 +325,7 @@
      {
        Map<TestInfo, JUnitResult> results = new HashMap<TestInfo,  
JUnitResult>();
        results.put(test0_0, new JUnitResult());
-      queue.reportResults("client1", "ie6", results);
+      queue.reportResults("client1", "desc1", "ie6", results);
        assertFalse(queue.hasResults(test0_0));
        assertFalse(queue.hasResults(test0_1));
        assertFalse(queue.hasResults(test0_2));
@@ -323,7 +338,7 @@
      {
        Map<TestInfo, JUnitResult> results = new HashMap<TestInfo,  
JUnitResult>();
        results.put(test0_1, new JUnitResult());
-      queue.reportResults("client0", "ie6", results);
+      queue.reportResults("client0", "desc0", "ie6", results);
        assertFalse(queue.hasResults(test0_0));
        assertFalse(queue.hasResults(test0_1));
        assertFalse(queue.hasResults(test0_2));
@@ -336,7 +351,7 @@
      {
        Map<TestInfo, JUnitResult> results = new HashMap<TestInfo,  
JUnitResult>();
        results.put(test0_0, new JUnitResult());
-      queue.reportResults("client2", "ie6", results);
+      queue.reportResults("client2", "desc2", "ie6", results);
        assertTrue(queue.hasResults(test0_0));
        assertFalse(queue.hasResults(test0_1));
        assertFalse(queue.hasResults(test0_2));
@@ -355,12 +370,13 @@
      JUnitResult junitResult = new JUnitResult();
      junitResult.setException(new UnableToCompleteException());
      results.put(testInfo, junitResult);
-    queue.reportResults("client0", "ie6", results);
+    queue.reportResults("client0", "desc0", "ie6", results);
      results = new HashMap<TestInfo, JUnitResult>();
      junitResult = new JUnitResult();
      junitResult.setException(new JUnitFatalLaunchException());
      results.put(testInfo, junitResult);
-    queue.reportResults("client1", "ff3",  
createTestResults(ONE_TEST_PER_BLOCK));
+    queue.reportResults("client1", "desc1", "ff3",
+        createTestResults(ONE_TEST_PER_BLOCK));
      assertTrue(queue.needsRerunning(testInfo));

      // an exception but exception in launch module
@@ -369,8 +385,9 @@
      junitResult = new JUnitResult();
      junitResult.setException(new JUnitFatalLaunchException());
      results.put(testInfo, junitResult);
-    queue.reportResults("client0", "ie6", results);
-    queue.reportResults("client1", "ff3",  
createTestResults(ONE_TEST_PER_BLOCK));
+    queue.reportResults("client0", "desc0", "ie6", results);
+    queue.reportResults("client1", "desc1", "ff3",
+        createTestResults(ONE_TEST_PER_BLOCK));
      assertFalse(queue.needsRerunning(testInfo));
    }

@@ -381,11 +398,11 @@

      // incomplete results
      assertTrue(queue.needsRerunning(testInfo));
-    queue.reportResults("client0", "ff3", createTestResults(1));
+    queue.reportResults("client0", "desc0", "ff3", createTestResults(1));
      assertTrue(queue.needsRerunning(testInfo));
-
+
      // complete results
-    queue.reportResults("client1", "ie7", createTestResults(1));
+    queue.reportResults("client1", "desc1", "ie7", createTestResults(1));
      assertFalse(queue.needsRerunning(testInfo));
    }

@@ -396,29 +413,29 @@

      // Add some clients in a few ways.
      {
-      queue.getTestBlock("client0", "ie6", 0, timeout);
-      queue.reportFatalLaunch("client1", "gecko", null);
-      queue.reportResults("client2", "safari", createTestResults(0));
-      assertSimilar(new String[] {"client0", "client1", "client2"},
+      queue.getTestBlock("client0", "desc0", "ie6", 0, timeout);
+      queue.reportFatalLaunch("client1", "desc1", "gecko", null);
+      queue.reportResults("client2", "desc2", "safari",  
createTestResults(0));
+      assertSimilar(new String[] {"desc0", "desc1", "desc2"},
            queue.getNewClients());
        assertEquals(0, queue.getNewClients().length);
      }

      // Add duplicate clients.
      {
-      queue.getTestBlock("client3", "ie6", 0, timeout);
-      queue.reportFatalLaunch("client3", "ie6", null);
-      queue.reportResults("client4", "safari", createTestResults(0));
-      queue.getTestBlock("client3", "ie6", 0, timeout);
-      assertSimilar(new String[] {"client3", "client4"},  
queue.getNewClients());
+      queue.getTestBlock("client3", "desc3", "ie6", 0, timeout);
+      queue.reportFatalLaunch("client3", "desc3", "ie6", null);
+      queue.reportResults("client4", "desc4", "safari",  
createTestResults(0));
+      queue.getTestBlock("client3", "desc3", "ie6", 0, timeout);
+      assertSimilar(new String[] {"desc3", "desc4"},  
queue.getNewClients());
        assertEquals(0, queue.getNewClients().length);
      }

      // Add existing clients.
      {
-      queue.getTestBlock("client0", "ie6", 0, timeout);
-      queue.reportFatalLaunch("client1", "gecko", null);
-      queue.reportResults("client2", "safari", createTestResults(0));
+      queue.getTestBlock("client0", "desc0", "ie6", 0, timeout);
+      queue.reportFatalLaunch("client1", "desc1", "gecko", null);
+      queue.reportResults("client2", "desc2", "safari",  
createTestResults(0));
        assertEquals(0, queue.getNewClients().length);
      }
    }
@@ -429,9 +446,11 @@
      TestInfo testInfo = queue.getTestBlocks().get(0)[0];
      assertFalse(queue.hasResults(testInfo));

-    queue.reportResults("client0", "ie6",  
createTestResults(ONE_TEST_PER_BLOCK));
+    queue.reportResults("client0", "desc0", "ie6",
+        createTestResults(ONE_TEST_PER_BLOCK));
      assertFalse(queue.hasResults(testInfo));
-    queue.reportResults("client1", "ff3",  
createTestResults(ONE_TEST_PER_BLOCK));
+    queue.reportResults("client1", "desc1", "ff3",
+        createTestResults(ONE_TEST_PER_BLOCK));
      assertTrue(queue.hasResults(testInfo));

      queue.removeResults(testInfo);
@@ -446,17 +465,27 @@
      JUnitResult junitResult = new JUnitResult();
      junitResult.setException(new AssertionError());
      results.put(testInfo, junitResult);
-    queue.reportResults("client0", "ff3", results);
+    queue.reportResults("client0", "desc0", "ff3", results);
      assertTrue(queue.needsRerunning(testInfo));
-    assertTrue(queue.getResults(testInfo).get("client0").getException() !=  
null);
+    Map<ClientStatus, JUnitResult> queueResults =  
queue.getResults(testInfo);
+    assertEquals(1, queueResults.size());
+    for (JUnitResult result : queueResults.values()) {
+      assertNotNull(result.getException());
+    }

      queue.removeResults(testInfo);

-    queue.reportResults("client0", "ff3",  
createTestResults(ONE_TEST_PER_BLOCK));
-    queue.reportResults("client1", "ie6",  
createTestResults(ONE_TEST_PER_BLOCK));
+    queue.reportResults("client0", "desc0", "ff3",
+        createTestResults(ONE_TEST_PER_BLOCK));
+    queue.reportResults("client1", "desc1", "ie6",
+        createTestResults(ONE_TEST_PER_BLOCK));
      assertFalse(queue.needsRerunning(testInfo));
      // check that the updated result appears now.
-    assertTrue(queue.getResults(testInfo).get("client0").getException() ==  
null);
+    queueResults = queue.getResults(testInfo);
+    assertEquals(2, queueResults.size());
+    for (JUnitResult result : queueResults.values()) {
+      assertNull(result.getException());
+    }
    }

    /**


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2010 Google