Skip to content

Commit

Permalink
merging spec branch changes
Browse files Browse the repository at this point in the history
  • Loading branch information
vkhatri committed Oct 25, 2014
2 parents 29ffed1 + 2b878bc commit 4a824cd
Show file tree
Hide file tree
Showing 10 changed files with 200 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -23,3 +23,6 @@ bin/*
.bundle/*
.DS_Store
coverage/

.kitchen/
.kitchen.local.yml
16 changes: 16 additions & 0 deletions .kitchen.yml
@@ -0,0 +1,16 @@
---
driver:
name: vagrant

provisioner:
name: chef_solo

platforms:
- name: ubuntu-12.04
- name: centos-6.4

suites:
- name: default
run_list:
- recipe[solrcloud::default]
attributes:
4 changes: 3 additions & 1 deletion .rspec
@@ -1 +1,3 @@
--format documentation --color --fail-fast
--color
--format progress
--fail-fast
3 changes: 3 additions & 0 deletions Berksfile
@@ -0,0 +1,3 @@
source "https://supermarket.getchef.com"

metadata
13 changes: 13 additions & 0 deletions Gemfile
Expand Up @@ -5,6 +5,7 @@ gem 'berkshelf', '~> 3.1.4'
gem 'chefspec', '~> 3.0'
gem 'foodcritic', '~> 3.0'
gem 'rubocop', '~> 0.24'
gem 'berkshelf'

# ohai attributes override
gem 'fauxhai'
Expand All @@ -24,3 +25,15 @@ group :development do
gem 'knife-spork', '~> 1.0.17'
gem 'knife-spec'
end

# Uncomment these lines if you want to live on the Edge:
#
# group :development do
# gem "berkshelf", github: "berkshelf/berkshelf"
# gem "vagrant", github: "mitchellh/vagrant", tag: "v1.6.3"
# end
#
# group :plugins do
# gem "vagrant-berkshelf", github: "berkshelf/vagrant-berkshelf"
# gem "vagrant-omnibus", github: "schisamo/vagrant-omnibus"
# end
7 changes: 7 additions & 0 deletions Rakefile
Expand Up @@ -40,3 +40,10 @@ desc 'Run ChefSpec Test'
puts 'Running ChefSpec Test'
RSpec::Core::RakeTask.new(:spec)
end

begin
require 'kitchen/rake_tasks'
Kitchen::RakeTasks.new
rescue LoadError
puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV['CI']
end
12 changes: 12 additions & 0 deletions Thorfile
@@ -0,0 +1,12 @@
# encoding: utf-8

require 'bundler'
require 'bundler/setup'
require 'berkshelf/thor'

begin
require 'kitchen/thor_tasks'
Kitchen::ThorTasks.new
rescue LoadError
puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV['CI']
end
88 changes: 88 additions & 0 deletions Vagrantfile
@@ -0,0 +1,88 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.require_version ">= 1.5.0"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# All Vagrant configuration is done here. The most common configuration
# options are documented and commented below. For a complete reference,
# please see the online documentation at vagrantup.com.

config.vm.hostname = "solrcloud-berkshelf"

# Set the version of chef to install using the vagrant-omnibus plugin
config.omnibus.chef_version = :latest

# Every Vagrant virtual environment requires a box to build off of.
# If this value is a shorthand to a box in Vagrant Cloud then
# config.vm.box_url doesn't need to be specified.
config.vm.box = "chef/ubuntu-14.04"

# The url from where the 'config.vm.box' box will be fetched if it
# is not a Vagrant Cloud box and if it doesn't already exist on the
# user's system.
# config.vm.box_url = "https://vagrantcloud.com/chef/ubuntu-14.04/version/1/provider/virtualbox.box"

# Assign this VM to a host-only network IP, allowing you to access it
# via the IP. Host-only networks can talk to the host machine as well as
# any other machines on the same network, but cannot be accessed (through this
# network interface) by any external networks.
config.vm.network :private_network, type: "dhcp"

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider :virtualbox do |vb|
# # Don't boot with headless mode
# vb.gui = true
#
# # Use VBoxManage to customize the VM. For example to change memory:
# vb.customize ["modifyvm", :id, "--memory", "1024"]
# end
#
# View the documentation for the provider you're using for more
# information on available options.

# The path to the Berksfile to use with Vagrant Berkshelf
# config.berkshelf.berksfile_path = "./Berksfile"

# Enabling the Berkshelf plugin. To enable this globally, add this configuration
# option to your ~/.vagrant.d/Vagrantfile file
config.berkshelf.enabled = true

# An array of symbols representing groups of cookbook described in the Vagrantfile
# to exclusively install and copy to Vagrant's shelf.
# config.berkshelf.only = []

# An array of symbols representing groups of cookbook described in the Vagrantfile
# to skip installing and copying to Vagrant's shelf.
# config.berkshelf.except = []

config.vm.provision :chef_solo do |chef|
chef.json = {
mysql: {
server_root_password: 'rootpass',
server_debian_password: 'debpass',
server_repl_password: 'replpass'
}
}

chef.run_list = [
"recipe[solrcloud::default]"
]
end
end
22 changes: 22 additions & 0 deletions spec/spec_helper.rb
@@ -0,0 +1,22 @@
# This file was generated by the `rspec --init` command. Conventionally, all
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
# Require this file using `require "spec_helper"` to ensure that it is only
# loaded once.
#
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration

require 'rspec/expectations'
require 'chefspec'
require 'chefspec/berkshelf'

RSpec.configure do |config|
config.treat_symbols_as_metadata_keys_with_true_values = true
config.run_all_when_everything_filtered = true
# config.filter_run :focus

# Run specs in random order to surface order dependencies. If you find an
# order dependency and want to debug it, you can fix the order by providing
# the seed, which is printed after each run.
# --seed 1234
# config.order = 'random'
end
33 changes: 33 additions & 0 deletions spec/unit/recipes/user_spec.rb
@@ -0,0 +1,33 @@
#
# Cookbook Name:: solrcloud
# Recipe:: user
#
# Copyright 2014, Virender Khatri
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

require 'spec_helper'

describe 'solrcloud::user' do
let(:chef_run) { ChefSpec::Runner.new(:platform => 'ubuntu', :version => '12.04').converge(described_recipe) }

it 'adds group solr' do
expect(chef_run).to create_group('solr')
end

it 'adds user solr' do
expect(chef_run).to create_user('solr')
end

end

0 comments on commit 4a824cd

Please sign in to comment.