コード例 #1
0
 def test_SingleSyncChunk_SingleThen(self):
     expected = [lambda r: self.assertEqual(1, r.get())]
     check = checker(expected, self)
     f = Chain([lambda: 1], ioLoop=self.io_loop)
     f.then(check)
     self.wait(timeout=0.5)
     self.assertTrue(len(expected) == 0)
コード例 #2
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)
コード例 #3
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)
コード例 #4
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)
コード例 #5
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)
コード例 #6
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)
コード例 #7
0
 def test_SingleSyncChunk_SingleThen(self):
     expected = [
         lambda r: self.assertEqual(1, r.get()),
     ]
     check = checker(expected, self)
     f = Chain([lambda: 1], ioLoop=self.io_loop)
     f.then(check)
     self.wait(timeout=0.5)
     self.assertTrue(len(expected) == 0)
コード例 #8
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)
コード例 #9
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)
コード例 #10
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)
コード例 #11
0
    def test_SingleErrorChunk_SingleThen(self):
        expected = [lambda r: self.assertRaises(Exception, r.get)]
        check = checker(expected, self)

        def firstStep():
            raise Exception("Actual")

        f = Chain([firstStep], ioLoop=self.io_loop)
        f.then(check)
        self.wait(timeout=0.5)
        self.assertTrue(len(expected) == 0)
コード例 #12
0
    def test_Chain_YieldEmptyServiceInside(self):
        expected = [lambda r: self.assertEqual("Ok", r.get())]
        check = checker(expected, self)

        def firstStep():
            r1 = yield ServiceMock(chunks=[], T=self.T, ioLoop=self.io_loop, interval=0.002).execute()
            yield "Ok"

        f = Chain([firstStep], ioLoop=self.io_loop)
        f.then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #13
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)
コード例 #14
0
    def test_SingleErrorChunk_SingleThen(self):
        expected = [
            lambda r: self.assertRaises(Exception, r.get),
        ]
        check = checker(expected, self)

        def firstStep():
            raise Exception('Actual')

        f = Chain([firstStep], ioLoop=self.io_loop)
        f.then(check)
        self.wait(timeout=0.5)
        self.assertTrue(len(expected) == 0)
コード例 #15
0
    def test_SingleSyncChunk_MultipleThen(self):
        expected = [lambda r: self.assertEqual(6, r.get())]
        check = checker(expected, self)
        f = Chain([lambda: 2], ioLoop=self.io_loop)

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

        f.then(firstStep).then(check)
        self.wait(timeout=0.5)
        self.assertTrue(len(expected) == 0)
コード例 #16
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)
コード例 #17
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)
コード例 #18
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)
コード例 #19
0
    def test_SingleSyncChunk_MultipleThen(self):
        expected = [
            lambda r: self.assertEqual(6, r.get()),
        ]
        check = checker(expected, self)
        f = Chain([lambda: 2], ioLoop=self.io_loop)

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

        f.then(firstStep).then(check)
        self.wait(timeout=0.5)
        self.assertTrue(len(expected) == 0)
コード例 #20
0
    def test_SingleChunk_SingleThen_YieldAsyncDoubleMiddlemanWithLessChunks(self):
        expected = [lambda r: self.assertEqual([4, 5, 6], 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.002).execute()
            s2 = yield
            s3 = yield ServiceMock(chunks=[6], T=self.T, ioLoop=self.io_loop, interval=0.001).execute()
            yield [s1, s2, s3]

        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)
コード例 #21
0
    def test_SingleErrorChunk_MultipleThen(self):
        expected = [lambda r: self.assertRaises(Exception, r.get)]
        check = checker(expected, self)

        def firstStep():
            raise Exception("Actual")

        def secondStep(futureResult):
            futureResult.get()
            self.fail("This one should never be seen by anyone")

        f = Chain([firstStep], ioLoop=self.io_loop)
        f.then(secondStep).then(check)
        self.wait(timeout=0.5)
        self.assertTrue(len(expected) == 0)
コード例 #22
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)
コード例 #23
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)
コード例 #24
0
    def test_YieldChainAndEmptyServiceInside_MultipleSteps(self):
        expected = [lambda r: self.assertEqual("Really Ok", r.get())]
        check = checker(expected, self)

        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"

        def secondStep(result):
            yield "Really " + result.get()

        f = Chain([firstStep], ioLoop=self.io_loop).then(secondStep)
        f.then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #25
0
    def test_YieldAsyncMiddlemanExtraChunkResultsInChokeEvent(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
            yield [s1, s2, s3]

        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)
コード例 #26
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)
コード例 #27
0
    def test_SingleChunk_MultipleChainItems_OnlyCoroutinesProcessing(self):
        expected = [lambda r: self.assertEqual(4, r.get()), lambda r: self.assertRaises(ChokeEvent, r.get)]
        check = checker(expected, self)

        def firstStep(result):
            r = result.get()
            yield "String that won't be seen by anyone"
            yield r * 2

        def secondStep(result):
            yield result.get() * 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)
