95 lines
2.8 KiB
Python
95 lines
2.8 KiB
Python
# This work is licensed under the GNU GPLv2 or later.
|
|
# See the COPYING file in the top-level directory.
|
|
|
|
import os
|
|
|
|
import pytest
|
|
|
|
from virtinst import cli
|
|
from virtinst import pollhelpers
|
|
from virtinst import StoragePool
|
|
from virtinst import URI
|
|
|
|
|
|
############################
|
|
# VirtinstConnection tests #
|
|
############################
|
|
|
|
def test_misc():
|
|
# Misc API checks
|
|
conn = cli.getConnection("test:///default")
|
|
conn.invalidate_caps()
|
|
assert conn.is_open() is True
|
|
assert conn.is_container_only() is False
|
|
assert conn.is_openvz() is False
|
|
assert not conn.get_uri_hostname()
|
|
assert not conn.get_uri_port()
|
|
assert not conn.get_uri_username()
|
|
assert not conn.get_uri_transport()
|
|
assert conn.close() == 0
|
|
|
|
# Coverage for a daemon_version check
|
|
fakeuri = "__virtinst_test__test:///default,libver=123"
|
|
conn = cli.getConnection(fakeuri)
|
|
assert conn.daemon_version() == 123
|
|
|
|
# Hit a special code path that reflects default libvirt transport
|
|
# pylint: disable=protected-access
|
|
conn._uriobj = URI("qemu://example.com/system")
|
|
assert conn.get_uri_transport() == "tls"
|
|
|
|
# Hit the qemu:///embed case privileged case check
|
|
fakeuri = "__virtinst_test__test:///default,fakeuri=qemu:///embed"
|
|
conn = cli.getConnection(fakeuri)
|
|
assert conn.is_privileged() == (os.getuid() == 0)
|
|
|
|
# Hit fakuuri validation error, for old style opts
|
|
with pytest.raises(RuntimeError):
|
|
cli.getConnection(fakeuri + ",qemu")
|
|
|
|
|
|
def test_default_uri(monkeypatch):
|
|
monkeypatch.setitem(os.environ, "LIBVIRT_DEFAULT_URI", "test:///default")
|
|
|
|
# Handle connecting to None conn
|
|
conn = cli.getConnection(None)
|
|
assert conn.getURI() == "test:///default"
|
|
conn.close()
|
|
|
|
|
|
def test_poll():
|
|
# Add coverage for conn fetch_* handling, and pollhelpers
|
|
conn = cli.getConnection("test:///default")
|
|
objmap = {}
|
|
def build_cb(obj, name):
|
|
return obj
|
|
|
|
gone, new, master = pollhelpers.fetch_nets(conn, {}, build_cb)
|
|
assert len(gone) == 0
|
|
assert len(new) == 1
|
|
assert len(master) == 1
|
|
assert master[0].name() == "default"
|
|
|
|
objmap = dict((obj.name(), obj) for obj in master)
|
|
gone, new, master = pollhelpers.fetch_nets(conn, objmap, build_cb)
|
|
assert len(gone) == 0
|
|
assert len(new) == 0
|
|
assert len(master) == 1
|
|
assert master[0].name() == "default"
|
|
|
|
# coverage for some special cases in cache_new_pool
|
|
def makepool(name, create):
|
|
poolxml = StoragePool(conn)
|
|
poolxml.type = "dir"
|
|
poolxml.name = name
|
|
poolxml.target_path = "/tmp/foo/bar/baz/%s" % name
|
|
return poolxml.install(create=create)
|
|
|
|
poolobj1 = makepool("conntest1", False)
|
|
conn.fetch_all_pools()
|
|
poolobj2 = makepool("conntest2", True)
|
|
conn.fetch_all_vols()
|
|
poolobj1.undefine()
|
|
poolobj2.destroy()
|
|
poolobj2.undefine()
|