Exemplo n.º 1
0
 def test_with_down_file(self):
     self._create_test_daemon(1)
     with open(os.path.join(self._daemon_supervise_dir(1), 'down'), 'w'):
         pass
     x = svstat(self._daemon_dir(1))
     self.assertFalse(x['daemon_paused'])
     self.assertFalse(x['daemon_autostart'])
Exemplo n.º 2
0
 def test_with_down_file(self):
     self._create_test_daemon(1)
     with open(os.path.join(self._daemon_supervise_dir(1), 'down'), 'w'):
         pass
     x = svstat(self._daemon_dir(1))
     self.assertFalse(x['daemon_paused'])
     self.assertFalse(x['daemon_autostart'])
Exemplo n.º 3
0
 def tearDown(self):
     # shut down all test daemons and stop their supervise processes
     for num, supervise_proc in self.supervise_procs.items():
         daemon_pid = svstat(self._daemon_dir(num))['daemon_pid']
         supervise_proc.terminate()
         # only kill daemon if still alive (and not killed by some test)
         if os.path.exists('/proc/%d' % daemon_pid):
             os.kill(daemon_pid, signal.SIGTERM)
Exemplo n.º 4
0
def daemon_info():
    info = {}
    for dir_name in os.listdir(_service_dir()):
        dir_path = os.path.join(_service_dir(), dir_name)
        if not os.path.isdir(dir_path):
            continue
        info[dir_name] = svstat(dir_path)
    return info
Exemplo n.º 5
0
 def tearDown(self):
     # shut down all test daemons and stop their supervise processes
     for num, supervise_proc in self.supervise_procs.items():
         daemon_pid = svstat(self._daemon_dir(num))['daemon_pid']
         supervise_proc.terminate()
         # only kill daemon if still alive (and not killed by some test)
         if os.path.exists('/proc/%d' % daemon_pid):
             os.kill(daemon_pid, signal.SIGTERM)
Exemplo n.º 6
0
def daemon_info():
    info = {}
    for dir_name in os.listdir(_service_dir()):
        dir_path = os.path.join(_service_dir(), dir_name)
        if not os.path.isdir(dir_path):
            continue
        info[dir_name] = svstat(dir_path)
    return info
Exemplo n.º 7
0
    def test_svstat(self):
        self._create_test_daemon(1)
        x = svstat(self._daemon_dir(1))
        self.assertFalse(x['daemon_paused'])
        self.assertTrue(x['daemon_autostart'])
        self.assertTrue(x['alive'])
        self.assertFalse(x['daemon_once'])
        self.assertTrue(x['daemon_up'])

        self.assertAlmostEquals(datetime.datetime.now(), x['daemon_timestamp'], delta=datetime.timedelta(seconds=1))
        self.assertTrue(0 < x['daemon_pid'] < 65536)
Exemplo n.º 8
0
    def test_svstat(self):
        self._create_test_daemon(1)
        x = svstat(self._daemon_dir(1))
        self.assertFalse(x['daemon_paused'])
        self.assertTrue(x['daemon_autostart'])
        self.assertTrue(x['alive'])
        self.assertFalse(x['daemon_once'])
        self.assertTrue(x['daemon_up'])

        self.assertAlmostEquals(datetime.datetime.now(),
                                x['daemon_timestamp'],
                                delta=datetime.timedelta(seconds=1))
        self.assertTrue(0 < x['daemon_pid'] < 65536)
Exemplo n.º 9
0
 def _create_test_daemon(self, num, sleep_interval=0.2):
     self._create_daemon_config(num, textwrap.dedent("""
         #!/usr/bin/python
         import datetime
         import time
         while True:
             time.sleep(%f)
         """ % sleep_interval)[1:])
     # start a new supervise process for this daemon
     supervise_proc = Popen(['supervise', self._daemon_dir(num)], stdin=PIPE, stderr=PIPE)
     max_wait = 2  # wait for at most 2 seconds for the supervise process to start
     while max_wait > 0:
         if svstat(self._daemon_dir(num))['alive']:
             break
         max_wait -= 0.1
         time.sleep(0.1)
     else:
         raise Exception('Supervise process did not start properly for test daemon <%d>' % num)
     self.supervise_procs[num] = supervise_proc
