]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/tests/test_pool.py
1 # -*- coding: utf-8 -*-
2 # pylint: disable=protected-access
7 import unittest
.mock
as mock
9 from . import ControllerTestCase
10 from ..controllers
.pool
import Pool
11 from ..controllers
.task
import Task
12 from ..tools
import NotificationQueue
, TaskManager
15 class MockTask(object):
18 def set_progress(self
, percentage
):
19 self
.percentages
.append(percentage
)
22 class PoolControllerTest(ControllerTestCase
):
24 def setup_server(cls
):
25 Task
._cp
_config
['tools.authenticate.on'] = False
26 Pool
._cp
_config
['tools.authenticate.on'] = False
27 cls
.setup_controllers([Pool
, Task
])
29 @mock.patch('dashboard.services.progress.get_progress_tasks')
30 @mock.patch('dashboard.controllers.pool.Pool._get')
31 @mock.patch('dashboard.services.ceph_service.CephService.send_command')
32 def test_creation(self
, send_command
, _get
, get_progress_tasks
):
34 'pool_name': 'test-pool',
37 'pg_placement_num': 64,
38 'pg_placement_num_target': 63
40 'pool_name': 'test-pool',
43 'pg_placement_num': 64,
44 'pg_placement_num_target': 64
46 NotificationQueue
.start_queue()
49 def _send_cmd(*args
, **kwargs
): # pylint: disable=unused-argument
52 send_command
.side_effect
= _send_cmd
53 get_progress_tasks
.return_value
= [], []
55 self
._task
_post
('/api/pool', {
60 self
.assertStatus(201)
61 self
.assertEqual(_get
.call_count
, 2)
62 NotificationQueue
.stop()
64 @mock.patch('dashboard.controllers.pool.Pool._get')
65 def test_wait_for_pgs_without_waiting(self
, _get
):
67 'pool_name': 'test-pool',
70 'pg_placement_num': 32,
71 'pg_placement_num_target': 32
73 Pool
._wait
_for
_pgs
('test-pool')
74 self
.assertEqual(_get
.call_count
, 1)
76 @mock.patch('dashboard.controllers.pool.Pool._get')
77 def test_wait_for_pgs_with_waiting(self
, _get
):
79 orig_method
= TaskManager
.current_task
80 TaskManager
.current_task
= mock
.MagicMock()
81 TaskManager
.current_task
.return_value
= task
83 'pool_name': 'test-pool',
86 'pg_placement_num': 64,
87 'pg_placement_num_target': 64
89 'pool_name': 'test-pool',
92 'pg_placement_num': 62,
93 'pg_placement_num_target': 32
95 'pool_name': 'test-pool',
98 'pg_placement_num': 48,
99 'pg_placement_num_target': 32
101 'pool_name': 'test-pool',
104 'pg_placement_num': 33,
105 'pg_placement_num_target': 32
107 'pool_name': 'test-pool',
110 'pg_placement_num': 32,
111 'pg_placement_num_target': 32
113 'pool_name': 'test-pool',
116 'pg_placement_num': 32,
117 'pg_placement_num_target': 32
119 Pool
._wait
_for
_pgs
('test-pool')
120 self
.assertEqual(_get
.call_count
, 6)
121 self
.assertEqual(task
.percentages
, [0, 5, 50, 73, 98])
122 TaskManager
.current_task
= orig_method