Beispiel #1
0
 def test_exception_completion(self):
     jobspec = JobspecV1.from_command(["false"])
     thread = _FluxExecutorThread(threading.Event(), threading.Event(),
                                  collections.deque(), 0.01, (), {})
     fut = FluxExecutorFuture(threading.get_ident())
     self.assertFalse(fut.done())
     fut._set_event(EventLogEvent({"name": "start", "timestamp": 0}))
     self.assertFalse(fut.done())
     thread._FluxExecutorThread__event_update(
         ShamJobEventWatchFuture(
             EventLogEvent({
                 "name": "exception",
                 "timestamp": 0,
                 "context": {
                     "severity": 1,
                     "type": "foobar"
                 },
             })),
         fut,
     )
     self.assertFalse(fut.done())
     thread._FluxExecutorThread__event_update(
         ShamJobEventWatchFuture(
             EventLogEvent({
                 "name": "exception",
                 "timestamp": 0,
                 "context": {
                     "severity": 0,
                     "type": "foobar"
                 },
             })),
         fut,
     )
     self.assertTrue(fut.done())
     self.assertIsInstance(fut.exception(), JobException)
Beispiel #2
0
 def test_finish_completion(self):
     thread = _FluxExecutorThread(
         threading.Event(), collections.deque(), 0.01, (), {}
     )
     for exit_status in (0, 1, 15, 120, 255):
         flag = threading.Event()
         fut = FluxExecutorFuture(threading.get_ident()).add_done_callback(
             lambda fut: flag.set()
         )
         thread._FluxExecutorThread__event_update(
             ShamJobEventWatchFuture(
                 EventLogEvent(
                     {
                         "name": "finish",
                         "timestamp": 0,
                         "context": {"status": exit_status},
                     }
                 )
             ),
             fut,
         )
         self.assertTrue(fut.done())
         self.assertTrue(flag.is_set())
         if os.WIFEXITED(exit_status):
             self.assertEqual(fut.result(), os.WEXITSTATUS(exit_status))
         elif os.WIFSIGNALED(exit_status):
             self.assertEqual(fut.result(), -os.WTERMSIG(exit_status))