Ejemplo n.º 1
0
def test_parse_line_SET():
    SMALL_DICT = {'key': 'value'}
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(TEST_ROOT)

    reply = sysfs._parse_line("SET eyJrZXkiOiAidmFsdWUifQ==")
    assert reply.split() == ['OK']
    assert sysfs._root == SMALL_DICT
Ejemplo n.º 2
0
def test_parse_line_NOTIFY():
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(TEST_ROOT)

    reply = sysfs._parse_line("NOTIFY /file1 1")
    assert reply.split() == ['OK']
    file1 = sysfs._root['contents'][1]
    assert file1['name'] == 'file1'
    assert file1['poll_events'] == 1
Ejemplo n.º 3
0
def test_parse_line_GET():
    SMALL_DICT = {'key': 'value'}
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(SMALL_DICT)

    reply = sysfs._parse_line("GET")
    split = reply.split()
    assert len(split) == 2
    assert split[0] == 'OK'
    assert decode_dict(split[1]) == SMALL_DICT
Ejemplo n.º 4
0
def test_readdir():
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(TEST_ROOT)

    names = [x.name for x in sysfs.readdir('/', 0)]
    assert '.' in names
    assert '..' in names
    assert 'dir1' in names
    assert 'file1' in names
    assert len(names) == 4

    names = [x.name for x in sysfs.readdir('/dir1', 0)]
    assert '.' in names
    assert '..' in names
    assert 'dir2' in names
    assert len(names) == 3
Ejemplo n.º 5
0
def test_read():
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(TEST_ROOT)

    ret = sysfs.read('/file0', 4096, 0)
    assert ret == -errno.ENOENT

    ret = sysfs.read('/file1', 4096, 0)
    assert ret == ALL_BYTES
    ret = sysfs.read('/file0', 4096, 0)
    assert ret == -errno.ENOENT
Ejemplo n.º 6
0
def test_get_item():
    sysfs = SysfsFuse()
    sysfs._root = dict(TEST_ROOT)

    item = sysfs._get_item('/')
    assert item['name'] == '/'

    item = sysfs._get_item('/dir1')
    assert item['name'] == 'dir1'

    item = sysfs._get_item('/dir1/dir2')
    assert item['name'] == 'dir2'

    item = sysfs._get_item('/dir1/dir2/dir3')
    assert item is None
Ejemplo n.º 7
0
def test_getattr():
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(TEST_ROOT)

    ret = sysfs.getattr('/file0')
    assert ret == -errno.ENOENT

    attr = sysfs.getattr('/dir1')
    assert stat.S_IFMT(attr.st_mode) == stat.S_IFDIR
    assert stat.S_IMODE(attr.st_mode) == 0o755
    assert attr.st_size == 0

    attr = sysfs.getattr('/file1')
    assert stat.S_IFMT(attr.st_mode) == stat.S_IFREG
    assert stat.S_IMODE(attr.st_mode) == 0o644
    assert attr.st_size == 4096
Ejemplo n.º 8
0
def test_write():
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(TEST_ROOT)

    ret = sysfs.write('/file0', b'', 0)
    assert ret == -errno.ENOENT

    item = sysfs._root['contents'][1]
    assert item['name'] == 'file1'

    ret = sysfs.write('/file1', b'test', 10)
    assert ret == 4
    assert decode_bytes(item['write_data']) == b'test'
    assert item['write_offset'] == 10

    ret = sysfs.write('/file0', b'test', 0)
    assert ret == -errno.ENOENT
Ejemplo n.º 9
0
def test_poll():
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(TEST_ROOT)
    poll_handle = object()

    ret = sysfs.poll('/file0', poll_handle)
    assert ret == -errno.ENOENT

    ret = sysfs.poll('/file1', poll_handle)
    assert ret == 0
    assert sysfs._poll_handles['/file1'] is poll_handle

    del sysfs._poll_handles['/file1']

    file1 = sysfs._root['contents'][1]
    assert file1['name'] == 'file1'
    file1['poll_events'] = 1
    ret = sysfs.poll('/file1', poll_handle)
    assert ret == 1
    assert '/file1' not in sysfs._poll_handles
Ejemplo n.º 10
0
def test_truncate():
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(TEST_ROOT)

    ret = sysfs.truncate('/file0', 0)
    assert ret == -errno.ENOENT
Ejemplo n.º 11
0
def test_open():
    sysfs = SysfsFuse()
    sysfs._root = copy.deepcopy(TEST_ROOT)

    assert sysfs._root['contents'][1]['name'] == 'file1'

    ret = sysfs.open('/file0', os.O_RDONLY)
    assert ret == -errno.ENOENT

    # read/write file can be opened any which way
    sysfs._root['contents'][1]['mode'] = 0o666
    err = sysfs.open('/file1', os.O_RDONLY)
    assert err is None
    err = sysfs.open('/file1', os.O_WRONLY)
    assert err is None
    err = sysfs.open('/file1', os.O_RDWR)
    assert err is None

    # read-only file can only be opened for reading
    sysfs._root['contents'][1]['mode'] = 0o444
    err = sysfs.open('/file1', os.O_RDONLY)
    assert err is None
    err = sysfs.open('/file1', os.O_WRONLY)
    assert err == -errno.EACCES
    err = sysfs.open('/file1', os.O_RDWR)
    assert err == -errno.EACCES

    # write-only file can only be opened for writing
    sysfs._root['contents'][1]['mode'] = 0o222
    err = sysfs.open('/file1', os.O_RDONLY)
    assert err == -errno.EACCES
    err = sysfs.open('/file1', os.O_WRONLY)
    assert err is None
    err = sysfs.open('/file1', os.O_RDWR)
    assert err == -errno.EACCES
Ejemplo n.º 12
0
def test_setxattr():
    sysfs = SysfsFuse()
    attr = sysfs.setxattr('/', 'some.attr', 'value', 0)
    assert attr == -errno.ENOTSUP