From 66840a5e9f87d88e0f83a7bcfd0b2a978a4240ba Mon Sep 17 00:00:00 2001 From: stubbfel Date: Sun, 5 Oct 2014 19:14:16 +0200 Subject: [PATCH] add subprocees dict --- src/python/python_fmpi/.gitignore | 0 .../python_fmpi/src/utility/__init__.py | 1 + .../src/utility/subprocess_dict.py | 23 +++++++++++ .../test/utility/test_subprocess_dict.py | 41 +++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 src/python/python_fmpi/.gitignore create mode 100644 src/python/python_fmpi/src/utility/__init__.py create mode 100644 src/python/python_fmpi/src/utility/subprocess_dict.py create mode 100644 src/python/python_fmpi/test/utility/test_subprocess_dict.py diff --git a/src/python/python_fmpi/.gitignore b/src/python/python_fmpi/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/src/python/python_fmpi/src/utility/__init__.py b/src/python/python_fmpi/src/utility/__init__.py new file mode 100644 index 0000000..f8bf4e8 --- /dev/null +++ b/src/python/python_fmpi/src/utility/__init__.py @@ -0,0 +1 @@ +__author__ = 'dev' diff --git a/src/python/python_fmpi/src/utility/subprocess_dict.py b/src/python/python_fmpi/src/utility/subprocess_dict.py new file mode 100644 index 0000000..9bcc8f0 --- /dev/null +++ b/src/python/python_fmpi/src/utility/subprocess_dict.py @@ -0,0 +1,23 @@ +__author__ = 'dev' + +import subprocess + + +class SubprocessDict: + + def __init__(self): + self.__process_dict = {} + + def clear_dict(self): + + for entry_process in self.__process_dict.values(): + entry_process.terminate() + + self.__process_dict.clear() + + def add_process(self, args): + new_process = subprocess.Popen(args) + self.__process_dict[new_process.pid] = new_process + + def get_process_dict(self): + return self.__process_dict \ No newline at end of file diff --git a/src/python/python_fmpi/test/utility/test_subprocess_dict.py b/src/python/python_fmpi/test/utility/test_subprocess_dict.py new file mode 100644 index 0000000..6828c1d --- /dev/null +++ b/src/python/python_fmpi/test/utility/test_subprocess_dict.py @@ -0,0 +1,41 @@ +__author__ = 'dev' + +import unittest +import subprocess +from utility.subprocess_dict import SubprocessDict + +class TestSubprocessDict(unittest.TestCase): + + def setUp(self): + self.__process_args = ["mplayer", "http://stream.laut.fm/skaworld"] + self.__process_fail_args = ["mplyer", "http://stream.laut.fm/skaworld"] + self.__subprocess_dict = SubprocessDict() + + def tearDown(self): + self.__subprocess_dict.clear_dict() + + def test_add_process_one(self): + self.__subprocess_dict.add_process(self.__process_args) + tmp_dict = self.__subprocess_dict.get_process_dict() + self.assertIsNotNone(tmp_dict) + self.assertNotEquals(tmp_dict, {}) + self.assertIs(len(tmp_dict), 1) + for process in tmp_dict.values(): + self.assertTrue(isinstance(process, subprocess.Popen)) + + def test_add_process_three(self): + self.__subprocess_dict.add_process(self.__process_args) + self.__subprocess_dict.add_process(self.__process_args) + self.__subprocess_dict.add_process(self.__process_args) + tmp_dict = self.__subprocess_dict.get_process_dict() + self.assertIsNotNone(tmp_dict) + self.assertNotEquals(tmp_dict, {}) + self.assertIs(len(tmp_dict), 3) + for process in tmp_dict.values(): + self.assertTrue(isinstance(process, subprocess.Popen)) + + def test_add_process_fail_args(self): + self.assertRaises(FileNotFoundError, self.__subprocess_dict.add_process, self.__process_fail_args) + +if __name__ == '__main__': + unittest.main()