示例#1
0
 def test_expired_entry(self):
     key = ("1-1", 1)
     default = "default"
     rev_info = "rev_info"
     rev_cache = RevCache()
     rev_cache._cache[key] = rev_info
     rev_cache._validate_entry = create_mock_full(return_value=False)
     # Call
     ntools.eq_(rev_cache.get(key, default=default), default)
     # Tests
     assert_these_calls(rev_cache._validate_entry, [call(rev_info)])
示例#2
0
 def test_with_no_free_up(self, verify_epoch):
     key1 = ("1-1", 1)
     key2 = ("1-2", 1)
     rev_info1 = self._create_rev_info(key1[0], key1[1], 1)
     rev_info2 = self._create_rev_info(key2[0], key2[1], 2)
     verify_epoch.return_value = ConnectedHashTree.EPOCH_OK
     rev_cache = RevCache(capacity=1)
     rev_cache._cache[key1] = rev_info1
     rev_cache._validate_entry = create_mock_full(return_value=True)
     rev_cache.get = create_mock()
     rev_cache.get.return_value = None
     # Call
     ntools.assert_false(rev_cache.add(rev_info2))
     # Tests
     ntools.assert_true(key1 in rev_cache._cache)
     assert_these_calls(verify_epoch, [call(rev_info2.p.epoch)])
     assert_these_calls(rev_cache.get, [call(key2)])
示例#3
0
    def test_with_free_up(self, verify_epoch):
        key1 = ("1-1", 1)
        key2 = ("1-2", 1)
        rev_info1 = self._create_rev_info(key1[0], key1[1], 1)
        rev_info2 = self._create_rev_info(key2[0], key2[1], 2)
        verify_epoch.return_value = ConnectedHashTree.EPOCH_OK

        def validate_entry_side_effect(rev_info):
            del rev_cache._cache[(rev_info.isd_as(), rev_info.p.ifID)]
            return False

        rev_cache = RevCache(capacity=1)
        rev_cache._cache[key1] = rev_info1
        rev_cache._validate_entry = create_mock()
        rev_cache._validate_entry.side_effect = validate_entry_side_effect
        rev_cache.get = create_mock()
        rev_cache.get.return_value = None
        # Call
        ntools.assert_true(rev_cache.add(rev_info2))
        # Tests
        ntools.eq_(rev_cache._cache[key2], rev_info2)
        ntools.assert_true(key1 not in rev_cache._cache)
        assert_these_calls(verify_epoch, [call(rev_info2.p.epoch)])
        assert_these_calls(rev_cache.get, [call(key2)])