Commit cf7cc2fd authored by Marco Buttu's avatar Marco Buttu Committed by GitHub
Browse files

Merge pull request #150 from discos/fix-issue-143

Fix issue #143
parents f61202ea 46ba9642
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -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) {
@@ -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) {
+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)