1#!/usr/bin/env python 2# Copyright 2014 the V8 project authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6import unittest 7 8from pool import Pool 9 10def Run(x): 11 if x == 10: 12 raise Exception("Expected exception triggered by test.") 13 return x 14 15class PoolTest(unittest.TestCase): 16 def testNormal(self): 17 results = set() 18 pool = Pool(3) 19 for result in pool.imap_unordered(Run, [[x] for x in range(0, 10)]): 20 results.add(result.value) 21 self.assertEquals(set(range(0, 10)), results) 22 23 def testException(self): 24 results = set() 25 pool = Pool(3) 26 for result in pool.imap_unordered(Run, [[x] for x in range(0, 12)]): 27 # Item 10 will not appear in results due to an internal exception. 28 results.add(result.value) 29 expect = set(range(0, 12)) 30 expect.remove(10) 31 self.assertEquals(expect, results) 32 33 def testAdd(self): 34 results = set() 35 pool = Pool(3) 36 for result in pool.imap_unordered(Run, [[x] for x in range(0, 10)]): 37 results.add(result.value) 38 if result.value < 30: 39 pool.add([result.value + 20]) 40 self.assertEquals(set(range(0, 10) + range(20, 30) + range(40, 50)), 41 results) 42