This is a followup of my previous Post about Behavior Driven Infrastructure.
Using Behat to Test a Server
Here’s an example for a Test for
Feature: tzdata Configuration As a Server I want to have a tzdata installation So that my calculations for various timezones are always correct Scenario: The tzdata data Installation and Configuration Given i have the "tzdata" Package installed Then the directory "/usr/share/zoneinfo" should exist And the "tzdata" Package Version should match "2011(d|e)" And the file "/usr/share/zoneinfo/localtime" should exist And the file "/etc/localtime" should exist Scenario: The tzdata checks for correct times When i execute "date" Then the output should match "CEST|CET" When i execute "date --utc -d '2006-08-07 12:34:56-06:00'" Then the output should match "UTC" And the output should match "18:34:56" When i execute "TZ=Europe/London date -d '2006-08-07 12:34:56-06:00'" Then the output should match "BST|GMT" And the output should match "19:34:56"
Writing the Unit Tests
I’ve put up 2 examples, one for ntp and one for tzdata, on my Github here. The Code is very Quick’n’Dirty, just as a “see what is possible” quality.
Now when a random Dictator somewhere decides that his Country should change the timezones again, you can setup a quick test, rollout the tests, then rollout a new tzdata and be assured that the Timezone changes reliably hit every Server.
This is a very Simple Test, but it is just here as an example and to explore the viability. For an Apache installation for example you could proceed to check Various configuration settings, check for helper services that need to be there, check your logfile collection is setup properly, check your logrotation, check if all PHP packages are installed and correctly configured.