public void testGetTestBlock() { final long timeout = System.currentTimeMillis() + 15; JUnitMessageQueue queue = createQueue(15, 2, 3); TestInfo[] testBlock0 = queue.getTestBlocks().get(0); TestInfo[] testBlock1 = queue.getTestBlocks().get(1); // Get the first test block. { TestBlock block = queue.getTestBlock(createClientInfo(0, "ie6"), 0, timeout); assertEquals(testBlock0, block.getTests()); assertEquals(0, block.getIndex()); } // Get the second test block. { TestBlock block = queue.getTestBlock(createClientInfo(0, "ie6"), 1, timeout); assertEquals(testBlock1, block.getTests()); assertEquals(1, block.getIndex()); } // Get the third test block. { assertNull(queue.getTestBlock(createClientInfo(0, "ie6"), 2, timeout)); } }
public void testRetries() { JUnitMessageQueue queue = createQueue(TWO_CLIENTS, ONE_BLOCK, ONE_TEST_PER_BLOCK); TestInfo testInfo = queue.getTestBlocks().get(0)[0]; Map<TestInfo, JUnitResult> results = new HashMap<TestInfo, JUnitResult>(); JUnitResult junitResult = new JUnitResult(); junitResult.setException(new AssertionError()); results.put(testInfo, junitResult); queue.reportResults(createClientInfo(0, "ff3"), results); assertTrue(queue.needsRerunning(testInfo)); Map<ClientStatus, JUnitResult> queueResults = queue.getResults(testInfo); assertEquals(1, queueResults.size()); for (JUnitResult result : queueResults.values()) { assertNotNull(result.getException()); } queue.removeResults(testInfo); queue.reportResults(createClientInfo(0, "ff3"), createTestResults(ONE_TEST_PER_BLOCK)); queue.reportResults(createClientInfo(1, "ie6"), createTestResults(ONE_TEST_PER_BLOCK)); assertFalse(queue.needsRerunning(testInfo)); // check that the updated result appears now. queueResults = queue.getResults(testInfo); assertEquals(2, queueResults.size()); for (JUnitResult result : queueResults.values()) { assertNull(result.getException()); } }
public void testNeedRerunningExceptions() { JUnitMessageQueue queue = createQueue(TWO_CLIENTS, ONE_BLOCK, ONE_TEST_PER_BLOCK); // an exception TestInfo testInfo = queue.getTestBlocks().get(0)[0]; Map<TestInfo, JUnitResult> results = new HashMap<TestInfo, JUnitResult>(); JUnitResult junitResult = new JUnitResult(); junitResult.setException(new UnableToCompleteException()); results.put(testInfo, junitResult); queue.reportResults(createClientInfo(0, "ie6"), results); results = new HashMap<TestInfo, JUnitResult>(); junitResult = new JUnitResult(); junitResult.setException(new JUnitFatalLaunchException()); results.put(testInfo, junitResult); queue.reportResults(createClientInfo(1, "ff3"), createTestResults(ONE_TEST_PER_BLOCK)); assertTrue(queue.needsRerunning(testInfo)); // an exception but exception in launch module queue.removeResults(testInfo); results = new HashMap<TestInfo, JUnitResult>(); junitResult = new JUnitResult(); junitResult.setException(new JUnitFatalLaunchException()); results.put(testInfo, junitResult); queue.reportResults(createClientInfo(0, "ie6"), results); queue.reportResults(createClientInfo(1, "ff3"), createTestResults(ONE_TEST_PER_BLOCK)); assertFalse(queue.needsRerunning(testInfo)); }
public void testRemove() { JUnitMessageQueue queue = createQueue(TWO_CLIENTS, ONE_BLOCK, ONE_TEST_PER_BLOCK); TestInfo testInfo = queue.getTestBlocks().get(0)[0]; assertFalse(queue.hasResults(testInfo)); queue.reportResults(createClientInfo(0, "ie6"), createTestResults(ONE_TEST_PER_BLOCK)); assertFalse(queue.hasResults(testInfo)); queue.reportResults(createClientInfo(1, "ff3"), createTestResults(ONE_TEST_PER_BLOCK)); assertTrue(queue.hasResults(testInfo)); queue.removeResults(testInfo); assertFalse(queue.hasResults(testInfo)); }
public void testAddTestBlocks() { JUnitMessageQueue queue = new JUnitMessageQueue(10); assertEquals(0, queue.getTestBlocks().size()); List<TestInfo[]> expectedBlocks = new ArrayList<TestInfo[]>(); // Add some blocks. { List<TestInfo[]> testBlocks = createTestBlocks(5, 3); queue.addTestBlocks(testBlocks, false); expectedBlocks.addAll(testBlocks); assertEquals(expectedBlocks, queue.getTestBlocks()); } // Try to add an empty block. { List<TestInfo[]> testBlocks = createTestBlocks(5, 0); try { queue.addTestBlocks(testBlocks, false); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected. } assertEquals(expectedBlocks, queue.getTestBlocks()); } // Add last block. { List<TestInfo[]> testBlocks = createTestBlocks(3, 1); queue.addTestBlocks(testBlocks, true); expectedBlocks.addAll(testBlocks); assertEquals(expectedBlocks, queue.getTestBlocks()); } // Try to add more blocks. { List<TestInfo[]> testBlocks = createTestBlocks(1, 1); try { queue.addTestBlocks(testBlocks, false); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected. } assertEquals(expectedBlocks, queue.getTestBlocks()); } }
public void testNeedRerunningIncompleteResults() { JUnitMessageQueue queue = createQueue(TWO_CLIENTS, ONE_BLOCK, ONE_TEST_PER_BLOCK); TestInfo testInfo = queue.getTestBlocks().get(0)[0]; // incomplete results assertTrue(queue.needsRerunning(testInfo)); queue.reportResults(createClientInfo(0, "ff3"), createTestResults(1)); assertTrue(queue.needsRerunning(testInfo)); // complete results queue.reportResults(createClientInfo(1, "ie7"), createTestResults(1)); assertFalse(queue.needsRerunning(testInfo)); }
public void testGetResults() { JUnitMessageQueue queue = createQueue(3, 2, 3); TestInfo[] testBlock0 = queue.getTestBlocks().get(0); TestInfo test0_0 = testBlock0[0]; // The results from the three clients. JUnitResult result0 = new JUnitResult(); result0.setException(new IllegalArgumentException("0")); JUnitResult result1 = new JUnitResult(); result0.setException(new IllegalArgumentException("1")); JUnitResult result2 = new JUnitResult(); result0.setException(new IllegalArgumentException("2")); // Client 0 reports results for first test case. { Map<TestInfo, JUnitResult> results = new HashMap<TestInfo, JUnitResult>(); results.put(test0_0, result0); queue.reportResults(createClientInfo(0, "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(createClientInfo(1, "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(createClientInfo(2, "ie6"), results); } // Get the results 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(); switch (client.getId()) { case 0: assertEquals(result0, result); break; case 1: assertEquals(result1, result); break; case 2: assertEquals(result2, result); break; default: fail("Unexpected client"); break; } } }
public void testGetNumConnectedClients() { final long timeout = System.currentTimeMillis() + 15; JUnitMessageQueue queue = createQueue(15, 1, 1); assertEquals(0, queue.getNumConnectedClients()); // Add some clients in a few ways. { queue.getTestBlock(createClientInfo(0, "ie6"), 0, timeout); queue.reportFatalLaunch(createClientInfo(1, "gecko"), null); queue.reportResults(createClientInfo(2, "safari"), createTestResults(0)); assertEquals(3, queue.getNumConnectedClients()); } // Add duplicate clients. { queue.getTestBlock(createClientInfo(3, "ie6"), 0, timeout); queue.reportFatalLaunch(createClientInfo(3, "ie6"), null); queue.reportResults(createClientInfo(4, "safari"), createTestResults(0)); assertEquals(5, queue.getNumConnectedClients()); } // Add existing clients. { queue.getTestBlock(createClientInfo(0, "ie6"), 0, timeout); queue.reportFatalLaunch(createClientInfo(1, "gecko"), null); queue.reportResults(createClientInfo(2, "safari"), createTestResults(0)); assertEquals(5, queue.getNumConnectedClients()); } }
/** * Create a {@link JUnitMessageQueue} with the specified number of blocks. * * @param numClients the number of remote clients * @param numBlocks the number of test blocks to add * @param testsPerBlock the number of tests per block * @return the message queue */ private JUnitMessageQueue createQueue(int numClients, int numBlocks, int testsPerBlock) { JUnitMessageQueue queue = new JUnitMessageQueue(numClients); queue.addTestBlocks(createTestBlocks(numBlocks, testsPerBlock), true); return queue; }
public void testNewClients() { final long timeout = System.currentTimeMillis() + 15; JUnitMessageQueue queue = createQueue(15, 1, 1); assertEquals(0, queue.getNewClients().length); // Add some clients in a few ways. { queue.getTestBlock(createClientInfo(0, "ie6"), 0, timeout); queue.reportFatalLaunch(createClientInfo(1, "gecko"), null); queue.reportResults(createClientInfo(2, "safari"), createTestResults(0)); assertSimilar(new String[] {"desc0", "desc1", "desc2"}, queue.getNewClients()); assertEquals(0, queue.getNewClients().length); } // Add duplicate clients. { queue.getTestBlock(createClientInfo(3, "ie6"), 0, timeout); queue.reportFatalLaunch(createClientInfo(3, "ie6"), null); queue.reportResults(createClientInfo(4, "safari"), createTestResults(0)); queue.getTestBlock(createClientInfo(3, "ie6"), 0, timeout); assertSimilar(new String[] {"desc3", "desc4"}, queue.getNewClients()); assertEquals(0, queue.getNewClients().length); } // Add existing clients. { queue.getTestBlock(createClientInfo(0, "ie6"), 0, timeout); queue.reportFatalLaunch(createClientInfo(1, "gecko"), null); queue.reportResults(createClientInfo(2, "safari"), createTestResults(0)); assertEquals(0, queue.getNewClients().length); } }
public void testHasResults() { JUnitMessageQueue queue = createQueue(3, 2, 3); TestInfo[] testBlock0 = queue.getTestBlocks().get(0); TestInfo test0_0 = testBlock0[0]; TestInfo test0_1 = testBlock0[1]; TestInfo test0_2 = testBlock0[2]; TestInfo[] testBlock1 = queue.getTestBlocks().get(1); TestInfo test1_0 = testBlock1[0]; TestInfo test1_1 = testBlock1[1]; TestInfo test1_2 = testBlock1[2]; assertFalse(queue.hasResults(test0_0)); assertFalse(queue.hasResults(test0_1)); assertFalse(queue.hasResults(test0_2)); assertFalse(queue.hasResults(test1_0)); assertFalse(queue.hasResults(test1_1)); assertFalse(queue.hasResults(test1_2)); // First client reports results for the first test. { Map<TestInfo, JUnitResult> results = new HashMap<TestInfo, JUnitResult>(); results.put(test0_0, new JUnitResult()); queue.reportResults(createClientInfo(0, "ie6"), results); assertFalse(queue.hasResults(test0_0)); assertFalse(queue.hasResults(test0_1)); assertFalse(queue.hasResults(test0_2)); assertFalse(queue.hasResults(test1_0)); assertFalse(queue.hasResults(test1_1)); assertFalse(queue.hasResults(test1_2)); } // Second client reports results for the first test. { Map<TestInfo, JUnitResult> results = new HashMap<TestInfo, JUnitResult>(); results.put(test0_0, new JUnitResult()); queue.reportResults(createClientInfo(1, "ie6"), results); assertFalse(queue.hasResults(test0_0)); assertFalse(queue.hasResults(test0_1)); assertFalse(queue.hasResults(test0_2)); assertFalse(queue.hasResults(test1_0)); assertFalse(queue.hasResults(test1_1)); assertFalse(queue.hasResults(test1_2)); } // First client reports results for the second test. { Map<TestInfo, JUnitResult> results = new HashMap<TestInfo, JUnitResult>(); results.put(test0_1, new JUnitResult()); queue.reportResults(createClientInfo(0, "ie6"), results); assertFalse(queue.hasResults(test0_0)); assertFalse(queue.hasResults(test0_1)); assertFalse(queue.hasResults(test0_2)); assertFalse(queue.hasResults(test1_0)); assertFalse(queue.hasResults(test1_1)); assertFalse(queue.hasResults(test1_2)); } // Third client reports results for the first test. { Map<TestInfo, JUnitResult> results = new HashMap<TestInfo, JUnitResult>(); results.put(test0_0, new JUnitResult()); queue.reportResults(createClientInfo(2, "ie6"), results); assertTrue(queue.hasResults(test0_0)); assertFalse(queue.hasResults(test0_1)); assertFalse(queue.hasResults(test0_2)); assertFalse(queue.hasResults(test1_0)); assertFalse(queue.hasResults(test1_1)); assertFalse(queue.hasResults(test1_2)); } }
public void testGetNumRetrievedClients() { final long timeout = System.currentTimeMillis() + 15; JUnitMessageQueue queue = createQueue(15, 2, 3); TestInfo[] testBlock0 = queue.getTestBlocks().get(0); TestInfo test0_0 = testBlock0[0]; TestInfo test0_1 = testBlock0[1]; TestInfo test0_2 = testBlock0[2]; TestInfo[] testBlock1 = queue.getTestBlocks().get(1); TestInfo test1_0 = testBlock1[0]; TestInfo test1_1 = testBlock1[1]; TestInfo test1_2 = testBlock1[2]; assertEquals(0, queue.getNumClientsRetrievedTest(test0_0)); assertEquals(0, queue.getNumClientsRetrievedTest(test0_1)); assertEquals(0, queue.getNumClientsRetrievedTest(test0_2)); assertEquals(0, queue.getNumClientsRetrievedTest(test1_0)); assertEquals(0, queue.getNumClientsRetrievedTest(test1_1)); assertEquals(0, queue.getNumClientsRetrievedTest(test1_2)); // First client retrieves the first test block. { queue.getTestBlock(createClientInfo(0, "ie6"), 0, timeout); assertEquals(1, queue.getNumClientsRetrievedTest(test0_0)); assertEquals(1, queue.getNumClientsRetrievedTest(test0_1)); assertEquals(1, queue.getNumClientsRetrievedTest(test0_2)); assertEquals(0, queue.getNumClientsRetrievedTest(test1_0)); assertEquals(0, queue.getNumClientsRetrievedTest(test1_1)); assertEquals(0, queue.getNumClientsRetrievedTest(test1_2)); } // Second client retrieves the first test block. { queue.getTestBlock(createClientInfo(1, "ie6"), 0, timeout); assertEquals(2, queue.getNumClientsRetrievedTest(test0_0)); assertEquals(2, queue.getNumClientsRetrievedTest(test0_1)); assertEquals(2, queue.getNumClientsRetrievedTest(test0_2)); assertEquals(0, queue.getNumClientsRetrievedTest(test1_0)); assertEquals(0, queue.getNumClientsRetrievedTest(test1_1)); assertEquals(0, queue.getNumClientsRetrievedTest(test1_2)); } // First client retrieves the second test block. { queue.getTestBlock(createClientInfo(0, "ie6"), 1, timeout); assertEquals(2, queue.getNumClientsRetrievedTest(test0_0)); assertEquals(2, queue.getNumClientsRetrievedTest(test0_1)); assertEquals(2, queue.getNumClientsRetrievedTest(test0_2)); assertEquals(1, queue.getNumClientsRetrievedTest(test1_0)); assertEquals(1, queue.getNumClientsRetrievedTest(test1_1)); assertEquals(1, queue.getNumClientsRetrievedTest(test1_2)); } // First client retrieves the second test block again. { queue.getTestBlock(createClientInfo(0, "ie6"), 1, timeout); assertEquals(2, queue.getNumClientsRetrievedTest(test0_0)); assertEquals(2, queue.getNumClientsRetrievedTest(test0_1)); assertEquals(2, queue.getNumClientsRetrievedTest(test0_2)); assertEquals(1, queue.getNumClientsRetrievedTest(test1_0)); assertEquals(1, queue.getNumClientsRetrievedTest(test1_1)); assertEquals(1, queue.getNumClientsRetrievedTest(test1_2)); } }