示例#1
0
 def testKillPidSignal(self):
     raise testhelp.SkipTestException("Test is unreliable")
     s = server.Server()
     pid = os.fork()
     signal.signal(signal.SIGTERM, self._signalHandlerKill)
     if pid:
         time.sleep(.1)
         signal.signal(signal.SIGTERM, signal.SIG_DFL)
         rc, txt = self.captureOutput(s._killPid,
                                      pid,
                                      'Frobnicator',
                                      timeout=2)
         assert (re.match(
             '[0-9:]+ - \[root\] - warning: pid [0-9]+ \(Frobnicator\) killed with signal 9',
             txt))
     else:
         try:
             time.sleep(10000)
         finally:
             os._exit(1)
示例#2
0
 def testKillPidHarder(self):
     s = server.Server()
     pid = os.fork()
     signal.signal(signal.SIGTERM, self._signalHandler)
     if pid:
         time.sleep(1)
         signal.signal(signal.SIGTERM, signal.SIG_DFL)
         rc, txt = self.captureOutput(s._killPid,
                                      pid,
                                      'Frobnicator',
                                      timeout=.5)
         assert (re.match(
             '[0-9:]+ - \[root\] - warning: Frobnicator \(pid [0-9]+\) would not die, killing harder...',
             txt))
     else:
         try:
             time.sleep(10000)
             time.sleep(10000)
         finally:
             os._exit(1)
示例#3
0
    def testKillPid(self):
        s = server.Server()
        pid = os.fork()
        signal.signal(signal.SIGTERM, self._signalHandler)
        if pid:
            time.sleep(1)
            signal.signal(signal.SIGTERM, signal.SIG_DFL)
            rc, txt = self.captureOutput(s._killPid,
                                         pid,
                                         'Frobnicator',
                                         timeout=2)

            assert (re.match(
                '[0-9:]+ - \[root\] - warning: pid [0-9]+ \(Frobnicator\) exited with exit status 1',
                txt))
        else:
            try:
                time.sleep(10000)
            finally:
                os._exit(1)
示例#4
0
 def testCollectChildren(self):
     s = server.Server()
     s._collectChildren()
     pid = os.fork()
     if not pid:
         time.sleep(10000)
     os.kill(pid, signal.SIGKILL)
     time.sleep(.1)
     rc, txt = self.captureOutput(s._collectChildren)
     assert (re.match(
         '[0-9:]+ - \[root\] - warning: pid [0-9]+ \(Unknown\) killed with signal 9',
         txt))
     pid = os.fork()
     if not pid:
         os._exit(13)
     time.sleep(.5)
     rc, txt = self.captureOutput(s._collectChildren)
     assert (re.match(
         '[0-9:]+ - \[root\] - warning: pid [0-9]+ \(Unknown\) exited with exit status 13',
         txt))
示例#5
0
    def testTry(self):
        def raiseSystemExit():
            raise SystemExit(1)

        def raiseException():
            raise RuntimeError('foo')

        def passMe():
            pass

        s = server.Server()
        rc, txt = self.captureOutput(s._try,
                                     'Frobinator',
                                     raiseException,
                                     _returnException=True)
        assert (isinstance(rc, RuntimeError))
        assert ('Error in Frobinator' in txt)
        assert ('RuntimeError: foo' in txt)
        rc, txt = self.captureOutput(s._try, 'Frobinator', passMe)
        assert (not txt)
        self.assertRaises(SystemExit, self.captureOutput, s._try, 'Frobinator',
                          raiseSystemExit)