Exemplo n.º 1
0
 def _populate_limits(self, request):
     """Put limit info into a request."""
     _limits = [
         limits.Limit("GET", "*", ".*", 10, 60).display(),
         limits.Limit("POST", "*", ".*", 5, 60 * 60).display(),
     ]
     request.environ["nova.limits"] = _limits
     return request
Exemplo n.º 2
0
 def setUp(self):
     """Prepare middleware for use through fake WSGI app."""
     BaseLimitTestSuite.setUp(self)
     _limits = [
         limits.Limit("GET", "*", ".*", 1, 60),
     ]
     self.app = limits.RateLimitingMiddleware(self._empty_app, _limits)
Exemplo n.º 3
0
 def test_GET_no_delay(self):
     """Test a limit handles 1 GET per second."""
     limit = limits.Limit("GET", "*", ".*", 1, 1)
     delay = limit("GET", "/anything")
     self.assertEqual(None, delay)
     self.assertEqual(0, limit.next_request)
     self.assertEqual(0, limit.last_request)
Exemplo n.º 4
0
    def test_GET_delay(self):
        """Test two calls to 1 GET per second limit."""
        limit = limits.Limit("GET", "*", ".*", 1, 1)
        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)

        self.time += 4

        delay = limit("GET", "/anything")
        self.assertEqual(None, delay)
        self.assertEqual(4, limit.next_request)
        self.assertEqual(4, limit.last_request)
Exemplo n.º 5
0
"""

import httplib
import json
import StringIO
import stubout
import time
import unittest
import webob

from xml.dom.minidom import parseString

from nova.api.openstack import limits

TEST_LIMITS = [
    limits.Limit("GET", "/delayed", "^/delayed", 1, limits.PER_MINUTE),
    limits.Limit("POST", "*", ".*", 7, limits.PER_MINUTE),
    limits.Limit("POST", "/servers", "^/servers", 3, limits.PER_MINUTE),
    limits.Limit("PUT", "*", "", 10, limits.PER_MINUTE),
    limits.Limit("PUT", "/servers", "^/servers", 5, limits.PER_MINUTE),
]


class BaseLimitTestSuite(unittest.TestCase):
    """Base test suite which provides relevant stubs and time abstraction."""
    def setUp(self):
        """Run before each test."""
        self.time = 0.0
        self.stubs = stubout.StubOutForTesting()
        self.stubs.Set(limits.Limit, "_get_time", self._get_time)