#!/usr/bin/ruby -rubygems
#
# Usage information at the end of the script.
#
require 'getoptlong'
require 'custodian/settings'
require 'custodian/queue'
require 'custodian/worker'
if RUBY_VERSION =~ /1.9/
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
end
#
# Entry-point to our code.
#
if __FILE__ == $PROGRAM_NAME
help = false
manual = false
#
# The settings object contains a lot of configuration-data.
#
settings = Custodian::Settings.instance
begin
opts = GetoptLong.new(
['--help', '-h', GetoptLong::NO_ARGUMENT],
['--manual', '-m', GetoptLong::NO_ARGUMENT],
['--fail', '-f', GetoptLong::NO_ARGUMENT],
['--single', '-s', GetoptLong::NO_ARGUMENT],
['--verbose', '-v', GetoptLong::NO_ARGUMENT]
)
opts.each do |opt, _arg|
case opt
when '--verbose' then
ENV['VERBOSE'] = '1'
when '--single' then
ENV['SINGLE'] = '1'
when '--fail' then
ENV['FAIL'] = '1'
when '--help' then
help = true
when '--manual' then
manual = true
end
end
rescue StandardError => ex
puts "Option parsing failed: #{ex}"
exit
end
#
# Show the help information.
#
if manual || help
DATA.read.split("\n").each do |line|
puts Regexp.last_match(1).dup if line =~ /^# ?(.*)/
end
exit 0
end
#
# Create the worker, passing it the settings object so it can
# sort out its own logfile, etc.
#
worker = Custodian::Worker.new(settings)
#
# Single step?
#
if ENV['SINGLE']
worker.process_single_job
exit(0)
end
#
# Run until we see a failure?
#
if ENV['FAIL']
worker.process_until_fail
exit(0)
end
#
# Otherwise loop indefinitely
#
worker.run!
end
__END__
#
# NAME
# custodian-dequeue - Execute network tests from the central queue.
#
# SYNOPSIS
# custodian-dequeue [ -h | --help ]
# [ -m | --manual]
# [ -f | --fail ]
# [ -s | --single ]
# [ -v | --verbose ]
#
# OPTIONS
#
# -h, --help Show a help message, and exit.
#
# -m, --manual Show this manual, and exit.
#
# -s, --single Run a single test and exit.
#
# -f, --fail Stop running once a single test fails.
#
# -v, --verbose Be noisy.
#
#
# ABOUT
#
# This tool is designed to pull network/protocol-tests from the central queue
# and execute them one by one.
#
# The results of the testing will be sent to a notifier, where they can later
# be acted upon.
#
#
# AUTHOR
#
# Steve Kemp <steve@bytemark.co.uk>
#