add subprocees dict
This commit is contained in:
0
src/python/python_fmpi/.gitignore
vendored
Normal file
0
src/python/python_fmpi/.gitignore
vendored
Normal file
1
src/python/python_fmpi/src/utility/__init__.py
Normal file
1
src/python/python_fmpi/src/utility/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
__author__ = 'dev'
|
||||
23
src/python/python_fmpi/src/utility/subprocess_dict.py
Normal file
23
src/python/python_fmpi/src/utility/subprocess_dict.py
Normal 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
|
||||
41
src/python/python_fmpi/test/utility/test_subprocess_dict.py
Normal file
41
src/python/python_fmpi/test/utility/test_subprocess_dict.py
Normal 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()
|
||||
Reference in New Issue
Block a user