class unittest_Igniter(unittest.TestCase): def setUp(self): self.igniter = Igniter('ping localhost', '/tmp/') self.process = subprocess.Popen(['ping', 'localhost'], shell=False, stdout=subprocess.PIPE) #file = open('/tmp/.lock','w') #file.write(str(self.process.pid)) #file.close() #self.igniter.lock = '/tmp/.lock' #self.igniter.lockpid = self.process.pid def test_Igniter(self): self.assertEqual(self.igniter.makeLock(),None) self.igniter.lock = '/tmp/.lock' self.igniter.lockpid = self.process.pid file = open('/tmp/.lock','w') file.write(str(self.process.pid)) file.close() print '\n' self.assertEqual(self.igniter.isLocked(),self.process.pid) try: self.igniter.start() self.igniter.lockpid ='' except: self.assertEqual(self.igniter.lockpid,self.process.pid) try: self.igniter.status() self.igniter.lockpid ='' except: self.assertEqual(self.igniter.lockpid,self.process.pid) try: self.igniter.stop() self.igniter.lockpid ='' except: self.assertEqual(self.igniter.lockpid,self.process.pid) try: self.igniter.status() self.igniter.lockpid ='' except: self.assertEqual(self.igniter.lockpid,self.process.pid) #try: #self.igniter.start() #self.igniter.lockpid ='' #except: #self.assertEqual(self.igniter.lockpid,self.process.pid) try: self.process.terminate() except: pass
def reload(self): """ If the process is locked (presence of a .lock file) and running (ps), send a SIGHUP signal to it. The function _reload will be called because SIGHUP signal is assigned to it. """ # Verify user is not root if os.getuid() == 0: print "FATAL: Do not reload as root. It will be a mess." sys.exit(2) if Igniter.isLocked(self) and not commands.getstatusoutput('ps -p ' + str(self.lockpid))[0]: # SIGHUP is sent to initiate the reload os.kill(self.lockpid, signal.SIGHUP) else: print "No process to reload for %s (%s %s)!" % (self.flowName, self.direction, self.type) # In any case, we exit!! sys.exit(2)