コード例 #1
0
 def firstStep():
     yield ServiceMock(chunks=[],
                       T=self.T,
                       ioLoop=self.io_loop,
                       interval=0.004).execute()
     yield ServiceMock(chunks=[],
                       T=self.T,
                       ioLoop=self.io_loop,
                       interval=0.002).execute()
     yield 'Ok'
コード例 #2
0
 def middleMan(result):
     result.get()
     s1 = yield ServiceMock(chunks=[4, 5],
                            T=self.T,
                            ioLoop=self.io_loop,
                            interval=0.002).execute()
     s2 = yield
     s3 = yield ServiceMock(chunks=[6],
                            T=self.T,
                            ioLoop=self.io_loop,
                            interval=0.001).execute()
     yield [s1, s2, s3]
コード例 #3
0
    def test_ComplexAll(self):
        completed = [False]

        @chain.source
        def func():
            r1, r2 = yield chain.All([s1.execute(), s2.execute()])
            self.assertEqual([r1, r2], ['1', ['2', '3']])
            completed[0] = True
            self.stop()

        s1 = ServiceMock(chunks=['1'], T=self.T, ioLoop=self.io_loop)
        s2 = ServiceMock(chunks=['2', '3'], T=self.T, ioLoop=self.io_loop)
        func()
        self.wait()
        self.assertTrue(completed[0])
コード例 #4
0
    def test_AllWithNones(self):
        completed = [False]

        @chain.source
        def func():
            r1, r2 = yield chain.All([s1.execute(), s2.execute()])
            self.assertEqual([r1, r2], [None, None])
            completed[0] = True
            self.stop()

        s1 = ServiceMock(chunks=[], T=self.T, ioLoop=self.io_loop)
        s2 = ServiceMock(chunks=[], T=self.T, ioLoop=self.io_loop)
        func()
        self.wait(timeout=0.5)
        self.assertTrue(completed[0])
