2015-04-01 15:07:51 +02:00
# Copyright (C) 2013, 2015 Red Hat, Inc.
2013-03-17 17:06:52 -04:00
#
2018-04-04 14:35:41 +01:00
# This work is licensed under the GNU GPLv2 or later.
2018-03-20 15:00:02 -04:00
# See the COPYING file in the top-level directory.
2013-03-17 17:06:52 -04:00
import os
2020-09-03 12:03:38 -04:00
import tempfile
2013-03-17 17:06:52 -04:00
2013-04-10 19:48:07 -04:00
from tests import utils
2013-03-17 17:06:52 -04:00
2013-07-02 18:30:46 -04:00
from virtinst import Cloner
2013-03-17 17:06:52 -04:00
2020-09-08 17:48:40 -04:00
CLI_XMLDIR = utils . DATADIR + " /cli/virtclone/ "
2013-03-17 17:06:52 -04:00
2020-09-03 12:03:38 -04:00
def test_clone_unmanaged ( ) :
"""
Test that unmanaged storage duplication via the clone wizard
actually copies data
"""
xmlpath = CLI_XMLDIR + " clone-disk.xml "
2020-09-04 11:13:29 -04:00
conn = utils . URIs . open_testdefault_cached ( )
2020-09-03 12:03:38 -04:00
xml = open ( xmlpath ) . read ( )
2013-03-17 17:06:52 -04:00
2020-09-03 12:03:38 -04:00
tmp1 = tempfile . NamedTemporaryFile ( )
tmp2 = tempfile . NamedTemporaryFile ( )
inp1 = os . path . abspath ( __file__ )
inp2 = xmlpath
2013-03-17 17:06:52 -04:00
2020-09-03 12:03:38 -04:00
xml = xml . replace ( " /tmp/__virtinst_cli_exist1.img " , inp1 )
xml = xml . replace ( " /tmp/__virtinst_cli_exist2.img " , inp2 )
cloner = Cloner ( conn , src_xml = xml )
2013-04-13 14:34:52 -04:00
2020-09-04 14:13:52 -04:00
diskinfos = cloner . get_nonshare_diskinfos ( )
2020-09-03 12:03:38 -04:00
assert len ( diskinfos ) == 2
2020-09-04 14:13:52 -04:00
diskinfos [ 0 ] . set_new_path ( tmp1 . name , False )
diskinfos [ 1 ] . set_new_path ( tmp2 . name , False )
2013-03-17 17:06:52 -04:00
2020-09-03 12:03:38 -04:00
cloner . prepare ( )
cloner . start_duplicate ( None )
2013-03-17 17:06:52 -04:00
2020-09-03 12:03:38 -04:00
assert open ( tmp1 . name ) . read ( ) == open ( inp1 ) . read ( )
assert open ( tmp2 . name ) . read ( ) == open ( inp2 ) . read ( )
2020-09-05 08:51:31 -04:00
def test_generate_name ( ) :
conn = utils . URIs . open_testdriver_cached ( )
def _g ( n ) :
return Cloner . generate_clone_name ( conn , n )
assert _g ( " test " ) == " test-clone1 "
assert _g ( " test-clone-simple " ) == " test-clone-simple-clone "
assert _g ( " test-clone-simple-clone " ) == " test-clone-simple-clone1 "
assert _g ( " test-clone-simple-clone5 " ) == " test-clone-simple-clone6 "