I use Hudson.

I've used Test::Unit to wrap validations of generated config files in
the past.  I want to know as early as possible if something isn't
going to work.

Functionally testing the config from the outside in might be easy but
slow.   You can deploy to a VM and actually test it using the goodness
of cucumber.  I'm still looking for the equivalent of unit tests: how
do you quickly test function from the inside to give enough confidence
and a fast feedback loop?  Maybe we need to build out Patrick's
approach with a library of command-line tools to verify that
everything works.

J.


2009/11/7 Isaac Christoffersen <isaac.christoffer...@gmail.com>:
>
> I'd be interested in hearing more about this.  I've been working on a
> project in which we do a lot of automated server builds and
> configuration using various OSS tools, including puppet.  However, one
> thing that I've been looking for is a way to write a set of test suites
> to validate the server configuration.  The combination of TDD and BDD
> with server rollouts is very attractive.
>
> I'd also be curious to know what CI server people are using to help
> coordinate these intermediate builds and tests.
>
>
>
> On 11/7/09 11:00 AM, Patrick Debois wrote:
>> for what it's worth:
>>
>> for a while I was experimenting with cucumber to test scripts running
>> on linux machines. And yes , IMHO it is the way to go .
>>
>> It worked well with the behavior testing just a you guys described.
>> still just as in regular development, bdd can be complemented with
>> tdd.
>> The way i did the tdd, was by using the exit codes of the shell
>> commands. I created an abstraction in ruby for execute (local, remote)
>> and  upload, download of files.
>>
>> If the command did not have exit 0 (the default) then i imagined the
>> test being failed.
>> Using snapshots of the virtual machines, I ran the scripts against a
>> virtual machine  (used virtualbox), with the ability to do a rollback.
>> I know this is not the way puppet normally operates, but I used the
>> (if i recall correctly) the puppetrun command to execute it and see
>> what happened
>> If all of these exit codes where ok (similar to unit tests), i ran the
>> bdd tests to see if everything was correct.
>>
>> By integrating the tdd, and the bdd within a CI-system, I was able to
>> have it run continuously and rebuild the system over and over again.
>>
>> Another thing I want to mention is that you can easily abstract
>> commands in a custom dsl, but I really like to see what actual
>> commands got executed.
>> This is slightly off topic maybe, but by logging/running the actual
>> commands and have the whole environment build like that (including
>> making a floppy, booting the vms)
>> it allowed me to create a kind of install document with the actual
>> commands instead of pointing to a newly invented DSL.
>> So I say yes to an abstraction layer, but no to hiding the actual
>> commands.
>>
>> just my 2 c
>>
>> On Nov 6, 3:56 pm, Lindsay Holmwood<lind...@holmwood.id.au>  wrote:
>>
>>> 2009/11/6 Martin Englund<martin.engl...@sun.com>:
>>>
>>>
>>>
>>>
>>>
>>>
>>>> Folks,
>>>>
>>>
>>>> I've been struggling a bit with how we're using puppet (at my job):
>>>> how do you validate that puppet has done what it is supposed to, and
>>>> even troublesome, how you validate that it has done what you intended
>>>> it to do?
>>>>
>>>
>>>> Since I'm the only one who is writing the puppet profiles and working
>>>> with it on a daily basis, I'm the only one who can decipher the puppet
>>>> logs. I often get the question: how do we know when the system is
>>>> ready for production?
>>>>
>>>
>>>> I've been playing around[1] with cucumber&  webrat, and have pieced
>>>> together a way to do behavior driven infrastructure testing. Puppet
>>>> takes care of getting the system configured correctly, but there are
>>>> often other pieces involved, like opening firewall ports, adding DNS
>>>> entries, sendmail routing, etc. Which must be done outside of puppet
>>>> to get the system ready for release.
>>>>
>>>
>>>> When you write code, you always use unit testing&  integration testing
>>>> to verify that the application is working as expected, but why don't
>>>> we use that when we install a system?
>>>>
>>>
>>>> What are you using to verify that your system is correctly configured
>>>> and behaves the way you want?
>>>>
>>>
>>>> [1]<http://blogs.sun.com/martin/entry/behavior_driven_infrastructure>
>>>>
>>> [although i've commented on the excellent blog entry, i'm posting here]
>>>
>>> Hi Martin,
>>> It looks like there's a bit of crossover here with a project i've been
>>> working on the last few months called cucumber-nagios[0]. It takes the
>>> result of a Cucumber run and outputs it in the Nagios plugin format.
>>> Essentially you use it to express your intentions in plain language,
>>> and verify your intentions periodically through your monitoring
>>> system. Just like what you've posted about. :-)
>>>
>>> Anyhow, I spoke about cucumber-nagios at the excellent Devopsdays in
>>> Belgium last weekend, and I got talking with people about expanding
>>> the library of steps to cover things like logins over SSH, file
>>> manipulation, and mail delivery. It would be cool if we could
>>> centralise our efforts and focus on building an awesome library of
>>> reusable steps to test our infrastructure.
>>>
>>> Your point about doing behaviour driven development when writing
>>> software is right on the mark. From an infrastructure perspective, I
>>> like to think of Cucumber as the testing tool, and Puppet as the
>>> programming language.
>>>
>>> Anyhow, i'd be interested to hear what other people think about this idea!
>>>
>>> Cheers,
>>> Lindsay
>>>
>>> [0]http://auxesis.github.com/cucumber-nagios
>>>
>>> --http://holmwood.id.au/~lindsay/(me)
>>>
>> >
>>
>
> >
>



-- 
Julian Simpson
Software Build and Deployment
http://www.build-doctor.com

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to