Loading SRT/Servers/SRTMinorServo/src/WPServoImpl.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -90,6 +90,8 @@ WPServoImpl::WPServoImpl( WPServoImpl::~WPServoImpl() { AUTO_TRACE("WPServoImpl::~WPServoImpl()"); bool remove_instance_counter = false; try { pthread_mutex_lock(&destr_mutex); if(m_instance_counter != NULL) { Loading Loading @@ -117,11 +119,13 @@ WPServoImpl::~WPServoImpl() { if(m_cmdPos_list != NULL) { delete m_cmdPos_list; } if(m_instance_counter != NULL) { delete m_instance_counter; } remove_instance_counter = true; } secure_ptr.Release(); if(remove_instance_counter) { delete m_instance_counter; } } if (m_cdb_ptr) { Loading SRT/Servers/SRTMinorServo/test/functional/test_container_crash.py 0 → 100644 +52 −0 Original line number Diff line number Diff line """Test issue https://github.com/discos/discos/issues/143""" import os import time import unittest from subprocess import Popen, PIPE from Acspy.Clients.SimpleClient import PySimpleClient from testing.containers import Container __author__ = "Marco Buttu <mbuttu@oa-cagliari.inaf.it>" class TestContainerCrash(unittest.TestCase): telescope = os.getenv('STATION') @classmethod def setUpClass(cls): cls.containers = [ Container('MinorServoContainer', 'cpp'), ] def setUp(self): self.client = PySimpleClient() for container in self.containers: container.start() container.wait_until_running() if not container.is_running(): self.fail('cannot run %s' % container.name) def tearDown(self): self.client.disconnect() for container in self.containers: container.stop() def test_get_and_release_component(self): """The container must be alive after releasing the component""" srp = self.client.getComponent('MINORSERVO/SRP') self.client.releaseComponent('MINORSERVO/SRP') time.sleep(3) for container in self.containers: self.assertTrue(container.is_running()) if __name__ == '__main__': if 'Configuration' in os.getenv('ACS_CDB'): unittest.main(verbosity=2, failfast=True) # Real test using the antenna CDB else: from PyMinorServoTest import simunittest simunittest.run(TestContainerCrash) Loading
SRT/Servers/SRTMinorServo/src/WPServoImpl.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -90,6 +90,8 @@ WPServoImpl::WPServoImpl( WPServoImpl::~WPServoImpl() { AUTO_TRACE("WPServoImpl::~WPServoImpl()"); bool remove_instance_counter = false; try { pthread_mutex_lock(&destr_mutex); if(m_instance_counter != NULL) { Loading Loading @@ -117,11 +119,13 @@ WPServoImpl::~WPServoImpl() { if(m_cmdPos_list != NULL) { delete m_cmdPos_list; } if(m_instance_counter != NULL) { delete m_instance_counter; } remove_instance_counter = true; } secure_ptr.Release(); if(remove_instance_counter) { delete m_instance_counter; } } if (m_cdb_ptr) { Loading
SRT/Servers/SRTMinorServo/test/functional/test_container_crash.py 0 → 100644 +52 −0 Original line number Diff line number Diff line """Test issue https://github.com/discos/discos/issues/143""" import os import time import unittest from subprocess import Popen, PIPE from Acspy.Clients.SimpleClient import PySimpleClient from testing.containers import Container __author__ = "Marco Buttu <mbuttu@oa-cagliari.inaf.it>" class TestContainerCrash(unittest.TestCase): telescope = os.getenv('STATION') @classmethod def setUpClass(cls): cls.containers = [ Container('MinorServoContainer', 'cpp'), ] def setUp(self): self.client = PySimpleClient() for container in self.containers: container.start() container.wait_until_running() if not container.is_running(): self.fail('cannot run %s' % container.name) def tearDown(self): self.client.disconnect() for container in self.containers: container.stop() def test_get_and_release_component(self): """The container must be alive after releasing the component""" srp = self.client.getComponent('MINORSERVO/SRP') self.client.releaseComponent('MINORSERVO/SRP') time.sleep(3) for container in self.containers: self.assertTrue(container.is_running()) if __name__ == '__main__': if 'Configuration' in os.getenv('ACS_CDB'): unittest.main(verbosity=2, failfast=True) # Real test using the antenna CDB else: from PyMinorServoTest import simunittest simunittest.run(TestContainerCrash)