Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

using cucumber to manage vhosts under libvirt

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 features
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README
Octocat-spinner-32 Rakefile
Octocat-spinner-32 config.yml
README
cucumber-vhost
==============

This was designed and written to enable me to test code on Virtual Machines without having to worry if they were provisioned correctly

The system relies on Cobbler and Libvirt - there are a few posts on getting cobbler up and running on my blog: http://www.threedrunkensysadsonthe.net/

This is also still in beta!

The software contained in this package are Copyright (c) 2010 Matthew Macdonald-Wallace and are released under the GPL

"cucumber-vhost" is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

"cucumber-vhost" is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with cucumber-vhost.  If not, see http://www.gnu.org/licenses/.

To configure the system, you will need to edit 'config.yml' and set it up for your network

EXAMPLE 
=======

This script is the basis for launching a VM and checking that it is up
After that, it's all over to you! :)

An example that uses all of the steps that are currently available is below (Comments at the end of each line following a #), feel free to add extra steps...

Feature: Testing Vhosts
	This feature is to be used to create and manage vhosts

	Scenario: Provision the server		# I recommend that you don't edit this scenario and have it as the first step!
		Given that I want to build a server of type "test"		# Set the type of server to be provisioned to the system name in cobbler
		Then I should be able to connect to the provisioning server	# Initiate the connection to Cobbler via the API
		And I should recieve an XML file				# retrieve the XML from cobbler via the API
		And I should create the virtual machine				# define the machine under LibVirt and create/start it

	Scenario: Check the server has been built
		Given that I want to confirm the server "test" has been provisioned  # Set the system name in cobbler to be tested and connect to the API
		Then I should check the status of the server			     # Use LibVirt to get the status of the VM
		And the server should have a status of "running"		     # Confirm that the current reported status matches the requested status

	Scenario: Check the server has powered on correctly
		Given that I want to confirm the server "test" has been provisioned	# Set the system name to be tested
		Then I should check the status of the server				# Check the status
		And the server should have a status of "running"			# Confirm it matches the running status
		Then I should ping the server 						# Ping the IP of eth0 (as defined in cobbler) of the server to confirm it is up
		And I should be able to connect the server on port "22"			# Connect to a port to ensure a service is running [0]
	
	Scenario: Destroy the server
		Given that I want to destroy the server "test"				# Again, set the system name from cobbler to be destroyed
		Then I should be able to connect to the provisioning server		# Connect to Cobbler
		Then I should check the status of the server				# Check the status from LibVirt of the VM
		And I should destroy the server						# Destroy the server using LibVirt
		And I should destroy the associated storage				# Destroy the associated Storage
		And I should undefine the server					# Undefine the system - this removes all traces of the system
		

[0] A caveat - for this to work correctly, you can't use port 22 because the Redhat Installer starts a SSH daemon during the install which means this test succeeds before the server is fully provisioned.  I recommend setting the vale of "port" to the service that you are testing and you'll need to make sure the firewall is set to allow traffic on that port before this test will succeed.  

The code has been written to wait until the ping succeeds and the same is true for the port checker - if you need mroe flexibility than this, please feel free to fork and then merge back the changes!
Something went wrong with that request. Please try again.