def METHOD_NAME(self):
    ips = ("256.256.256.257", "257.257.257.257", "258.258.258.258")
    kwargs = {"name": "testing", "limit": 5, "timeout": 15 * 60}
    throttle = Throttle(**kwargs)
    for ip in ips:
        # Throttle should not be engaged by default
        self.assertFalse(throttle.check(ip))
        # Pretend to fail a bunch of events
        for x in range(50):
            obj = throttle.update(ip)
            self.assertFalse(obj)
        # Next ones should be blocked
        self.assertTrue(throttle.check(ip))
        for x in range(throttle.cache_size * 2):
            obj = throttle.update(ip)
            self.assertFalse(obj)
        # Should still be blocked
        self.assertTrue(throttle.check(ip))
        # Number of values should be limited by cache size
        self.assertEqual(throttle.cache_size, len(throttle.get(ip)))
    cache = throttle.get()
    # Make sure there are entries for each IP
    self.assertEqual(len(ips), len(cache.keys()))
    # There should only be (cache_size * num_ips) total in the Throttle cache
    self.assertEqual(sum([len(cache[x]) for x in cache.keys()]), throttle.cache_size * len(ips))
    # Make sure the cache is populated
    self.assertTrue(throttle.get())
    # Remove the test IPs from the throttle cache
    # (in case persistent storage was configured by the user)
    for ip in ips:
        self.assertTrue(throttle.remove(ip))
    # Make sure the cache is empty
    self.assertFalse(throttle.get())