def test_callback(self, m): expected_callback = { "sender": "on_begin", "state": { "label": "Test", "total_work": 100, "error": False, "progress": 0.0, "elapsed": 3., } } m.put('https://xcube-gen.test/api/v1/jobs/tomtom/iamajob/callback', json=expected_callback) state_stack = ProgressState('Test', 100, 100) observer = ApiProgressCallbackObserver(self._callback_config) res = observer.callback("on_begin", 3., [state_stack]) self.assertDictEqual(expected_callback, res.request.json()) with self.assertRaises(ValueError) as e: observer.callback("on_begin", 3., []) self.assertEqual("ProgressStates must be given", str(e.exception)) observer = TerminalProgressCallbackObserver() res = observer.callback("on_begin", 3., [state_stack], False) self.assertIn('Test', res) self.assertIn('0% Completed', res)
def test_threaded_progress_on_begin(self): _mock_patch = patch('xcube.cli._gen2.progress._ThreadedProgressObserver._start_timer') _mock = _mock_patch.start() observer = TerminalProgressCallbackObserver() state_stack = ProgressState('Test', 100, 100) observer.on_begin([state_stack]) self.assertTrue(_mock.called) _mock.stop() _mock = _mock_patch.start() state_stack1 = ProgressState('Test', 100, 100) state_stack2 = ProgressState('Test', 100, 100) observer.on_begin([state_stack1, state_stack2]) self.assertFalse(_mock.called)
def test_progress_state_props(self): state = ProgressState('computing', 100, 3) self.assertEqual('computing', state.label) self.assertEqual(100, state.total_work) self.assertEqual(3, state.super_work) self.assertEqual(1, state.super_work_ahead) self.assertEqual(0, state.completed_work) self.assertEqual(0, state.progress) self.assertEqual(0.6, state.to_super_work(20)) state.inc_work(15) self.assertEqual(15, state.completed_work) self.assertEqual(0.15, state.progress) self.assertEqual(0.6, state.to_super_work(20))
def test_api_delegate(self, m): m.put('https://xcube-gen.test/api/v1/jobs/tomtom/iamajob/callback', json={}) progress_state = ProgressState(label='test', total_work=0., super_work=10.) observer = ApiProgressCallbackObserver(self._callback_config) observer.on_begin(state_stack=[progress_state]) with self.assertRaises(ValueError) as e: self._callback_config.api_uri = None observer = ApiProgressCallbackObserver(self._callback_config) observer.on_begin(state_stack=[progress_state]) self.assertEqual('Both, api_uri and access_token must be given.', str(e.exception)) with self.assertRaises(ValueError) as e: self._callback_config.access_token = None observer = ApiProgressCallbackObserver(self._callback_config) observer.on_begin(state_stack=[progress_state]) self.assertEqual('Both, api_uri and access_token must be given.', str(e.exception))