def test_GET_no_delay(self): # Test a limit handles 1 GET per second. limit = Limit("GET", "*", ".*", 1, 1) when(limit)._get_time().thenReturn(0.0) delay = limit("GET", "/anything") self.assertEqual(None, delay) self.assertEqual(0, limit.next_request) self.assertEqual(0, limit.last_request)
def test_GET_no_delay(self): # Test a limit handles 1 GET per second. limit = Limit("GET", "*", ".*", 1, 1) limit._get_time = MagicMock(return_value=0.0) delay = limit("GET", "/anything") self.assertEqual(None, delay) self.assertEqual(0, limit.next_request) self.assertEqual(0, limit.last_request)
def test_GET_delay(self): # Test two calls to 1 GET per second limit. limit = Limit("GET", "*", ".*", 1, 1) limit._get_time = MagicMock(return_value=0.0) delay = limit("GET", "/anything") self.assertEqual(None, delay) delay = limit("GET", "/anything") self.assertEqual(1, delay) self.assertEqual(1, limit.next_request) self.assertEqual(0, limit.last_request) limit._get_time = MagicMock(return_value=4.0) delay = limit("GET", "/anything") self.assertEqual(None, delay) self.assertEqual(4, limit.next_request) self.assertEqual(4, limit.last_request)
def test_GET_delay(self): # Test two calls to 1 GET per second limit. limit = Limit("GET", "*", ".*", 1, 1) when(limit)._get_time().thenReturn(0.0) delay = limit("GET", "/anything") self.assertEqual(None, delay) delay = limit("GET", "/anything") self.assertEqual(1, delay) self.assertEqual(1, limit.next_request) self.assertEqual(0, limit.last_request) when(limit)._get_time().thenReturn(4.0) delay = limit("GET", "/anything") self.assertEqual(None, delay) self.assertEqual(4, limit.next_request) self.assertEqual(4, limit.last_request)
from trove.quota.models import Quota import testtools import webob from mock import Mock, MagicMock import six from trove.common import limits from trove.common.limits import Limit from trove.limits import views from trove.limits.service import LimitsController from oslo.serialization import jsonutils from trove.quota.quota import QUOTAS TEST_LIMITS = [ Limit("GET", "/delayed", "^/delayed", 1, limits.PER_MINUTE), Limit("POST", "*", ".*", 7, limits.PER_MINUTE), Limit("POST", "/mgmt", "^/mgmt", 3, limits.PER_MINUTE), Limit("PUT", "*", "", 10, limits.PER_MINUTE), ] class BaseLimitTestSuite(testtools.TestCase): """Base test suite which provides relevant stubs and time abstraction.""" def setUp(self): super(BaseLimitTestSuite, self).setUp() self.absolute_limits = { "max_instances": 55, "max_volumes": 100, "max_backups": 40 }