summaryrefslogtreecommitdiffstats
path: root/tests/storage/devicelibs/baseclass.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/storage/devicelibs/baseclass.py')
-rw-r--r--tests/storage/devicelibs/baseclass.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/storage/devicelibs/baseclass.py b/tests/storage/devicelibs/baseclass.py
new file mode 100644
index 000000000..d1264f5b6
--- /dev/null
+++ b/tests/storage/devicelibs/baseclass.py
@@ -0,0 +1,43 @@
+import unittest
+import os
+import subprocess
+
+class TestDevicelibs(unittest.TestCase):
+
+ _LOOP_DEVICES = (("/dev/loop0", "/tmp/test-virtdev0"),
+ ("/dev/loop1", "/tmp/test-virtdev1"))
+
+ ((_LOOP_DEV0, _LOOP_FILE0), (_LOOP_DEV1, _LOOP_FILE1)) = _LOOP_DEVICES
+
+ def setUp(self):
+ for dev, file in self._LOOP_DEVICES:
+ proc = subprocess.Popen(["dd", "if=/dev/zero", "of=%s" % file, "bs=1024", "count=102400"])
+ while True:
+ proc.communicate()
+ if proc.returncode is not None:
+ rc = proc.returncode
+ break
+ if rc:
+ raise OSError, "dd failed creating the file %s" % file
+
+ proc = subprocess.Popen(["losetup", dev, file])
+ while True:
+ proc.communicate()
+ if proc.returncode is not None:
+ rc = proc.returncode
+ break
+ if rc:
+ raise OSError, "losetup failed setting up the loop device %s" % dev
+
+ def tearDown(self):
+ for dev, file in self._LOOP_DEVICES:
+ proc = subprocess.Popen(["losetup", "-d", dev])
+ while True:
+ proc.communicate()
+ if proc.returncode is not None:
+ rc = proc.returncode
+ break
+ if rc:
+ raise OSError, "losetup failed removing the loop device %s" % dev
+
+ os.remove(file)