Time to get back to my roots: Perl
Today I wrote a perl Test::RemoteServer module:
#!/usr/bin/perl -w -I. use strict; use warnings; use Test::More tests => 4; use Test::RemoteServer; # # Ping Tests # ping_ok( "192.168.0.1", "Website host is up: IPv4" ); ping6_ok( "www.steve.org.uk", "Website host is up: IPv6" ); # # Socket tests # socket_open( "ipv4.steve.org.uk", "2222", "OpenSSH is running" ); socket_closed( "ipv4.steve.org.uk", "22", "OpenSSH is not available on :22" );
I can see a lot of value in defining tests that are carried out against remote hosts - even if they're more basic than the kind of comprehensive testing you'd get via Custodian, Nagios, etc.
Being able to run "make test" and remotely probe services is cool.
Unfortunately I suspect the new-hotness is to couple the testing with your Chef, Puppet, CFengine, Slaughter, Ansible, etc, policies. That way you have two things:
- A consistent way to define system-state.
- A consistent way to test that the damn thing worked.
Coming to CPAN in the near future anyway, I can throw it up on Github in advance if there is any interest..