summaryrefslogtreecommitdiff
path: root/bin/custodian-dequeue
blob: bc84adfe65e3622e6dd8fedabb15e02f9579cef1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/ruby -rubygems
#
# Usage information at the end of the script.
#

require 'getoptlong'
require 'custodian/settings'
require 'custodian/queue'
require 'custodian/worker'

#
#  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>
#