コード例 #28
0
    def test_SingleErrorChunk_MultipleThen(self):
        expected = [
            lambda r: self.assertRaises(Exception, r.get),
        ]
        check = checker(expected, self)

        def firstStep():
            raise Exception('Actual')

        def secondStep(futureResult):
            futureResult.get()
            self.fail('This one should never be seen by anyone')

        f = Chain([firstStep], ioLoop=self.io_loop)
        f.then(secondStep).then(check)
        self.wait(timeout=0.5)
        self.assertTrue(len(expected) == 0)
コード例 #29
0
    def test_MultipleChunk_SingleThen_YieldMiddleman(self):
        expected = [
            lambda r: self.assertEqual(3, r.get()),
            lambda r: self.assertEqual(6, r.get()),
            lambda r: self.assertEqual(9, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def middleMan(result):
            r = result.get()
            yield 'This string won\'t be seen by anyone'
            yield r * 3
        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)
コード例 #30
0
    def test_Chain_YieldEmptyServiceInside(self):
        expected = [
            lambda r: self.assertEqual('Ok', r.get()),
        ]
        check = checker(expected, self)

        def firstStep():
            r1 = yield ServiceMock(chunks=[],
                                   T=self.T,
                                   ioLoop=self.io_loop,
                                   interval=0.002).execute()
            yield 'Ok'

        f = Chain([firstStep], ioLoop=self.io_loop)
        f.then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #31
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)
コード例 #32
0
    def test_MultipleChunks_MultipleThen_ErrorMiddleman(self):
        expected = [
            lambda r: self.assertEqual(2, r.get()),
            lambda r: self.assertRaises(ValueError, r.get),
            lambda r: self.assertEqual(6, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def middleMan(result):
            if result.get() == 2:
                raise ValueError('Middleman')
            else:
                return result.get() * 2
        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)
コード例 #33
0
    def test_MultipleChunk_SingleThen_YieldErrorMiddleman(self):
        expected = [
            lambda r: self.assertEqual(1, r.get()),
            lambda r: self.assertRaises(Exception, r.get),
            lambda r: self.assertEqual(3, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, 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).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #34
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)
コード例 #35
0
    def test_MultipleChunk_MultipleThen_SyncTransformation(self):
        expected = [
            lambda r: self.assertEqual({"app": "info"}, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def firstStep(result):
            r = result.get()
            return {"app": r}

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

        s = ServiceMock(chunks=["info"], T=self.T, ioLoop=self.io_loop).execute()
        s.then(firstStep).then(secondStep).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #36
0
    def test_SingleChunk_MultipleChainItems_OnlyCoroutinesProcessing(self):
        expected = [
            lambda r: self.assertEqual(4, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def firstStep(result):
            r = result.get()
            yield 'String that won\'t be seen by anyone'
            yield r * 2

        def secondStep(result):
            yield result.get() * 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)
コード例 #37
0
    def test_MultipleChunks_MultipleThen_ErrorMiddleman(self):
        expected = [
            lambda r: self.assertEqual(2, r.get()),
            lambda r: self.assertRaises(ValueError, r.get),
            lambda r: self.assertEqual(6, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def middleMan(result):
            if result.get() == 2:
                raise ValueError('Middleman')
            else:
                return result.get() * 2

        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)
コード例 #38
0
    def test_MultipleChunk_SingleThen_YieldErrorMiddleman(self):
        expected = [
            lambda r: self.assertEqual(1, r.get()),
            lambda r: self.assertRaises(Exception, r.get),
            lambda r: self.assertEqual(3, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, 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).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #39
0
    def test_MultipleChunk_MultipleThen_SyncTransformation(self):
        expected = [
            lambda r: self.assertEqual({'app': 'info'}, r.get()),
            lambda r: self.assertRaises(ChokeEvent, r.get),
        ]
        check = checker(expected, self)

        def firstStep(result):
            r = result.get()
            return {'app': r}

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

        s = ServiceMock(chunks=['info'], T=self.T,
                        ioLoop=self.io_loop).execute()
        s.then(firstStep).then(secondStep).then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)
コード例 #40
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)
コード例 #41
0
    def test_YieldChainAndEmptyServiceInside_MultipleSteps(self):
        expected = [
            lambda r: self.assertEqual('Really Ok', r.get()),
        ]
        check = checker(expected, self)

        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'

        def secondStep(result):
            yield 'Really ' + result.get()

        f = Chain([firstStep], ioLoop=self.io_loop).then(secondStep)
        f.then(check)
        self.wait()
        self.assertTrue(len(expected) == 0)