示例#1
0
    def test_nogroups(self):
        db = FakeDatabase()
        midware = FakeMiddleware(db)
        environ = {}
        rs_limits.rs_preprocess(midware, environ)

        self.assertEqual(environ, {})
        self.assertEqual(db.actions, [])
示例#2
0
    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)
示例#3
0
    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'),
                ])
示例#4
0
    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'))
示例#5
0
    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'),
                ])
示例#6
0
    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'),
        ])
示例#7
0
    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')
示例#8
0
    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'),
        ])
示例#9
0
    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'),
        ])
示例#10
0
    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'),
                ])