[Ovirt-devel] [PATCH] vm creation / start / stop tests via selenium
Mohammed Morsi
mmorsi at redhat.com
Fri Aug 22 21:35:55 UTC 2008
---
autobuild.sh | 5 +-
wui/src/test/fixtures/cpus.yml | 68 ++++++++++++++++----
wui/src/test/fixtures/hosts.yml | 10 +++
wui/src/test/fixtures/nics.yml | 13 +++-
wui/src/test/fixtures/quotas.yml | 8 +-
wui/src/test/fixtures/storage_pools.yml | 9 +++
wui/src/test/functional/interface_test.rb | 98 +++++++++++++++++++++++++++-
wui/src/test/unit/cpu_test.rb | 2 +
8 files changed, 189 insertions(+), 24 deletions(-)
diff --git a/autobuild.sh b/autobuild.sh
index 6c95cb1..95395d0 100755
--- a/autobuild.sh
+++ b/autobuild.sh
@@ -80,7 +80,10 @@ fi
echo "Running the wui tests"
$ssh_cmd \
"sed -i \"s/#RAILS_ENV=production/RAILS_ENV=test/g\" /etc/sysconfig/ovirt-rails && \
- service ovirt-mongrel-rails restart && service httpd restart && \
+ sed -i \"s/development/test/\" /usr/share/ovirt-wui/dutils/active_record_env.rb && \
+ service ovirt-taskomatic restart && \
+ service ovirt-mongrel-rails restart && \
+ service httpd restart && \
curl -i http://management.priv.ovirt.org/ovirt/ | \
grep 'HTTP/1.1 200 OK' && \
cd /usr/share/ovirt-wui && rake test" > "$RESULTS" 2>&1 \
diff --git a/wui/src/test/fixtures/cpus.yml b/wui/src/test/fixtures/cpus.yml
index 5586303..995b433 100644
--- a/wui/src/test/fixtures/cpus.yml
+++ b/wui/src/test/fixtures/cpus.yml
@@ -1,21 +1,65 @@
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
one:
+ id: 1
+ host_id: 10
cpu_number: 1
core_number: 1
- cpu_id_level: 1
- vendor: 1
- family: 1
- model: 1
- family: MyString
- flags: MyString
+ number_of_cores: 2
+ vendor: 'intel'
two:
+ id: 2
+ host_id: 10
cpu_number: 1
+ core_number: 2
+ number_of_cores: 2
+ vendor: 'intel'
+
+three:
+ id: 3
+ host_id: 10
+ cpu_number: 2
+ core_number: 1
+ number_of_cores: 4
+ vendor: 'intel'
+
+four:
+ id: 4
+ host_id: 10
+ cpu_number: 2
+ core_number: 2
+ number_of_cores: 4
+ vendor: 'intel'
+
+five:
+ id: 5
+ host_id: 10
+ cpu_number: 2
+ core_number: 3
+ number_of_cores: 4
+ vendor: 'intel'
+
+six:
+ id: 6
+ host_id: 10
+ cpu_number: 2
+ core_number: 4
+ number_of_cores: 4
+ vendor: 'intel'
+
+seven:
+ id: 7
+ host_id: 10
+ cpu_number: 3
+ core_number: 1
+ number_of_cores: 1
+ vendor: 'intel'
+
+seven:
+ id: 8
+ host_id: 10
+ cpu_number: 4
core_number: 1
- cpu_id_level: 1
- vendor: 1
- family: 1
- model: 1
- family: MyString
- flags: MyString
+ number_of_cores: 1
+ vendor: 'intel'
diff --git a/wui/src/test/fixtures/hosts.yml b/wui/src/test/fixtures/hosts.yml
index f10a756..a4e1fc6 100644
--- a/wui/src/test/fixtures/hosts.yml
+++ b/wui/src/test/fixtures/hosts.yml
@@ -79,3 +79,13 @@ nine:
is_disabled: 0
hypervisor_type: 'kvm'
hardware_pool_id: 3
+ten:
+ id: 10
+ uuid: '75f8d5f3-faf0-4308-9f20-e4b03d013a27'
+ hostname: 'node3.priv.ovirt.org'
+ arch: 'x86_64'
+ memory: 4194304
+ is_disabled: 0
+ hypervisor_type: 'kvm'
+ hardware_pool_id: 1
+ state: "available"
diff --git a/wui/src/test/fixtures/nics.yml b/wui/src/test/fixtures/nics.yml
index 008cfb7..db57e55 100644
--- a/wui/src/test/fixtures/nics.yml
+++ b/wui/src/test/fixtures/nics.yml
@@ -5,18 +5,25 @@ one:
ip_addr: '1.2.3.4'
usage_type: '1'
bandwidth: 100
- host_id: 1
+ host_id: 10
two:
id: 2
mac: 'AA:BB:CC:DD:EE:FF'
ip_addr: '2.3.4.5'
usage_type: '2'
bandwidth: 1000
- host_id: 1
+ host_id: 10
three:
id: 3
mac: '00:FF:11:EE:22:DD'
ip_addr: '3.4.5.6'
usage_type: '1'
bandwidth: 10
- host_id: 2
+ host_id: 10
+four:
+ id: 4
+ mac: '00:FF:11:EE:22:DD'
+ ip_addr: '3.4.5.6'
+ usage_type: '1'
+ bandwidth: 10
+ host_id: 10
diff --git a/wui/src/test/fixtures/quotas.yml b/wui/src/test/fixtures/quotas.yml
index 2d56ea0..757c934 100644
--- a/wui/src/test/fixtures/quotas.yml
+++ b/wui/src/test/fixtures/quotas.yml
@@ -1,11 +1,11 @@
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
one:
id: 1
- total_vcpus: 8
+ total_vcpus: 30
total_vmemory: 2097152
- total_vnics: 3
- total_storage: 500
- total_vms: 2
+ total_vnics: 20
+ total_storage: 104857600
+ total_vms: 20
pool_id: 1
two:
id: 2
diff --git a/wui/src/test/fixtures/storage_pools.yml b/wui/src/test/fixtures/storage_pools.yml
index 34159ce..0610333 100644
--- a/wui/src/test/fixtures/storage_pools.yml
+++ b/wui/src/test/fixtures/storage_pools.yml
@@ -9,36 +9,44 @@ two:
id: 2
hardware_pool_id: 4
type: 'NfsStoragePool'
+ ip_addr: '127.0.0.1'
export_path: '/tmp/foopath'
three:
id: 3
hardware_pool_id: 4
type: 'NfsStoragePool'
+ ip_addr: '192.168.50.1'
export_path: '/tmp/barpath'
four:
id: 4
hardware_pool_id: 9
type: 'IscsiStoragePool'
port: 121
+ ip_addr: '192.168.50.1'
target: 'rubarb'
+ hardware_pool_id: 1
five:
id: 5
hardware_pool_id: 9
type: 'NfsStoragePool'
+ ip_addr: '192.168.50.2'
export_path: '/tmp/thepath'
six:
id: 6
hardware_pool_id: 9
type: 'NfsStoragePool'
+ ip_addr: '192.168.50.3'
export_path: '/tmp/anotherpath'
seven:
id: 7
hardware_pool_id: 9
type: 'NfsStoragePool'
+ ip_addr: '192.168.50.4'
export_path: '/tmp/apath'
eight:
id: 8
hardware_pool_id: 6
+ ip_addr: '192.168.50.2'
type: 'IscsiStoragePool'
port: 531
target: 'bartarget'
@@ -52,5 +60,6 @@ ten:
id: 10
hardware_pool_id: 6
type: 'IscsiStoragePool'
+ ip_addr: '192.168.50.3'
port: 539
target: 'stayontarget'
diff --git a/wui/src/test/functional/interface_test.rb b/wui/src/test/functional/interface_test.rb
index 6563b44..eadeb74 100644
--- a/wui/src/test/functional/interface_test.rb
+++ b/wui/src/test/functional/interface_test.rb
@@ -27,17 +27,107 @@ if File.exists? File.dirname(__FILE__) + '/../selenium.rb'
"*firefox /usr/lib64/firefox-3.0.1/firefox",
"http://192.168.50.2/ovirt/", 15000)
@browser.start
+ @browser.set_speed(1500) # ms delay between operations
end
def test_ovirt
@browser.open("http://192.168.50.2/ovirt/")
assert_equal("Dashboard", @browser.get_title())
- @browser.close
end
- def teardown
- @browser.stop
- end
+ def test_view_pool
+ @browser.open("http://192.168.50.2/ovirt/")
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//div[@id='side']/ul/li/span/a\")",
+ 10000)
+ @browser.click(
+ "//div[@id='side']/ul/li/span/a") # click 'master pool' link
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//div[@class='summary_title']\")",
+ 10000)
+
+ # verify the title of the pool
+ assert_equal("master pool",
+ @browser.get_text("//div[@class='summary_title']"))
+ end
+
+ def test_create_start_stop_vm
+ @browser.open("http://192.168.50.2/ovirt/")
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//div[@id='side']/ul/li/ul/li[1]/span/a\")",
+ 10000)
+ # click on 'foobar' vm resource pool link:
+ @browser.click "//div[@id='side']/ul/li/ul/li[1]/span/a"
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//li[@id='nav_vmpool']/a\")",
+ 10000)
+ # click on virtual machines tab
+ @browser.click "//li[@id='nav_vmpool']/a"
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//div[@id='toolbar_nav']/ul/li[1]/a\")",
+ 10000)
+ # click on 'add virtual machine'
+ @browser.click "//div[@id='toolbar_nav']/ul/li[1]/a"
+
+ # retrieve current # of vms
+ num_vms = @browser.get_xpath_count "//table[@id='vms_grid']/tbody/tr"
+
+ # fill in required fields
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//input[@id='vm_description']\")",
+ 10000)
+ @browser.type("//input[@id='vm_description']", "zzz-selenium-test-vm")
+ @browser.type("//input[@id='vm_num_vcpus_allocated']", "1")
+ @browser.type("//input[@id='vm_memory_allocated_in_mb']", "256")
+ # select 1st storage pool
+ #@browser.click("//table[@id='storage_volumes_grid']/tbody/tr/td/div/input")
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//form[@id='vm_form']/div[2]/div[2]/div[2]/a\")",
+ 10000)
+ # click the button
+ @browser.click "//form[@id='vm_form']/div[2]/div[2]/div[2]/a"
+
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//table[@id='vms_grid']/tbody/tr[" + (num_vms.to_i + 1).to_s + "]\")",
+ 20000)
+ # verify title of newly created vm
+ assert_equal("zzz-selenium-test-vm",
+ @browser.get_text("//table[@id='vms_grid']/tbody/tr[" + (num_vms.to_i + 1).to_s + "]/td[2]/div"))
+
+ # start it, click checkbox, 'start vm', confirmation button; reload tab, check result
+ @browser.click "//table[@id='vms_grid']/tbody/tr[" + (num_vms.to_i + 1).to_s + "]/td[1]/div/input"
+ @browser.click "//div[@id='toolbar_nav']/ul/li[2]/ul/li[1]"
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//div[@id='vm_action_results']/div[3]/div/div[2]/a\")",
+ 10000)
+ @browser.click "//div[@id='vm_action_results']/div[3]/div/div[2]/a"
+ @browser.click "//div[@id='side']/ul/li/ul/li[1]/span/a"
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//table[@id='vms_grid']/tbody/tr[" + (num_vms.to_i + 1).to_s + "]/td[7]/div\")",
+ 20000)
+ assert_equal("running",
+ @browser.get_text("//table[@id='vms_grid']/tbody/tr[" + (num_vms.to_i + 1).to_s + "]/td[7]/div"))
+
+ # stop / destroy vm
+ @browser.click "//table[@id='vms_grid']/tbody/tr[" + (num_vms.to_i + 1).to_s + "]/td[1]/div/input"
+ @browser.click "//div[@id='toolbar_nav']/ul/li[2]/ul/li[2]"
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//div[@id='vm_action_results']/div[3]/div/div[2]/a\")",
+ 10000)
+ @browser.click "//div[@id='vm_action_results']/div[3]/div/div[2]/a"
+ @browser.click "//div[@id='side']/ul/li/ul/li[1]/span/a"
+ @browser.wait_for_condition(
+ "selenium.isElementPresent(\"//table[@id='vms_grid']/tbody/tr[" + (num_vms.to_i + 1).to_s + "]/td[7]/div\")",
+ 20000)
+ assert_equal("stopped",
+ @browser.get_text("//table[@id='vms_grid']/tbody/tr[" + (num_vms.to_i + 1).to_s + "]/td[7]/div"))
+
+ end
+
+ def teardown
+ @browser.close
+ @browser.stop
+ end
end
end
diff --git a/wui/src/test/unit/cpu_test.rb b/wui/src/test/unit/cpu_test.rb
index 5b64ca7..9558525 100644
--- a/wui/src/test/unit/cpu_test.rb
+++ b/wui/src/test/unit/cpu_test.rb
@@ -1,6 +1,8 @@
require File.dirname(__FILE__) + '/../test_helper'
class CpuTest < ActiveSupport::TestCase
+ fixtures :cpus
+
# Replace this with your real tests.
def test_truth
assert true
--
1.5.4.1
More information about the ovirt-devel
mailing list