|
22 | 22 | from unittest import mock |
23 | 23 |
|
24 | 24 | from google.protobuf import timestamp_pb2 |
| 25 | +from tensorboard.uploader import test_util |
25 | 26 | from tensorboard.uploader import util |
26 | 27 | from tensorboard import test as tb_test |
27 | 28 |
|
28 | 29 |
|
| 30 | +class RateLimiterTest(tb_test.TestCase): |
| 31 | + def test_rate_limiting(self): |
| 32 | + rate_limiter = util.RateLimiter(10) |
| 33 | + fake_time = test_util.FakeTime(current=1000) |
| 34 | + with mock.patch.object(rate_limiter, "_time", fake_time): |
| 35 | + self.assertEqual(1000, fake_time.time()) |
| 36 | + # No sleeping for initial tick. |
| 37 | + rate_limiter.tick() |
| 38 | + self.assertEqual(1000, fake_time.time()) |
| 39 | + # Second tick requires a full sleep. |
| 40 | + rate_limiter.tick() |
| 41 | + self.assertEqual(1010, fake_time.time()) |
| 42 | + # Third tick requires a sleep just to make up the remaining second. |
| 43 | + fake_time.sleep(9) |
| 44 | + self.assertEqual(1019, fake_time.time()) |
| 45 | + rate_limiter.tick() |
| 46 | + self.assertEqual(1020, fake_time.time()) |
| 47 | + # Fourth tick requires no sleep since we have no remaining seconds. |
| 48 | + fake_time.sleep(11) |
| 49 | + self.assertEqual(1031, fake_time.time()) |
| 50 | + rate_limiter.tick() |
| 51 | + self.assertEqual(1031, fake_time.time()) |
| 52 | + |
| 53 | + |
29 | 54 | class GetUserConfigDirectoryTest(tb_test.TestCase): |
30 | 55 | def test_windows(self): |
31 | 56 | with mock.patch.object(os, "name", "nt"): |
|
0 commit comments