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.
2020-09-11 13:02:51 -04:00
from . import lib
2018-01-11 15:32:18 -05:00
2020-09-18 17:27:50 -04:00
######################################
# UI tests for the createpool wizard #
######################################
def _open_createpool ( app , hostwin ) :
hostwin . find ( " pool-add " , " push button " ) . click ( )
win = app . find_window ( " Add a New Storage Pool " )
lib . utils . check ( lambda : win . active )
return win
def testCreatePools ( app ) :
hostwin = app . manager_open_host ( " Storage " )
win = _open_createpool ( app , hostwin )
finish = win . find ( " Finish " , " push button " )
name = win . find ( " Name: " , " text " )
def _browse_local_path ( winlabel , usepath ) :
chooser = app . root . find ( winlabel , " file chooser " )
# Enter the filename and select it
chooser . find ( usepath , " table cell " ) . click ( )
obutton = chooser . find ( " Open " , " push button " )
lib . utils . check ( lambda : obutton . sensitive )
obutton . click ( )
lib . utils . check ( lambda : not chooser . showing )
2020-09-11 13:02:51 -04:00
lib . utils . check ( lambda : win . active )
2020-09-18 17:27:50 -04:00
# Create a simple default dir pool
lib . utils . check ( lambda : name . text == " pool " )
newname = " a-test-new-pool "
name . set_text ( newname )
finish . click ( )
# Select the new object in the host window, then do
# stop->start->stop->delete, for lifecycle testing
lib . utils . check ( lambda : hostwin . active )
cell = hostwin . find ( newname , " table cell " )
delete = hostwin . find ( " pool-delete " , " push button " )
start = hostwin . find ( " pool-start " , " push button " )
stop = hostwin . find ( " pool-stop " , " push button " )
cell . click ( )
stop . click ( )
lib . utils . check ( lambda : start . sensitive )
start . click ( )
lib . utils . check ( lambda : stop . sensitive )
stop . click ( )
lib . utils . check ( lambda : delete . sensitive )
# Delete it, clicking 'No' first
delete . click ( )
app . click_alert_button ( " permanently delete the pool " , " No " )
lib . utils . check ( lambda : not cell . dead )
delete . click ( )
app . click_alert_button ( " permanently delete the pool " , " Yes " )
# Ensure it's gone
lib . utils . check ( lambda : cell . dead )
# Test a disk pool
win = _open_createpool ( app , hostwin )
win . combo_select ( " Type: " , " disk: " )
2022-02-27 12:54:39 -05:00
newname = " a-pool-logical "
name . set_text ( " a-pool-logical " )
2020-09-18 17:27:50 -04:00
win . find ( " source-browse " ) . click ( )
_browse_local_path ( " Choose source path " , " console " )
finish . click ( )
hostwin . find ( newname , " table cell " )
# Test a iscsi pool
win = _open_createpool ( app , hostwin )
win . combo_select ( " Type: " , " iscsi: " )
2022-02-27 13:30:46 -05:00
newname = " a-pool-iscsi "
name . set_text ( " a-pool-iscsi " )
2020-09-18 17:27:50 -04:00
win . find ( " target-browse " ) . click ( )
_browse_local_path ( " Choose target directory " , " by-path " )
finish . click ( )
# Catch example error
app . click_alert_button ( " source host name " , " Close " )
win . find ( " Host Name: " , " text " ) . set_text ( " example.com " )
win . find ( " pool-source-path-text " ) . set_text ( " foo-iqn " )
win . find_fuzzy ( " Initiator IQN: " , " check " ) . click ( )
win . find ( " iqn-text " , " text " ) . set_text ( " initiator-foo " )
finish . click ( )
hostwin . find ( newname , " table cell " )
# Test a logical pool
win = _open_createpool ( app , hostwin )
win . combo_select ( " Type: " , " logical: " )
newname = " a-lvm-pool "
name . set_text ( " a-lvm-pool " )
win . combo_check_default ( " Volgroup " , " testvg1 " )
win . combo_select ( " Volgroup " , " testvg2 " )
finish . click ( )
hostwin . find ( newname , " table cell " )
# Test a scsi pool
win = _open_createpool ( app , hostwin )
win . combo_select ( " Type: " , " scsi: " )
newname = " a-scsi-pool "
name . set_text ( " a-scsi-pool " )
win . combo_select ( " Source Adapter: " , " host2 " )
finish . click ( )
hostwin . find ( newname , " table cell " )
# Test a ceph pool
win = _open_createpool ( app , hostwin )
newname = " a-ceph-pool "
name . set_text ( " a-ceph-pool " )
win . combo_select ( " Type: " , " rbd: " )
win . find_fuzzy ( " Host Name: " , " text " ) . set_text ( " example.com:1234 " )
win . find_fuzzy ( " pool-source-name-text " , " text " ) . typeText ( " frob " )
finish . click ( )
lib . utils . check ( lambda : not win . showing )
lib . utils . check ( lambda : hostwin . active )
hostwin . find ( newname , " table cell " )
# Ensure host window closes fine
hostwin . click ( )
hostwin . keyCombo ( " <ctrl>w " )
lib . utils . check ( lambda : not hostwin . showing )
def testCreatePoolXMLEditor ( app ) :
app . open ( xmleditor_enabled = True )
hostwin = app . manager_open_host ( " Storage " )
win = _open_createpool ( app , hostwin )
finish = win . find ( " Finish " , " push button " )
name = win . find ( " Name: " , " text " )
# Create a new obj with XML edited name, verify it worked
tmpname = " objtmpname "
newname = " froofroo "
name . set_text ( tmpname )
win . find ( " XML " , " page tab " ) . click ( )
xmleditor = win . find ( " XML editor " )
newtext = xmleditor . text . replace ( " > %s < " % tmpname , " > %s < " % newname )
xmleditor . set_text ( newtext )
finish . click ( )
lib . utils . check ( lambda : hostwin . active )
cell = hostwin . find ( newname , " table cell " )
cell . click ( )
# Do standard xmleditor tests
win = _open_createpool ( app , hostwin )
lib . utils . test_xmleditor_interactions ( app , win , finish )
win . find ( " Cancel " , " push button " ) . click ( )
lib . utils . check ( lambda : not win . visible )