~openstack-charmers-next/charms/xenial/ceph-mon/trunk

« back to all changes in this revision

Viewing changes to unit_tests/test_ceph_broker.py

  • Committer: James Page
  • Date: 2014-11-19 22:12:04 UTC
  • mfrom: (86.1.9 trunk)
  • Revision ID: james.page@ubuntu.com-20141119221204-tglc0fg1j9tz01z1
[dosaboy,r=james-page] Add broker functionality

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import json
 
2
import mock
 
3
import unittest
 
4
 
 
5
import ceph_broker
 
6
 
 
7
 
 
8
class CephBrokerTestCase(unittest.TestCase):
 
9
 
 
10
    def setUp(self):
 
11
        super(CephBrokerTestCase, self).setUp()
 
12
 
 
13
    @mock.patch('ceph_broker.log')
 
14
    def test_process_requests_noop(self, mock_log):
 
15
        req = json.dumps({'api-version': 1, 'ops': []})
 
16
        rc = ceph_broker.process_requests(req)
 
17
        self.assertEqual(json.loads(rc), {'exit-code': 0})
 
18
 
 
19
    @mock.patch('ceph_broker.log')
 
20
    def test_process_requests_missing_api_version(self, mock_log):
 
21
        req = json.dumps({'ops': []})
 
22
        rc = ceph_broker.process_requests(req)
 
23
        self.assertEqual(json.loads(rc), {'exit-code': 1,
 
24
                                          'stderr':
 
25
                                          ('Missing or invalid api version '
 
26
                                           '(None)')})
 
27
 
 
28
    @mock.patch('ceph_broker.log')
 
29
    def test_process_requests_invalid_api_version(self, mock_log):
 
30
        req = json.dumps({'api-version': 2, 'ops': []})
 
31
        rc = ceph_broker.process_requests(req)
 
32
        self.assertEqual(json.loads(rc),
 
33
                         {'exit-code': 1,
 
34
                          'stderr': 'Missing or invalid api version (2)'})
 
35
 
 
36
    @mock.patch('ceph_broker.log')
 
37
    def test_process_requests_invalid(self, mock_log):
 
38
        reqs = json.dumps({'api-version': 1, 'ops': [{'op': 'invalid_op'}]})
 
39
        rc = ceph_broker.process_requests(reqs)
 
40
        self.assertEqual(json.loads(rc),
 
41
                         {'exit-code': 1,
 
42
                          'stderr': "Unknown operation 'invalid_op'"})
 
43
 
 
44
    @mock.patch('ceph_broker.create_pool')
 
45
    @mock.patch('ceph_broker.pool_exists')
 
46
    @mock.patch('ceph_broker.log')
 
47
    def test_process_requests_create_pool(self, mock_log, mock_pool_exists,
 
48
                                          mock_create_pool):
 
49
        mock_pool_exists.return_value = False
 
50
        reqs = json.dumps({'api-version': 1,
 
51
                           'ops': [{'op': 'create-pool', 'name':
 
52
                                    'foo', 'replicas': 3}]})
 
53
        rc = ceph_broker.process_requests(reqs)
 
54
        mock_pool_exists.assert_called_with(service='admin', name='foo')
 
55
        mock_create_pool.assert_called_with(service='admin', name='foo',
 
56
                                            replicas=3)
 
57
        self.assertEqual(json.loads(rc), {'exit-code': 0})
 
58
 
 
59
    @mock.patch('ceph_broker.create_pool')
 
60
    @mock.patch('ceph_broker.pool_exists')
 
61
    @mock.patch('ceph_broker.log')
 
62
    def test_process_requests_create_pool_exists(self, mock_log,
 
63
                                                 mock_pool_exists,
 
64
                                                 mock_create_pool):
 
65
        mock_pool_exists.return_value = True
 
66
        reqs = json.dumps({'api-version': 1,
 
67
                           'ops': [{'op': 'create-pool', 'name': 'foo',
 
68
                                    'replicas': 3}]})
 
69
        rc = ceph_broker.process_requests(reqs)
 
70
        mock_pool_exists.assert_called_with(service='admin', name='foo')
 
71
        self.assertFalse(mock_create_pool.called)
 
72
        self.assertEqual(json.loads(rc), {'exit-code': 0})