def test_nogroups(self): db = FakeDatabase() midware = FakeMiddleware(db) environ = {} rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ, {}) self.assertEqual(db.actions, [])
def test_nogroups(self): db = mock.Mock(**{'get.return_value': None}) midware = mock.Mock(db=db) environ = {} rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ, {}) self.assertFalse(db.get.called)
def test_group_select(self): db = FakeDatabase({'rs-group:grp3': 'lim_class'}) midware = FakeMiddleware(db) environ = dict( HTTP_X_PP_GROUPS='grp1,grp2,grp3,grp4,grp5', ) rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ, { 'HTTP_X_PP_GROUPS': 'grp1,grp2,grp3,grp4,grp5', 'turnstile.nova.limitclass': 'lim_class', }) self.assertEqual(db.actions, [ ('get', 'rs-group:grp1'), ('get', 'rs-group:grp2'), ('get', 'rs-group:grp3'), ])
def test_group_context_no_quota_class(self): db = FakeDatabase({'rs-group:grp3': 'lim_class'}) midware = FakeMiddleware(db) context = FakeContext() environ = { 'HTTP_X_PP_GROUPS': 'grp1,grp2,grp3,grp4,grp5', 'nova.context': context, } rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ['turnstile.nova.limitclass'], 'lim_class') self.assertEqual(db.actions, [ ('get', 'rs-group:grp1'), ('get', 'rs-group:grp2'), ('get', 'rs-group:grp3'), ]) self.assertFalse(hasattr(context, 'quota_class'))
def test_group_order(self): db = FakeDatabase() midware = FakeMiddleware(db) environ = dict( HTTP_X_PP_GROUPS='grp1,grp2;q=0.5,grp3;q=0.7, grp4;q=0.9,grp5', ) rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ, dict( HTTP_X_PP_GROUPS='grp1,grp2;q=0.5,grp3;q=0.7, grp4;q=0.9,grp5', )) self.assertEqual(db.actions, [ ('get', 'rs-group:grp1'), ('get', 'rs-group:grp5'), ('get', 'rs-group:grp4'), ('get', 'rs-group:grp3'), ('get', 'rs-group:grp2'), ])
def test_group_order(self): db = mock.Mock(**{'get.return_value': None}) midware = mock.Mock(db=db) environ = dict( HTTP_X_PP_GROUPS='grp1,grp2;q=0.5,grp3;q=0.7, grp4;q=0.9,grp5', ) rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ, dict( HTTP_X_PP_GROUPS='grp1,grp2;q=0.5,grp3;q=0.7, grp4;q=0.9,grp5', )) db.assert_has_calls([ mock.call.get('rs-group:grp1'), mock.call.get('rs-group:grp5'), mock.call.get('rs-group:grp4'), mock.call.get('rs-group:grp3'), mock.call.get('rs-group:grp2'), ])
def test_group_context(self): classes = {'rs-group:grp3': 'lim_class'} db = mock.Mock(**{'get.side_effect': lambda x: classes.get(x)}) midware = mock.Mock(db=db) context = mock.Mock(quota_class=None, spec=['quota_class']) environ = { 'HTTP_X_PP_GROUPS': 'grp1,grp2,grp3,grp4,grp5', 'nova.context': context, } rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ['turnstile.nova.limitclass'], 'lim_class') db.assert_has_calls([ mock.call.get('rs-group:grp1'), mock.call.get('rs-group:grp2'), mock.call.get('rs-group:grp3'), ]) self.assertEqual(context.quota_class, 'lim_class')
def test_group_repose_workaround(self): classes = {'rs-group:grp5': 'lim_class'} db = mock.Mock(**{'get.side_effect': lambda x: classes.get(x)}) midware = mock.Mock(db=db) environ = { 'HTTP_X_PP_GROUPS': 'grp1,grp2,grp3,grp4,grp5', 'turnstile.conf': {'rs_limits': {'groups': "grp5=1.0"}}, } rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ, { 'HTTP_X_PP_GROUPS': 'grp1,grp2,grp3,grp4,grp5', 'turnstile.conf': {'rs_limits': {'groups': "grp5=1.0"}}, 'turnstile.nova.limitclass': 'lim_class', }) db.assert_has_calls([ mock.call.get('rs-group:grp5'), ])
def test_group_select(self): classes = {'rs-group:grp3': 'lim_class'} db = mock.Mock(**{'get.side_effect': lambda x: classes.get(x)}) midware = mock.Mock(db=db) environ = dict( HTTP_X_PP_GROUPS='grp1,grp2,grp3,grp4,grp5', ) rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ, { 'HTTP_X_PP_GROUPS': 'grp1,grp2,grp3,grp4,grp5', 'turnstile.nova.limitclass': 'lim_class', }) db.assert_has_calls([ mock.call.get('rs-group:grp1'), mock.call.get('rs-group:grp2'), mock.call.get('rs-group:grp3'), ])
def test_group_badqual(self): db = FakeDatabase() midware = FakeMiddleware(db) environ = dict( HTTP_X_PP_GROUPS=('grp1;q=0.1,grp2;f=a;q=0.5,grp3;q=0.6a,' 'grp4;f=0.7'), ) rs_limits.rs_preprocess(midware, environ) self.assertEqual(environ, dict( HTTP_X_PP_GROUPS=('grp1;q=0.1,grp2;f=a;q=0.5,grp3;q=0.6a,' 'grp4;f=0.7'), )) self.assertEqual(db.actions, [ ('get', 'rs-group:grp2'), ('get', 'rs-group:grp3'), ('get', 'rs-group:grp4'), ('get', 'rs-group:grp1'), ])