コード例 #5
0
    def test_MultipleChunk_SingleThen_YieldAsyncMiddleman(self):
        expected = [
            lambda r: self.assertEqual([1, 2], r.get()),
            lambda r: self.assertEqual([2, 3], r.get()),
            lambda r: self.assertEqual([3, 4], r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def middleMan(result):
            r = result.get()
            s1 = yield ServiceMock(chunks=[r, r + 1],
                                   T=self.T,
                                   ioLoop=self.io_loop,
                                   interval=0.001).execute()
            s2 = yield
            yield [s1, s2]

        f = ServiceMock(chunks=[1, 2, 3],
                        T=self.T,
                        ioLoop=self.io_loop,
                        interval=0.01).execute()
        f.then(middleMan).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #6
0
 def test_Generator(self):
     chain = ServiceMock(chunks=[1, 2, 3], T=self.T,
                         ioLoop=self.io_loop).execute()
     collect = []
     for result in chain:
         collect.append(result)
     self.assertEqual([1, 2, 3], collect)
コード例 #7
0
 def test_PartialGenerator(self):
     f = ServiceMock(chunks=[1, 2, 3], T=self.T,
                     ioLoop=self.io_loop).execute()
     collect = [f.get()]
     for r in f:
         collect.append(r)
     self.assertEqual([1, 2, 3], collect)
コード例 #8
0
    def test_SingleChunk_SingleThen_YieldAsyncDoubleMiddlemanWithMoreChunks(
            self):
        expected = [
            lambda r: self.assertEqual([4, 5, 6, 7, 8], r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def middleMan(result):
            result.get()
            s1 = yield ServiceMock(chunks=[4, 5],
                                   T=self.T,
                                   ioLoop=self.io_loop,
                                   interval=0.001).execute()
            s2 = yield
            s3 = yield ServiceMock(chunks=[6, 7, 8],
                                   T=self.T,
                                   ioLoop=self.io_loop,
                                   interval=0.001).execute()
            s4 = yield
            s5 = yield
            yield [s1, s2, s3, s4, s5]

        f = ServiceMock(chunks=[1],
                        T=self.T,
                        ioLoop=self.io_loop,
                        interval=0.01).execute()
        f.then(middleMan).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #9
0
    def test_MultipleChunk_SingleThen_YieldAsyncErrorMiddleman(self):
        expected = [
            lambda r: self.assertRaises(Exception, r.get),
            lambda r: self.assertRaises(Exception, r.get),
            lambda r: self.assertRaises(Exception, r.get),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def middleMan(result):
            result.get()
            s1 = yield ServiceMock(chunks=[4, Exception(), 6],
                                   T=self.T,
                                   ioLoop=self.io_loop,
                                   interval=0.001).execute()
            # Here exception comes
            s2 = yield
            s3 = yield
            print('This should not be seen!', s1, s2, s3)
            yield 1

        f = ServiceMock(chunks=[1, 2, 3], T=self.T,
                        ioLoop=self.io_loop).execute()
        f.then(middleMan).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #10
0
 def firstStep():
     r1 = yield Chain([lambda: 1], ioLoop=self.io_loop)
     yield ServiceMock(chunks=[],
                       T=self.T,
                       ioLoop=self.io_loop,
                       interval=0.002).execute()
     yield r1
コード例 #11
0
 def test_GetMultipleErrorChunks(self):
     f = ServiceMock(chunks=[ValueError('Oops1'),
                             IOError('Oops2')],
                     T=self.T,
                     ioLoop=self.io_loop).execute()
     self.assertRaises(ValueError, f.get)
     self.assertRaises(IOError, f.get)
コード例 #12
0
 def test_GetSingleChunkAfterMultipleWaiting(self):
     f = ServiceMock(chunks=[1], T=self.T, ioLoop=self.io_loop).execute()
     f.wait()
     f.wait()
     f.wait()
     r = f.get()
     self.assertEqual(1, r)
コード例 #13
0
 def test_GetValueErrors(self):
     f = ServiceMock(chunks=[1], T=self.T, ioLoop=self.io_loop).execute()
     self.assertRaises(ValueError, f.get, 0)
     self.assertRaises(ValueError, f.get, -1.0)
     self.assertRaises(ValueError, f.get, 0.0009)
     self.assertRaises(TypeError, f.get, 'str')
     self.assertRaises(TypeError, f.get, '0.1')
コード例 #14
0
    def test_YieldAsyncMiddlemanExtraChunksResultsInChokeEventForever(self):
        expected = [
            lambda r: self.assertRaises(ChokeEvent, r.get),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def middleMan(result):
            result.get()
            s1 = yield ServiceMock(chunks=[4, 5],
                                   T=self.T,
                                   ioLoop=self.io_loop,
                                   interval=0.001).execute()
            s2 = yield
            # This one will lead to the ChokeEvent
            s3 = yield
            s4 = yield
            yield [s1, s2, s3, s4]

        f = ServiceMock(chunks=[1],
                        T=self.T,
                        ioLoop=self.io_loop,
                        interval=0.01).execute()
        f.then(middleMan).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #15
0
 def middleMan(result):
     r = result.get()
     s1 = yield ServiceMock(chunks=[r, r + 1],
                            T=self.T,
                            ioLoop=self.io_loop,
                            interval=0.001).execute()
     s2 = yield
     yield [s1, s2]
コード例 #16
0
 def test_GetSingleChunkMultipleTimesAfterWaiting(self):
     s = ServiceMock(chunks=[1], T=self.T, ioLoop=self.io_loop)
     f1 = s.execute()
     f1.wait()
     f1.get()
     f2 = s.execute()
     f2.wait()
     r2 = f2.get()
     self.assertEqual(1, r2)
コード例 #17
0
 def test_GetMultipleChunks(self):
     f = ServiceMock(chunks=[1, 2, 3], T=self.T,
                     ioLoop=self.io_loop).execute()
     r1 = f.get()
     r2 = f.get()
     r3 = f.get()
     self.assertEqual(1, r1)
     self.assertEqual(2, r2)
     self.assertEqual(3, r3)
コード例 #18
0
 def test_SingleChunk_SingleThen(self):
     expected = [
         lambda r: self.assertEqual(1, r.get()),
         lambda r: self.assertRaises(ChokeEvent, r.get),
     ]
     check = checker(expected, self)
     f = ServiceMock(chunks=[1], T=self.T, ioLoop=self.io_loop).execute()
     f.then(check)
     self.wait()
     self.assertTrue(len(expected) == 0)
コード例 #19
0
 def middleMan(result):
     result.get()
     s1 = yield ServiceMock(chunks=[4, 5],
                            T=self.T,
                            ioLoop=self.io_loop,
                            interval=0.001).execute()
     s2 = yield
     # This one will lead to the ChokeEvent
     s3 = yield
     yield [s1, s2, s3]
コード例 #20
0
 def test_WaitWithTimeout(self):
     f = ServiceMock(chunks=[1],
                     T=self.T,
                     ioLoop=self.io_loop,
                     interval=0.1).execute()
     f.wait(0.050)
     self.assertTrue(len(f._pending) == 0)
     f.wait(0.040)
     self.assertTrue(len(f._pending) == 0)
     f.wait(0.011)
     self.assertFalse(len(f._pending) == 0)
コード例 #21
0
 def middleMan(result):
     result.get()
     s1 = yield ServiceMock(chunks=[4, Exception(), 6],
                            T=self.T,
                            ioLoop=self.io_loop,
                            interval=0.001).execute()
     # Here exception comes
     s2 = yield
     s3 = yield
     print('This should not be seen!', s1, s2, s3)
     yield 1
コード例 #22
0
    def test_GetMultipleMixChunksWithComplexChain(self):
        def middleMan(result):
            r = result.get()
            if r == 2:
                raise Exception('=(')
            yield r

        f = ServiceMock(chunks=[1, 2, 3], T=self.T,
                        ioLoop=self.io_loop).execute()
        f.then(middleMan)
        self.assertEqual(1, f.get())
        self.assertRaises(Exception, f.get)
        self.assertEqual(3, f.get())
コード例 #23
0
    def test_NoChunks_Yield(self):
        completed = [False]

        @chain.source
        def compare(s):
            yield s.execute()
            completed[0] = True
            self.stop()

        s = ServiceMock(chunks=[], T=self.T, ioLoop=self.io_loop)
        compare(s)
        self.wait()
        self.assertTrue(completed[0])
コード例 #24
0
    def test_SingleChunk_MultipleThen_Middleman(self):
        expected = [
            lambda r: self.assertEqual(2, r.get()),
        ]
        check = checker(expected, self)

        def middleMan(result):
            return result.get() + 1

        f = ServiceMock(chunks=[1], T=self.T, ioLoop=self.io_loop).execute()
        f.then(middleMan).then(check)
        self.wait(timeout=0.5)
        self.assertTrue(len(expected) == 0)
コード例 #25
0
    def test_SingleChunk_MultipleThen_ErrorMiddleman(self):
        expected = [
            lambda r: self.assertRaises(ValueError, r.get),
            lambda r: self.assertRaises(ValueError, r.get),
        ]
        check = checker(expected, self)

        def middleMan(result):
            raise ValueError('Middleman')

        f = ServiceMock(chunks=[1], T=self.T, ioLoop=self.io_loop).execute()
        f.then(middleMan).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #26
0
    def test_GetMultipleChunksMultipleTimes(self):
        s = ServiceMock(chunks=[1, 2, 3], T=self.T, ioLoop=self.io_loop)
        f1 = s.execute()
        f1.get()
        f1.get()
        f1.get()

        f2 = s.execute()
        r21 = f2.get()
        r22 = f2.get()
        r23 = f2.get()
        self.assertEqual(1, r21)
        self.assertEqual(2, r22)
        self.assertEqual(3, r23)
コード例 #27
0
    def test_SingleChunk_MultipleThen(self):
        expected = [
            lambda r: self.assertEqual(2, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)
        f = ServiceMock(chunks=[1], T=self.T, ioLoop=self.io_loop).execute()

        def firstStep(futureResult):
            r = futureResult.get()
            return r * 2

        f.then(firstStep).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #28
0
    def test_SingleChunk_SingleThen_YieldMiddleman(self):
        expected = [
            lambda r: self.assertEqual(3, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def middleMan(result):
            result.get()
            yield 'String that won\'t be seen by anyone'
            yield 3

        f = ServiceMock(chunks=[1], T=self.T, ioLoop=self.io_loop).execute()
        f.then(middleMan).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #29
0
    def test_NoChunks_MultipleYield(self):
        completed = [0]

        @chain.source
        def compare(s):
            c = yield s.execute()
            try:
                completed[0] += 1
                yield
            except ChokeEvent:
                completed[0] += 1
            self.stop()

        s = ServiceMock(chunks=[], T=self.T, ioLoop=self.io_loop)
        compare(s)
        self.wait(timeout=0.5)
        self.assertEqual(completed[0], 2)
コード例 #30
0
    def test_SingleChunk_MultipleChainItems_MixedProcessing2(self):
        expected = [
            lambda r: self.assertEqual(6, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def firstStep(result):
            yield result.get() * 3

        def secondStep(result):
            r = result.get()
            return r * 2

        f = ServiceMock(chunks=[1], T=self.T, ioLoop=self.io_loop).execute()
        f.then(firstStep).then(secondStep).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)