예제 #1
0
    def test_remaining(self):
        q = Quota(1)
        self.assertEquals(1, q.remaining())

        q._start()
        self.assertTrue(q.running())
        time.sleep(0.5)
        q._stop()

        self.assertFalse(q.running())
        self.assertLessEqual(q.remaining(), 0.5)
예제 #2
0
    def test_remaining(self):
        q = Quota(1)
        self.assertEquals(1, q.remaining())

        q._start()
        self.assertTrue(q.running())
        time.sleep(0.5)
        q._stop()

        self.assertFalse(q.running())
        self.assertLessEqual(q.remaining(), 0.5)
예제 #3
0
    def test_nesting(self):
        q1 = Quota(0.5)
        q2 = Quota(1)

        try:
            with timeout(q1, Outer):
                with timeout(q2, Inner):
                    time.sleep(1)
            self.fail()
        except Outer:
            self.assertFalse(q1.running())
            self.assertLessEqual(q1.remaining(), 0.05)

            self.assertFalse(q2.running())
            self.assertTrue(0.45 < q2.remaining() <= 0.5)
예제 #4
0
    def test_nesting(self):
        q1 = Quota(0.5)
        q2 = Quota(1)

        try:
            with timeout(q1, Outer):
                with timeout(q2, Inner):
                    time.sleep(1)
            self.fail()
        except Outer:
            self.assertFalse(q1.running())
            self.assertLessEqual(q1.remaining(), 0.05)

            self.assertFalse(q2.running())
            self.assertTrue(0.45 < q2.remaining() <= 0.5)
예제 #5
0
    def test_timeout(self):
        q = Quota(1)
        with timeout(q, RuntimeError):
            time.sleep(0.2)
        self.assertTrue(0.75 < q.remaining() <= 0.8)
        time.sleep(1)
        self.assertTrue(0.75 < q.remaining() <= 0.8)
        with timeout(q, RuntimeError):
            time.sleep(0.2)
        self.assertTrue(0.55 < q.remaining() <= 0.6)

        try:
            with timeout(q, RuntimeError):
                time.sleep(0.7)
            self.fail()
        except RuntimeError:
            pass
예제 #6
0
    def test_timeout(self):
        q = Quota(1)
        with timeout(q, RuntimeError):
            time.sleep(0.2)
        self.assertTrue(0.75 < q.remaining() <= 0.8)
        time.sleep(1)
        self.assertTrue(0.75 < q.remaining() <= 0.8)
        with timeout(q, RuntimeError):
            time.sleep(0.2)
        self.assertTrue(0.55 < q.remaining() <= 0.6)

        try:
            with timeout(q, RuntimeError):
                time.sleep(0.7)
            self.fail()
        except RuntimeError:
            pass
예제 #7
0
    def test_continuation(self):
        q = Quota(1)

        q._start()
        q._stop()
        time.sleep(0.2)
        q._start()
        q._stop()

        # tolerate a little time spent outside the sleep:
        self.assertGreater(q.remaining(), 0.9)
예제 #8
0
    def test_continuation(self):
        q = Quota(1)

        q._start()
        q._stop()
        time.sleep(0.2)
        q._start()
        q._stop()

        # tolerate a little time spent outside the sleep:
        self.assertGreater(q.remaining(), 0.9)