Exemplo n.º 10
0
 def _create_test_daemon(self, num, sleep_interval=0.2):
     self._create_daemon_config(
         num,
         textwrap.dedent("""
         #!/usr/bin/python
         import datetime
         import time
         while True:
             time.sleep(%f)
         """ % sleep_interval)[1:])
     # start a new supervise process for this daemon
     supervise_proc = Popen(
         ['supervise', self._daemon_dir(num)], stdin=PIPE, stderr=PIPE)
     max_wait = 2  # wait for at most 2 seconds for the supervise process to start
     while max_wait > 0:
         if svstat(self._daemon_dir(num))['alive']:
             break
         max_wait -= 0.1
         time.sleep(0.1)
     else:
         raise Exception(
             'Supervise process did not start properly for test daemon <%d>'
             % num)
     self.supervise_procs[num] = supervise_proc
Exemplo n.º 11
0
 def test_many_daemons(self):
     for i in range(15):
         self._create_test_daemon(i)
     for i in range(15):
         self.assertTrue(svstat(self._daemon_dir(i))['alive'])
Exemplo n.º 12
0
    def test_svcontrol(self):
        self.assertFalse(svcontrol('/some/nonexisting/directory', 'u'))
        self._create_test_daemon(1)
        p = self._daemon_dir(1)
        self.assertTrue(svcontrol(p, 'u'))
        self.assertFalse(svstat(p)['daemon_once'])
        self.assertTrue(svstat(p)['daemon_up'])

        ts1 = svstat(p)['daemon_timestamp']
        svcontrol(p, 'd')  # stop the daemon
        time.sleep(1)
        ts2 = svstat(p)['daemon_timestamp']
        self.assertGreater(ts2, ts1)
        self.assertFalse(svstat(p)['daemon_once'])
        self.assertFalse(svstat(p)['daemon_up'])

        svcontrol(p, 'o')  # start daemon in 'run_once' mode
        time.sleep(1)
        ts3 = svstat(p)['daemon_timestamp']
        self.assertGreater(ts3, ts2)
        self.assertTrue(svstat(p)['daemon_once'])
        self.assertTrue(svstat(p)['daemon_up'])

        svcontrol(p, 'd')  # start the daemon up again
        time.sleep(1)
        self.assertGreater(ts3, ts2)
        self.assertFalse(svstat(p)['daemon_once'])
        self.assertFalse(svstat(p)['daemon_up'])
Exemplo n.º 13
0
 def test_many_daemons(self):
     for i in range(15):
         self._create_test_daemon(i)
     for i in range(15):
         self.assertTrue(svstat(self._daemon_dir(i))['alive'])
Exemplo n.º 14
0
    def test_svcontrol(self):
        self.assertFalse(svcontrol('/some/nonexisting/directory', 'u'))
        self._create_test_daemon(1)
        p = self._daemon_dir(1)
        self.assertTrue(svcontrol(p, 'u'))
        self.assertFalse(svstat(p)['daemon_once'])
        self.assertTrue(svstat(p)['daemon_up'])

        ts1 = svstat(p)['daemon_timestamp']
        svcontrol(p, 'd')  # stop the daemon
        time.sleep(1)
        ts2 = svstat(p)['daemon_timestamp']
        self.assertGreater(ts2, ts1)
        self.assertFalse(svstat(p)['daemon_once'])
        self.assertFalse(svstat(p)['daemon_up'])

        svcontrol(p, 'o')  # start daemon in 'run_once' mode
        time.sleep(1)
        ts3 = svstat(p)['daemon_timestamp']
        self.assertGreater(ts3, ts2)
        self.assertTrue(svstat(p)['daemon_once'])
        self.assertTrue(svstat(p)['daemon_up'])

        svcontrol(p, 'd')  # start the daemon up again
        time.sleep(1)
        self.assertGreater(ts3, ts2)
        self.assertFalse(svstat(p)['daemon_once'])
        self.assertFalse(svstat(p)['daemon_up'])