示例#1
0
 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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
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
        }