]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
tests: workaround ceph-disk global side effects
authorLoic Dachary <ldachary@redhat.com>
Tue, 19 Jan 2016 11:33:05 +0000 (18:33 +0700)
committerLoic Dachary <ldachary@redhat.com>
Thu, 4 Feb 2016 07:38:08 +0000 (14:38 +0700)
Because some variables are global in ceph-disk, tests that modify them
interact with each other in non-predictable ways. This will go away
eventually but requires a significant refactor. Workaround by running
one py.test per test file.

Signed-off-by: Loic Dachary <loic@dachary.org>
src/ceph-disk/tests/test_main.py
src/ceph-disk/tox.ini

index 2b7668fffe44260b7cc8ebc685e085dbd71d6476..1ea643726a81e3c3a97c0a56ac431bab23566bae 100644 (file)
@@ -1,7 +1,9 @@
 from mock import patch, DEFAULT
 import os
 import io
+import shutil
 import subprocess
+import tempfile
 import unittest
 from ceph_disk import main
 
@@ -641,6 +643,8 @@ class TestCephDiskDeactivateAndDestroy(unittest.TestCase):
 
     @patch('__builtin__.open')
     def test_main_deactivate(self, mock_open):
+        data = tempfile.mkdtemp()
+        main.setup_statedir(data)
         DMCRYPT_LUKS_OSD_UUID = '4fbd7e29-9d25-41b8-afd0-35865ceff05d'
         part_uuid = '0ce28a16-6d5d-11e5-aec3-fa163e5c167b'
         disk = 'sdX'
@@ -659,7 +663,6 @@ class TestCephDiskDeactivateAndDestroy(unittest.TestCase):
                 main,
                 list_devices=lambda: fake_device,
         ):
-            main.setup_statedir(main.STATEDIR)
             self.assertRaises(Exception, main.main_deactivate, args)
 
         #
@@ -684,7 +687,6 @@ class TestCephDiskDeactivateAndDestroy(unittest.TestCase):
                 _check_osd_status=lambda cluster, osd_id: 2,
                 _mark_osd_out=lambda cluster, osd_id: True
         ):
-            main.setup_statedir(main.STATEDIR)
             main.main_deactivate(args)
 
         #
@@ -706,7 +708,6 @@ class TestCephDiskDeactivateAndDestroy(unittest.TestCase):
                 list_devices=lambda: fake_device,
                 _check_osd_status=lambda cluster, osd_id: 0,
         ):
-            main.setup_statedir(main.STATEDIR)
             main.main_deactivate(args)
 
         #
@@ -743,7 +744,6 @@ class TestCephDiskDeactivateAndDestroy(unittest.TestCase):
                 unmount=lambda path: True,
                 dmcrypt_unmap=lambda part_uuid: True,
         ):
-            main.setup_statedir(main.STATEDIR)
             main.main_deactivate(args)
 
         #
@@ -778,8 +778,8 @@ class TestCephDiskDeactivateAndDestroy(unittest.TestCase):
                 unmount=lambda path: True,
                 dmcrypt_unmap=lambda part_uuid: True,
         ):
-            main.setup_statedir(main.STATEDIR)
             main.main_deactivate(args)
+        shutil.rmtree(data)
 
     def test_mark_out_out(self):
         def mark_osd_out_fail(osd_id):
index 84e31689c9172d320e9b8db7fbcf00c6d482b1af..4716b0e9c5e984e1a7eb5ce8c88aeaf3f4d51fc6 100644 (file)
@@ -14,7 +14,8 @@ deps =
   -r{toxinidir}/test-requirements.txt
   ../ceph-detect-init
 
-commands = coverage run --source=ceph_disk {envbindir}/py.test -v tests
+commands = coverage run --append --source=ceph_disk {envbindir}/py.test -v tests/test_main.py
+           coverage run --append --source=ceph_disk {envbindir}/py.test -v tests/test_prepare.py
            bash -x tests/ceph-disk.sh
            coverage report --omit=*test*,*tox* --show-missing