Source code for pyzenkit.tests.test_daemonizer

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#-------------------------------------------------------------------------------
# This file is part of PyZenKit package.
#
# Copyright (C) since 2016 CESNET, z.s.p.o (http://www.ces.net/)
# Copyright (C) since 2015 Honza Mach <honza.mach.ml@gmail.com>
# Use of this package is governed by the MIT license, see LICENSE file.
#
# This project was initially written for personal use of the original author. Later
# it was developed much further and used for project of author`s employer.
#-------------------------------------------------------------------------------


"""
Unit test module for testing the :py:mod:`pyzenkit.daemonizer` module.
"""

__author__ = "Honza Mach <honza.mach.ml@gmail.com>"


import unittest

import os
import signal

import pyzenkit.daemonizer


PID_FILE = '/tmp/test.pyzenkit.daemonizer.pid'


[docs]class TestPyzenkitDaemonizer(unittest.TestCase): """ Unit test class for testing the :py:mod:`pyzenkit.daemonizer` module. """
[docs] def test_01_basic(self): """ Perform the basic operativity tests. """ self.assertRaises(FileNotFoundError, pyzenkit.daemonizer.write_pid, '/bogus/file', 123) self.assertRaises(Exception, pyzenkit.daemonizer.write_pid, '/bogus/file', "123") self.assertFalse(os.path.isfile(PID_FILE)) pyzenkit.daemonizer.write_pid(PID_FILE, 12345) self.assertTrue(os.path.isfile(PID_FILE)) self.assertEqual(pyzenkit.daemonizer.read_pid(PID_FILE), 12345) os.unlink(PID_FILE) self.assertFalse(os.path.isfile(PID_FILE))
[docs] def test_02_daemonization_lite(self): """ Perform lite daemonization tests. """ def hnd_sig_hup(signum, frame): # pylint: disable=locally-disabled,unused-argument """Test signal handler.""" print("HANDLER CALLBACK: Received signal HUP ({})".format(signum)) def hnd_sig_usr1(signum, frame): # pylint: disable=locally-disabled,unused-argument """Test signal handler.""" print("HANDLER CALLBACK: Received signal USR1 ({})".format(signum)) def hnd_sig_usr2(signum, frame): # pylint: disable=locally-disabled,unused-argument """Test signal handler.""" print("HANDLER CALLBACK: Received signal USR2 ({})".format(signum)) self.assertFalse(os.path.isfile(PID_FILE)) (pid, pid_file) = pyzenkit.daemonizer.daemonize_lite( work_dir = '/tmp', pid_file = PID_FILE, umask = 0o022, signals = { signal.SIGHUP: hnd_sig_hup, signal.SIGUSR1: hnd_sig_usr1, signal.SIGUSR2: hnd_sig_usr2, }, ) self.assertTrue(os.path.isfile(PID_FILE)) self.assertTrue(os.path.isfile(pid_file)) self.assertEqual(pyzenkit.daemonizer.read_pid(PID_FILE), pid) self.assertEqual(pyzenkit.daemonizer.read_pid(pid_file), pid) self.assertEqual(os.getcwd(), '/tmp')
#------------------------------------------------------------------------------- if __name__ == "__main__": unittest.main()