add subprocees dict

This commit is contained in:
stubbfel
2014-10-05 19:14:16 +02:00
parent 17ed6047ad
commit 66840a5e9f
4 changed files with 65 additions and 0 deletions

0
src/python/python_fmpi/.gitignore vendored Normal file
View File

View File

@@ -0,0 +1 @@
__author__ = 'dev'

View File

@@ -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

View File

@@ -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()