Example #1
0
    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)
Example #2
0
    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)
Example #3
0
 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))
Example #4
0
    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))