Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add tests #12

Merged
merged 5 commits into from
Mar 12, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .fixtures.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
fixtures:
symlinks:
gluster: "#{source_dir}"
repositories:
stdlib: "https://github.com/puppetlabs/puppetlabs-stdlib.git"
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
pkg/
spec/fixtures
.rspec_system
12 changes: 12 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
source :rubygems

gem 'rake'
gem 'puppet-lint'
gem 'rspec'
gem 'rspec-puppet'

## Will come in handy later on. But you could just use
# gem 'puppet'
puppetversion = ENV.key?('PUPPET_VERSION') ? "~> #{ENV['PUPPET_VERSION']}" : ['>= 2.7']
gem 'puppet', puppetversion
gem 'puppetlabs_spec_helper'
1 change: 1 addition & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require 'puppetlabs_spec_helper/rake_tasks'
4 changes: 2 additions & 2 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@
#
class gluster (
$client = $::gluster::params::install_client,
$client_package = undef,
$client_package = $::gluster::params::client_package,
$pool = $::gluster::params::pool,
$repo = $::gluster::params::repo,
$server = $::gluster::params::install_server,
$server_package = undef,
$server_package = $::gluster::params::server_package,
$use_exported_resources = $::gluster::params::export_resources,
$version = $::gluster::params::version,
$volumes = undef,
Expand Down
28 changes: 22 additions & 6 deletions manifests/install.pp
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,35 @@
) inherits ::gluster::params {

if $repo {
# use the upstream package names
$_client_package = $::gluster::params::client_package
$_server_package = $::gluster::params::server_package
# use the upstream package names if none were supplied
if $client_package {
$_client_package = $client_package
} else {
$_client_package = $::gluster::params::client_package
}
if $server_package {
$_server_package = $server_package
} else {
$_server_package = $::gluster::params::server_package
}
# install the correct repo
if ! defined ( Class[::gluster::repo] ) {
class { '::gluster::repo':
version => $version,
}
}
} else {
# use the vendor-supplied package names
$_client_package = $::gluster::params::vendor_client_package
$_server_package = $::gluster::params::vendor_server_package
# use the vendor-supplied package names if none were supplied
if $client_package {
$_client_package = $client_package
} else {
$_client_package = $::gluster::params::vendor_client_package
}
if $server_package {
$_server_package = $server_package
} else {
$_server_package = $::gluster::params::vendor_server_package
}
}

# if the user didn't specify a version, just use "installed".
Expand Down
41 changes: 41 additions & 0 deletions spec/classes/client_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
require 'spec_helper'

describe 'gluster::client', :type => :class do
describe 'when installing on Red Hat Enterprise Linux' do
let :facts do
{
:osfamily => 'RedHat',
:architecture => 'x86_64',
}
end
context 'when using all default values' do
it 'should include gluster::install' do
should create_class('gluster::install').with(
:repo => true,
:client_package => 'glusterfs-fuse',
:version => 'LATEST',
)
end
end
context 'when a version number is specified' do
let :params do { :version => '3.6.1' } end
it 'should include gluster::install with version 3.6.1' do
should create_class('gluster::install').with(
:repo => true,
:client_package => 'glusterfs-fuse',
:version => '3.6.1',
)
end
end
context 'when repo is false' do
let :params do { :repo => false } end
it 'should include gluster::install with repo=>false' do
should create_class('gluster::install').with(
:repo => false,
:client_package => 'glusterfs-fuse',
:version => 'LATEST',
)
end
end
end
end
94 changes: 94 additions & 0 deletions spec/classes/init_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
require 'spec_helper'

describe 'gluster', :type => :class do
describe 'installing on Red Hat Enterprise Linux' do
let :facts do
{
:osfamily => 'RedHat',
:operatingsystem => 'RedHat',
:operatingsystemmajrelease => '6',
:architecture => 'x86_64',
}
end
context 'using all defaults' do
it 'should create gluster::install' do
should create_class('gluster::install').with(
:server => true,
:server_package => 'glusterfs-server',
:client => true,
:client_package => 'glusterfs-fuse',
:version => 'LATEST',
:repo => true,
)
end
it 'should manage the Gluster service' do
should create_class('gluster::service').with(
:ensure => true,
)
end
end
context 'specific version and package names defined' do
let :params do {
:server_package => 'custom-gluster-server',
:client_package => 'custom-gluster-client',
:version => '3.1.4',
:repo => false,
}
end
it 'should create gluster::install' do
should create_class('gluster::install').with(
:server => true,
:server_package => 'custom-gluster-server',
:client => true,
:client_package => 'custom-gluster-client',
:version => '3.1.4',
:repo => false,
)
end
it 'should manage the Gluster service' do
should create_class('gluster::service').with(
:ensure => true,
)
end
end

context 'when volumes defined' do
let :params do
{ :volumes =>
{
'data1' => {
'replica' => 2,
'bricks' => ['srv1.local:/brick1/brick','srv2.local:/brick1/brick'],
'options' => ['server.allow-insecure: on'],
}
}
}
end
it 'should create gluster::volume' do
should contain_gluster__volume('data1').with(
:name => 'data1',
:replica => 2,
:bricks => ['srv1.local:/brick1/brick','srv2.local:/brick1/brick'],
:options => ['server.allow-insecure: on'],
)
end
end

context 'when volumes incorrectly defined' do
let :params do
{ :volumes =>
{
'data1' => ['this', 'is', 'an', 'array' ]
}
}
end
it 'should fail' do
expect {
should contain_gluster__volume('data1')
}.to raise_error(Puppet::Error, //)
end
end


end
end
77 changes: 77 additions & 0 deletions spec/classes/install_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
require 'spec_helper'

describe 'gluster::install', :type => :class do
# describe 'installing on an unsupported OS' do
# let :facts do { :osfamily => 'Amiga' } end
# expect { subject }.to raise_error(Puppet::Error, //)
# end
describe 'installing on an unsupported architecture' do
let :facts do { :architecture => 'zLinux' } end
it 'should not install' do
expect {
should create_class('gluster::repo')
}.to raise_error(Puppet::Error, /not yet supported/)
end
end
describe 'installing on Red Hat Enterprise Linux' do
let :facts do
{
:osfamily => 'RedHat',
:operatingsystem => 'RedHat',
:operatingsystemmajrelease => '6',
:architecture => 'x86_64',
}
end
context 'when repo is true' do
let :params do
{ :repo => true }
end
it 'should create gluster::repo' do
should create_class('gluster::repo').with(
:version => 'LATEST',
)
end
end
context 'when repo is false' do
let :params do
{ :repo => false }
end
it 'should not create gluster::repo' do
should_not create_class('gluster::repo')
end
end
context 'when client is true' do
let :params do
{ :client => true }
end
it 'should install glusterfs-fuse package' do
should create_package('glusterfs-fuse')
end
end
context 'when client is false' do
let :params do
{ :client => false }
end
it 'should not install glusterfs-fuse package' do
should_not create_package('glusterfs-fuse')
end
end
context 'when server is true' do
let :params do
{ :server => true }
end
it 'should install glusterfs-server' do
should create_package('glusterfs-server')
end
end
context 'when server is false' do
let :params do
{ :server => false }
end
it 'should not install glusterfs-server' do
should_not create_package('glusterfs-server')
end
end

end
end
79 changes: 79 additions & 0 deletions spec/classes/repo_yum_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
require 'spec_helper'

describe 'gluster::repo::yum', :type => :class do
describe 'version not specified' do
it 'should not install' do
expect {
should create_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-gluster.pub')
}.to raise_error(Puppet::Error, /Version not specified/)
end
end
describe 'bogus version' do
let :params do { :version => 'foobar', } end
it 'should not install' do
expect {
should create_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-gluster.pub')
}.to raise_error(Puppet::Error, /doesn't make sense!/)
end
end
describe 'unsupported architecture' do
let :facts do { :architecture => 'zLinux', } end
let :params do { :version => 'LATEST', } end
it 'should not install' do
expect {
should create_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-gluster.pub')
}.to raise_error(Puppet::Error, /not yet supported/)
end
end
describe 'Red Hat Enterprise Linux' do
context 'latest Gluster on RHEL 6 x86_64' do
let :facts do {
:architecture => 'x86_64',
:operatingsystemmajrelease => '6',
} end
let :params do
{
:version => 'LATEST',
:repo_key_path => '/etc/pki/rpm-gpg/',
:repo_key_name => 'RPM-GPG-KEY-gluster.pub',
:repo_key_source => 'puppet:///modules/gluster/RPM-GPG-KEY-gluster.pub',
}
end
it 'should install' do
should create_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-gluster.pub')
should create_yumrepo('glusterfs-x86_64').with(
:enabled => 1,
:baseurl => 'https://download.gluster.org/pub/gluster/glusterfs/LATEST/RHEL/epel-6/x86_64/',
:gpgcheck => 1,
:gpgkey => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gluster.pub',
)
end
end
context 'latest Gluster on RHEL 6 x86_64 with priority' do
let :facts do {
:architecture => 'x86_64',
:operatingsystemmajrelease => '6',
} end
let :params do
{
:version => 'LATEST',
:repo_key_path => '/etc/pki/rpm-gpg/',
:repo_key_name => 'RPM-GPG-KEY-gluster.pub',
:repo_key_source => 'puppet:///modules/gluster/RPM-GPG-KEY-gluster.pub',
:priority => '50',
}
end
it 'should install' do
should create_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-gluster.pub')
should create_package('yum-plugin-priorities')
should create_yumrepo('glusterfs-x86_64').with(
:enabled => 1,
:baseurl => 'https://download.gluster.org/pub/gluster/glusterfs/LATEST/RHEL/epel-6/x86_64/',
:gpgcheck => 1,
:gpgkey => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gluster.pub',
:priority => '50',
)
end
end
end
end
7 changes: 7 additions & 0 deletions spec/classes/service_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
require 'spec_helper'

describe 'gluster::service', :type => :class do
it 'should start the service' do
should create_service('glusterd')
end
end
Loading