2020-01-27 12:49:46 +03:00
# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.
import os
2020-09-18 21:56:36 +03:00
import pytest
2020-01-27 12:49:46 +03:00
from virtinst import cli
from virtinst import pollhelpers
from virtinst import StoragePool
from virtinst import URI
2020-09-18 23:26:28 +03:00
############################
# 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 ( )