예제 #1
0
 def test_execute_with_handler_and_kill_cancellation(self):
     exit_code = run_subprocess([sys.executable, MAKE_ENTROPY, '5', '0.2'],
                                started_handler=self.on_started,
                                stdout_handler=self.store_stdout_line_and_cancel,
                                stderr_handler=self.store_stderr_line,
                                is_cancelled=self.monitor.is_cancelled,
                                cancelled_check_period=0.02,
                                kill_on_cancel=True)
     self.assertTrue(self.started)
     self.assertTrue(exit_code != 0)
     self.assertTrue(len(self.stdout_lines) > 1)
     self.assertTrue(len(self.stderr_lines) > 0)
예제 #2
0
 def test_execute_with_handler_and_kill_cancellation(self):
     exit_code = run_subprocess([sys.executable, MAKE_ENTROPY, '5', '0.2'],
                                started_handler=self.on_started,
                                stdout_handler=self.store_stdout_line_and_cancel,
                                stderr_handler=self.store_stderr_line,
                                is_cancelled=self.monitor.is_cancelled,
                                cancelled_check_period=0.02,
                                kill_on_cancel=True)
     self.assertTrue(self.started)
     self.assertTrue(exit_code != 0)
     self.assertTrue(len(self.stdout_lines) > 1)
     self.assertTrue(len(self.stderr_lines) > 0)
예제 #3
0
 def test_execute_with_handler_failing(self):
     exit_code = run_subprocess([sys.executable, MAKE_ENTROPY, '5', '0.1', '3'],
                                stdout_handler=self.store_stdout_line,
                                stderr_handler=self.store_stderr_line)
     self.assertEqual(exit_code, 1)
     self.assertEqual(self.stdout_lines, ['mkentropy: Running 5 steps',
                                          'mkentropy: Did 1 of 5 steps: 20.0%',
                                          'mkentropy: Did 2 of 5 steps: 40.0%',
                                          'mkentropy: Did 3 of 5 steps: 60.0%',
                                          ''])
     self.assertTrue(len(self.stderr_lines) > 2)
     self.assertEqual(self.stderr_lines[-2], 'RuntimeError: An intended error occurred!')
     self.assertEqual(self.stderr_lines[-1], '')
예제 #4
0
 def test_execute_with_handler_failing(self):
     exit_code = run_subprocess([sys.executable, MAKE_ENTROPY, '5', '0.1', '3'],
                                stdout_handler=self.store_stdout_line,
                                stderr_handler=self.store_stderr_line)
     self.assertEqual(exit_code, 1)
     self.assertEqual(self.stdout_lines, ['mkentropy: Running 5 steps',
                                          'mkentropy: Did 1 of 5 steps: 20.0%',
                                          'mkentropy: Did 2 of 5 steps: 40.0%',
                                          'mkentropy: Did 3 of 5 steps: 60.0%',
                                          ''])
     self.assertTrue(len(self.stderr_lines) > 2)
     self.assertEqual(self.stderr_lines[-2], 'RuntimeError: An intended error occurred!')
     self.assertEqual(self.stderr_lines[-1], '')
예제 #5
0
 def test_execute_with_monitor(self):
     handler = ProcessOutputMonitor(self.monitor,
                                    started='mkentropy: Running (?P<total_work>\d+)',
                                    progress='mkentropy: Did (?P<work>\d+)',
                                    done=lambda line: 'Done' in line)
     exit_code = run_subprocess([sys.executable, MAKE_ENTROPY, '5', '0.1'], stdout_handler=handler)
     self.assertEqual(exit_code, 0)
     self.assertEqual(self.monitor.records, [('start', 'Process running', 5.0),
                                             ('progress', 1.0, None, 20),
                                             ('progress', 1.0, None, 40),
                                             ('progress', 1.0, None, 60),
                                             ('progress', 1.0, None, 80),
                                             ('progress', 1.0, None, 100),
                                             ('done',)])
예제 #6
0
 def test_execute_with_handler(self):
     exit_code = run_subprocess([sys.executable, MAKE_ENTROPY, '5', '0.1'],
                                stdout_handler=self.store_stdout_line,
                                stderr_handler=self.store_stderr_line)
     self.assertEqual(exit_code, 0)
     self.assertEqual(self.stdout_lines, ['mkentropy: Running 5 steps',
                                          'mkentropy: Did 1 of 5 steps: 20.0%',
                                          'mkentropy: Did 2 of 5 steps: 40.0%',
                                          'mkentropy: Did 3 of 5 steps: 60.0%',
                                          'mkentropy: Did 4 of 5 steps: 80.0%',
                                          'mkentropy: Did 5 of 5 steps: 100.0%',
                                          'mkentropy: Done making some entropy',
                                          ''])
     self.assertEqual(self.stderr_lines, [''])
예제 #7
0
 def test_execute_with_monitor(self):
     handler = ProcessOutputMonitor(self.monitor,
                                    started=r'mkentropy: Running (?P<total_work>\d+)',
                                    progress=r'mkentropy: Did (?P<work>\d+)',
                                    done=lambda line: 'Done' in line)
     exit_code = run_subprocess([sys.executable, MAKE_ENTROPY, '5', '0.1'], stdout_handler=handler)
     self.assertEqual(exit_code, 0)
     self.assertEqual(self.monitor.records, [('start', 'Process running', 5.0),
                                             ('progress', 1.0, None, 20),
                                             ('progress', 1.0, None, 40),
                                             ('progress', 1.0, None, 60),
                                             ('progress', 1.0, None, 80),
                                             ('progress', 1.0, None, 100),
                                             ('done',)])
예제 #8
0
 def test_execute_with_handler(self):
     exit_code = run_subprocess([sys.executable, MAKE_ENTROPY, '5', '0.1'],
                                stdout_handler=self.store_stdout_line,
                                stderr_handler=self.store_stderr_line)
     self.assertEqual(exit_code, 0)
     self.assertEqual(self.stdout_lines, ['mkentropy: Running 5 steps',
                                          'mkentropy: Did 1 of 5 steps: 20.0%',
                                          'mkentropy: Did 2 of 5 steps: 40.0%',
                                          'mkentropy: Did 3 of 5 steps: 60.0%',
                                          'mkentropy: Did 4 of 5 steps: 80.0%',
                                          'mkentropy: Did 5 of 5 steps: 100.0%',
                                          'mkentropy: Done making some entropy',
                                          ''])
     self.assertEqual(self.stderr_lines, [''])