diff --git a/tests/util/__init__.py b/tests/util/__init__.py
index d0e9399dda..bfebb0f644 100644
--- a/tests/util/__init__.py
+++ b/tests/util/__init__.py
@@ -12,4 +12,3 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-
diff --git a/tests/util/test_dict_cache.py b/tests/util/test_dict_cache.py
index 7bbe795622..272b71034a 100644
--- a/tests/util/test_dict_cache.py
+++ b/tests/util/test_dict_cache.py
@@ -14,7 +14,6 @@
# limitations under the License.
-from twisted.internet import defer
from tests import unittest
from synapse.util.caches.dictionary_cache import DictionaryCache
diff --git a/tests/util/test_snapshot_cache.py b/tests/util/test_snapshot_cache.py
index 4ee0d49673..7e289715ba 100644
--- a/tests/util/test_snapshot_cache.py
+++ b/tests/util/test_snapshot_cache.py
@@ -19,6 +19,7 @@ from .. import unittest
from synapse.util.caches.snapshot_cache import SnapshotCache
from twisted.internet.defer import Deferred
+
class SnapshotCacheTestCase(unittest.TestCase):
def setUp(self):
diff --git a/tests/util/test_treecache.py b/tests/util/test_treecache.py
index 1efbeb6b33..7ab578a185 100644
--- a/tests/util/test_treecache.py
+++ b/tests/util/test_treecache.py
@@ -18,6 +18,7 @@ from .. import unittest
from synapse.util.caches.treecache import TreeCache
+
class TreeCacheTestCase(unittest.TestCase):
def test_get_set_onelevel(self):
cache = TreeCache()
@@ -76,3 +77,9 @@ class TreeCacheTestCase(unittest.TestCase):
cache[("b",)] = "B"
cache.clear()
self.assertEquals(len(cache), 0)
+
+ def test_contains(self):
+ cache = TreeCache()
+ cache[("a",)] = "A"
+ self.assertTrue(("a",) in cache)
+ self.assertFalse(("b",) in cache)
diff --git a/tests/util/test_wheel_timer.py b/tests/util/test_wheel_timer.py
new file mode 100644
index 0000000000..c44567e52e
--- /dev/null
+++ b/tests/util/test_wheel_timer.py
@@ -0,0 +1,74 @@
+# -*- coding: utf-8 -*-
+# Copyright 2016 OpenMarket Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from .. import unittest
+
+from synapse.util.wheel_timer import WheelTimer
+
+
+class WheelTimerTestCase(unittest.TestCase):
+ def test_single_insert_fetch(self):
+ wheel = WheelTimer(bucket_size=5)
+
+ obj = object()
+ wheel.insert(100, obj, 150)
+
+ self.assertListEqual(wheel.fetch(101), [])
+ self.assertListEqual(wheel.fetch(110), [])
+ self.assertListEqual(wheel.fetch(120), [])
+ self.assertListEqual(wheel.fetch(130), [])
+ self.assertListEqual(wheel.fetch(149), [])
+ self.assertListEqual(wheel.fetch(156), [obj])
+ self.assertListEqual(wheel.fetch(170), [])
+
+ def test_mutli_insert(self):
+ wheel = WheelTimer(bucket_size=5)
+
+ obj1 = object()
+ obj2 = object()
+ obj3 = object()
+ wheel.insert(100, obj1, 150)
+ wheel.insert(105, obj2, 130)
+ wheel.insert(106, obj3, 160)
+
+ self.assertListEqual(wheel.fetch(110), [])
+ self.assertListEqual(wheel.fetch(135), [obj2])
+ self.assertListEqual(wheel.fetch(149), [])
+ self.assertListEqual(wheel.fetch(158), [obj1])
+ self.assertListEqual(wheel.fetch(160), [])
+ self.assertListEqual(wheel.fetch(200), [obj3])
+ self.assertListEqual(wheel.fetch(210), [])
+
+ def test_insert_past(self):
+ wheel = WheelTimer(bucket_size=5)
+
+ obj = object()
+ wheel.insert(100, obj, 50)
+ self.assertListEqual(wheel.fetch(120), [obj])
+
+ def test_insert_past_mutli(self):
+ wheel = WheelTimer(bucket_size=5)
+
+ obj1 = object()
+ obj2 = object()
+ obj3 = object()
+ wheel.insert(100, obj1, 150)
+ wheel.insert(100, obj2, 140)
+ wheel.insert(100, obj3, 50)
+ self.assertListEqual(wheel.fetch(110), [obj3])
+ self.assertListEqual(wheel.fetch(120), [])
+ self.assertListEqual(wheel.fetch(147), [obj2])
+ self.assertListEqual(wheel.fetch(200), [obj1])
+ self.assertListEqual(wheel.fetch(240), [])
|