LS,
I want to run an integration test (for LDAP but that is irrelevant) and
marvin does not cleanup resources
I isolated the problem like so:
```
#Import Local Modules
import marvin
from marvin.cloudstackTestCase import *
from marvin.cloudstackAPI import *
from marvin.lib.utils import *
from marvin.lib.base import *
from marvin.lib.common import *
from marvin.lib.utils import (random_gen)
from nose.plugins.attrib import attr
#Import System modules
import time
import logging
logger = logging.getLogger(__name__)
logger_handler = logging.FileHandler('/tmp/MarvinLogs/{}.log'.format(__name__))
logger_formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
logger_handler.setFormatter(logger_formatter)
logger.addHandler(logger_handler)
logger.setLevel(logging.DEBUG)
class TestData:
parentDomain = "TEST"
name = "name"
id = "id"
notAvailable = "N/A"
domains = "domains"
def __init__(self):
self.testdata = {
TestData.domains : [
{
TestData.name : TestData.parentDomain,
TestData.id : TestData.notAvailable
},
],
}
class TestTestCleanup(cloudstackTestCase):
@classmethod
def setUpClass(cls):
logger.info("Setting up Class")
testClient = super(TestTestCleanup, cls).getClsTestClient()
cls.apiclient = testClient.getApiClient()
# Setup test data
td = TestData()
logger.debug(td)
cls.services = testClient.getParsedTestDataConfig()
logging.debug("standards")
# Get Zone, Domain
cls.domain = get_domain(cls.apiclient)
logging.debug(cls.domain)
cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests())
logging.debug("standard zone: %s" % cls.zone)
# Build the test env
# create a parent domain
logger.info("Creating domain: " + TestData.parentDomain)
tmpDomain = Domain.create(cls.apiclient,td.testdata["domains"][0])
logger.debug("created domain: %s" % tmpDomain.name )
cls.parentDomain = Domain.list(cls.apiclient,id=tmpDomain.id)[0]
logger.debug("found just created domain by id %s" % cls.parentDomain.id)
cls._cleanup = [tmpDomain]
# cls._cleanup.append( cls.parentDomain )
for obj in reversed(cls._cleanup):
logger.debug(obj.name)
return
@classmethod
def tearDownClass(cls):
logger.info("Tearing Down Class")
try:
for obj in reversed(cls._cleanup):
logger.debug(obj.name)
obj.delete()
logger.debug("deleted %s " % obj.id)
cleanup_resources(cls.apiClient, reversed(cls._cleanup))
logging.debug("done cleaning up resources in tearDownClass(cls)")
except Exception as e:
logging.debug("Exception in tearDownClass(cls): %s" % e)
def setUp(self):
self.apiclient = self.testClient.getApiClient()
self.hypervisor = self.testClient.getHypervisorInfo()
self.dbclient = self.testClient.getDbConnection()
self.services = self.testClient.getParsedTestDataConfig()
self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests())
self.pod = get_pod(self.apiclient, self.zone.id)
td = TestData()
logger.info("Creating domain: " + TestData.parentDomain)
tmpDomain = Domain.create(self.apiclient,td.testdata["domains"][0])
logger.debug("created domain: %s" % tmpDomain.name )
self.parentDomain = Domain.list(self.apiclient,id=tmpDomain.id)[0]
logger.debug("found just created domain by id %s" %
self.parentDomain.id)
self.cleanup = [tmpDomain]
for obj in reversed(self.cleanup):
logger.debug(obj.name)
return
def tearDown(self):
logger.info("Tearing Down Object")
try:
for obj in reversed(self.cleanup):
logger.debug(obj.name)
obj.delete()
logger.debug("deleted %s " % obj.id)
cleanup_resources(self.apiclient, reversed(self.cleanup) )
logging.debug("done cleaning up resources in tearDownObject")
except Exception as e:
raise Exception("Warning: Exception during cleanup : %s" % e)
return
@attr(tags=["smoke", "advanced"], required_hardware="false")
def test_01_manual(self):
return
```
neither the class nor the object cleanup seem to happen. Can anybody see
where I go wrong?
output:
```
2019-10-04 11:38:46,069 INFO Setting up Class
2019-10-04 11:38:46,069 DEBUG
<integration.plugins.test.test_cleanup.TestData instance at 0x107374878>
2019-10-04 11:38:46,159 INFO Creating domain: TEST
2019-10-04 11:38:46,252 DEBUG created domain: TEST-GDMX1C
2019-10-04 11:38:46,300 DEBUG found just created domain by id
f6c0113f-a7ef-4547-87d4-d3ac98ef3e73
2019-10-04 11:38:46,300 DEBUG TEST-GDMX1C
2019-10-04 11:38:46,362 INFO Creating domain: TEST
2019-10-04 11:38:46,460 DEBUG created domain: TEST-TDVYUU
2019-10-04 11:38:46,507 DEBUG found just created domain by id
db463a21-eef0-4d94-8524-7e0db1430732
2019-10-04 11:38:46,507 DEBUG TEST-TDVYUU
2019-10-04 11:38:46,507 INFO Tearing Down Object
2019-10-04 11:38:46,507 DEBUG TEST-TDVYUU
2019-10-04 11:38:46,511 INFO Tearing Down Class
2019-10-04 11:38:46,511 DEBUG TEST-GDMX1C
```
note that the delete() methods on the objects seem to 'continue the loop.
no logging messages afterwards and no exceptions raised???
any pointers appreciated
/me googling further in the meanwhile
--
Daan