summaryrefslogtreecommitdiff
path: root/t/test-parser.rb
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2012-11-14 16:56:51 +0000
committerSteve Kemp <steve@steve.org.uk>2012-11-14 16:56:51 +0000
commitb56b061bf83a6e90da372ff9ae5d3916369a6d9f (patch)
treed3f03b211fa238e8e8eadfcd14d6c481cf1776c1 /t/test-parser.rb
parentff75f4315aaf7ac8af280fbe666ff3093bd0d59d (diff)
Updated test cases
Diffstat (limited to 't/test-parser.rb')
-rwxr-xr-xt/test-parser.rb85
1 files changed, 76 insertions, 9 deletions
diff --git a/t/test-parser.rb b/t/test-parser.rb
index dea0548..c3e782f 100755
--- a/t/test-parser.rb
+++ b/t/test-parser.rb
@@ -26,6 +26,10 @@ class TestParser < Test::Unit::TestCase
end
+
+
+
+
#
# Test we can create a new parser object - specifically
# that it throws exceptions if it is not given a filename
@@ -57,6 +61,10 @@ class TestParser < Test::Unit::TestCase
end
+
+
+
+
#
# Test that we can define macros.
#
@@ -162,6 +170,8 @@ class TestParser < Test::Unit::TestCase
+
+
#
# Test that we can define macros with only a single host.
#
@@ -246,6 +256,18 @@ class TestParser < Test::Unit::TestCase
end
+
+
+
+
+ #
+ # We found a bug in our live code because macros didn't get expanded
+ # unless they matched the regular expression "[A-Z_]" - here we test
+ # that this bug is fixed.
+ #
+ # (The issue being that several of our macros have numeric digits in
+ # their names.)
+ #
def test_misc_macro
parser = MonitorConfig.new("/dev/null" )
@@ -258,13 +280,18 @@ class TestParser < Test::Unit::TestCase
assert( macros.empty? )
assert( macros.size() == 0 )
- parser.parse_line( "FRONTLINESTAGING2 is 89.16.186.138 and 89.16.186.139 and 89.16.186.148." )
+ #
+ # Define a new macro, and ensure it is now present
+ #
+ parser.parse_line( "FRONTLINESTAGING2 is 89.16.186.138 and 89.16.186.139 and 89.16.186.148." )
macros = parser.macros
assert( macros.size() == 1 )
+
#
- # Test that we got a suitable value.
+ # Test that we got a suitable value when lookup up the contents
+ # of that newly defined macro.
#
values = parser.get_macro_targets( "FRONTLINESTAGING2" )
assert(values.class.to_s == "Array" )
@@ -274,15 +301,23 @@ class TestParser < Test::Unit::TestCase
# Parse another line
#
parser.parse_line( "SWML_HOSTS is 212.110.191.9.")
+
+
+ #
+ # Ensure our macro-list is now bigger.
+ #
macros = parser.macros
assert( macros.size() == 2 )
+
+ #
+ # And ensure the macro expansion is correct.
+ #
values = parser.get_macro_targets( "SWML_HOSTS" )
assert(values.class.to_s == "Array" )
+ end
- end
-
#
@@ -300,8 +335,8 @@ class TestParser < Test::Unit::TestCase
assert_equal( ret.size(), 1 )
#
- # Define a macro - such that a single added test will become
- # several indivual tests.
+ # Define a macro - such that a single parsed line will become multiple
+ # tests.
#
parser.parse_line( "MACRO is kvm1.vm.bytemark.co.uk and kvm1.vm.bytemark.co.uk and kvm3.vm.bytemark.co.uk." )
assert( parser.is_macro?( "MACRO") )
@@ -315,7 +350,7 @@ class TestParser < Test::Unit::TestCase
# The resulting array should contain three JSON strings.
#
assert_equal( ret.class.to_s, "Array" )
- assert_equal( ret.size(),3 )
+ assert_equal( ret.size(), 3 )
#
# Ensure we look like valid JSON, and contains the correct hostnames.
@@ -333,6 +368,7 @@ class TestParser < Test::Unit::TestCase
# 2. The addition should have the correct test-type
#
%w( dns ftp http https jabber ldap ping rsync ssh smtp ).each do |name|
+
ret = parser.parse_line( "MACRO must run #{name} otherwise '#{name} failure'." )
#
@@ -342,7 +378,8 @@ class TestParser < Test::Unit::TestCase
assert_equal( ret.size(),3 )
#
- # The test-type should be set to the correct test.
+ # The test-type should be set to the correct test for each of those
+ # three tests we've added.
#
ret.each do |test|
@@ -357,13 +394,14 @@ class TestParser < Test::Unit::TestCase
#
hash = JSON.parse( test )
assert( hash['test_type'] == name )
-
end
end
end
+
+
#
# Most services define a default port. Ensure that is correct.
#
@@ -418,6 +456,7 @@ class TestParser < Test::Unit::TestCase
end
+
#
# Comment-handling
#
@@ -435,4 +474,32 @@ class TestParser < Test::Unit::TestCase
end
+
+
+ #
+ # Test we can add tests which don't contain a trailing period.
+ #
+ def test_short_test
+
+ parser = MonitorConfig.new("/dev/null" )
+
+ #
+ # Adding a simple test must work - no trailing whitespace required
+ # after the test-type.
+ #
+ ret = parser.parse_line( "foo.vm.bytemark.co.uk must run ssh." )
+ assert( ret )
+ assert( ret.class.to_s == "Array" )
+ assert( ret.size == 1 )
+
+ #
+ # Adding a simple test must work - no trailing period required
+ # after the test-type.
+ #
+ ret = parser.parse_line( "foo.vm.bytemark.co.uk must run ssh" )
+ assert( ret )
+ assert( ret.class.to_s == "Array" )
+ assert( ret.size == 1 )
+ end
+
end