Salome HOME
suppresion d'un log
[tools/sat.git] / test / _testTools / tools.py
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #  Copyright (C) 2010-2012  CEA/DEN
4 #
5 #  This library is free software; you can redistribute it and/or
6 #  modify it under the terms of the GNU Lesser General Public
7 #  License as published by the Free Software Foundation; either
8 #  version 2.1 of the License.
9 #
10 #  This library is distributed in the hope that it will be useful,
11 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 #  Lesser General Public License for more details.
14 #
15 #  You should have received a copy of the GNU Lesser General Public
16 #  License along with this library; if not, write to the Free Software
17 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
18
19 import tempfile
20 import sys
21 import subprocess
22 import time
23
24 class outRedirection():
25     '''redirection of standart output
26     useful for testing the terminal display
27     '''
28     def __init__(self):
29         '''initialization
30         '''
31         self._fstream = tempfile.NamedTemporaryFile(mode='w')
32         self.saveout = sys.stdout
33         sys.stdout = self._fstream
34
35     def flush(self):
36         self._fstream.flush()                
37
38     def end_redirection(self):
39         self._fstream.seek(0)
40         ff = open(self._fstream.name, 'r')
41         self.res = ff.read()
42         self._fstream.close()
43         sys.stdout = self.saveout
44         
45     def read_results(self):
46         try:
47             return self.res
48         except Exception as exc:
49             print('Problem with redirection : %s' % exc)
50             sys.exit(1)
51
52 def kill9(pid):
53     subprocess.call("kill -9 " + pid, shell=True)
54
55 def check_proc_existence_and_kill(regex):
56     cmd = 'ps aux | grep "' + regex + '"'
57     psRes = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).communicate()[0]
58     psRes = psRes.split('\n')
59     for line in psRes:
60         if 'grep' in line or len(line) == 0:
61             continue
62         line2 = [i for i in line.split(' ') if i != '']
63         pid = line2[1]
64         kill9(pid)
65         return pid
66     return 0
67
68 def check_proc_existence_and_kill_multi(regex, nb_kills, time_between_two_checks = 1):
69     found = False
70     i = 0
71     while not found and i < nb_kills :
72         found = check_proc_existence_and_kill(regex)
73         if found:
74             return found
75         time.sleep(time_between_two_checks)
76         i+=1
77     return 0