def __init__(self, xqueue, settings_module): super(TestGrader, self).__init__() self.grader = Grader() # A little monkey patching... self.grader.xqueue = lambda: xqueue self.grader.config_from_module(settings_module)
class TestGrader(multiprocessing.Process): """ A thin wrapper around bux_grader_framework.Grader. Wraps it in a ``multiprocessing.Process``. Patches ``xqueue`` method to return an :class:`XQueueStub`. Adds a stop event. """ def __init__(self, xqueue, settings_module): super(TestGrader, self).__init__() self.grader = Grader() # A little monkey patching... self.grader.xqueue = lambda: xqueue self.grader.config_from_module(settings_module) def run(self): print "Grader started" self.grader.run() print "Grader exited" def stop(self): self.grader.stop()