|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- from nose.tools import *
- from nose.tools import assert_raises
- from testutil.helpers import *
-
- import io
- import os
- import sys
- import time
-
- import nilmdb.server
- from nilmdb.utils import timer, lock
-
- class TestMisc(object):
- def test_timer(self):
- capture = io.StringIO()
- old = sys.stdout
- sys.stdout = capture
- with nilmdb.utils.Timer("test"):
- time.sleep(0.01)
- with nilmdb.utils.Timer("test syslog", tosyslog=True):
- time.sleep(0.01)
- sys.stdout = old
- in_("test: ", capture.getvalue())
-
- def test_lock(self):
- with open("/dev/null") as f:
- eq_(nilmdb.utils.lock.exclusive_lock(f), True)
- nilmdb.utils.lock.exclusive_unlock(f)
- # Test error conditions
- class FakeFile():
- def __init__(self, fileno):
- self._fileno = fileno
- def fileno(self):
- return self._fileno
- with assert_raises(TypeError):
- nilmdb.utils.lock.exclusive_lock(FakeFile('none'))
- with assert_raises(ValueError):
- nilmdb.utils.lock.exclusive_lock(FakeFile(-1))
- with assert_raises(IOError):
- nilmdb.utils.lock.exclusive_lock(FakeFile(12345))
-
- # Lock failure is tested in test_bulkdata
-
- def test_replace_file(self):
- fn = b"tests/misc-testdb/file"
- try:
- os.mkdir(os.path.dirname(fn))
- except FileExistsError:
- pass
- with open(fn, "wb") as f:
- f.write(b"hello, world")
- nilmdb.utils.atomic.replace_file(fn, b"goodbye, world")
- with open(fn, "rb") as f:
- eq_(f.read(), b"goodbye, world")
-
- def test_punch(self):
- fn = b"tests/misc-testdb/punchit"
- try:
- os.mkdir(os.path.dirname(fn))
- except FileExistsError:
- pass
- with open(fn, "wb") as f:
- f.write(b"hello, world")
- nilmdb.utils.fallocate.punch_hole(fn, 3, 5)
- with open(fn, "rb") as f:
- eq_(f.read(), b"hel\0\0\0\0\0orld")
- with assert_raises(OSError):
- nilmdb.utils.fallocate.punch_hole(fn, 1, -1, False)
- with assert_raises(OSError):
- nilmdb.utils.fallocate.punch_hole("/", 1, 1, False)
- # no exception because we ignore errors by default
- nilmdb.utils.fallocate.punch_hole(fn, 1, -1)
-
- def test_diskusage(self):
- hs = nilmdb.utils.diskusage.human_size
- eq_(hs(0), "0 bytes")
- eq_(hs(1), "1 byte")
- eq_(hs(1023), "1023 bytes")
-
- eq_(hs(1024), "1 kiB")
-
- eq_(hs(1048575), "1024 kiB")
- eq_(hs(1048576), "1.0 MiB")
-
- eq_(hs(1073741823), "1024.0 MiB")
- eq_(hs(1073741824), "1.00 GiB")
-
- eq_(hs(1099511627775), "1024.00 GiB")
- eq_(hs(1099511627776), "1.00 TiB")
-
- eq_(hs(1099511627776 * 5000.1234), "5000.12 TiB")
-
- nilmdb.utils.diskusage.du("/dev")
- with assert_raises(OSError):
- nilmdb.utils.diskusage.du("/dev/null/bogus")
|