hansel 0.1.7 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/arg_parser.rb DELETED
@@ -1,143 +0,0 @@
1
- module Hansel
2
- #
3
- # Parse the command configuration file options and command line arguments.
4
- # Command line arguments override those from the configuration file
5
- # See http://www.ruby-doc.org/stdlib/libdoc/optparse/rdoc/classes/OptionParser.html
6
- #
7
- class ArgParser
8
- #
9
- # Setup default values for the parsed options
10
- #
11
- def initialize args
12
- @args = args
13
- @options = OpenStruct.new(
14
- :verbose => false,
15
- :server => 'localhost',
16
- :port => '80',
17
- :uri => '/',
18
- :num_conns => 1,
19
- :rate => 1,
20
- :cookie => nil,
21
- :low_rate => 1,
22
- :high_rate => 2,
23
- :rate_step => 1,
24
- :output_format => :yaml,
25
- :output => nil,
26
- :output_dir => File.join(ENV['HOME'], 'hansel_output'),
27
- :template_path => 'templates',
28
- :template => nil,
29
- :exit => false
30
- )
31
- end
32
-
33
- #
34
- # Uses OptionParser to return an OpenStruct object describing the options.
35
- #
36
- def parse
37
- # The options specified on the command line will be collected in *options*.
38
- # We set default values here.
39
- OptionParser.new { |options| parse_options options}.parse!(@args)
40
- @options
41
- end
42
-
43
- private
44
-
45
- def server_options options
46
- options.on("-s", "--server=S",
47
- "Specifies the IP hostname of the server.") do |server|
48
- @options.server = server
49
- end
50
-
51
- options.on("-p", "--port=N",
52
- "Specifies the port number on which the server is listening.") do |port|
53
- @options.port = port.to_i
54
- end
55
-
56
- options.on("-u", "--uri=S",
57
- "Specifies that URI S should be accessed on the server.") do |uri|
58
- @options.uri = uri
59
- end
60
- end
61
-
62
- def httperf_options options
63
- options.on("-n", "--num_conns=N",
64
- "Specifies the total number of connections to create.") do |num_conns|
65
- @options.num_conns = num_conns.to_i
66
- end
67
-
68
- options.on("-l", "--low_rate=S",
69
- "Specifies the starting fixed rate at which connections are created.") do |low_rate|
70
- @options.low_rate = low_rate.to_i
71
- end
72
-
73
- options.on("-l", "--high_rate=S",
74
- "Specifies the ending fixed rate at which connections are created.") do |high_rate|
75
- @options.high_rate = high_rate.to_i
76
- end
77
-
78
- options.on("-l", "--rate_step=S",
79
- "Specifies the fixed rate step at which connections are created.") do |rate_step|
80
- @options.rate_step = rate_step.to_i
81
- end
82
- end
83
-
84
- def output_options options
85
- options.on("-f", "--format=FORMAT [yaml|csv|octave]",
86
- "Specify an output format.") do |format|
87
- @options.output_format = format.to_sym
88
- end
89
-
90
- options.on("-o", "--output=FILE", "Specify an output file.") do |output|
91
- @options.output = !!output
92
- end
93
-
94
- options.on("-d", "--output_dir=PATH",
95
- "Specify an output directory.") do |output_dir|
96
- @options.output_dir = output_dir
97
- end
98
- end
99
-
100
- def template_options options
101
- options.on("-m", "--template_path=PATH", "Specify template path.") do |template_path|
102
- @options.template_path = template_path
103
- end
104
-
105
- options.on("-t", "--template=TEMPLATE_NAME",
106
- "Specify a template for output.") do |template|
107
- @options.template = template
108
- end
109
- end
110
-
111
- def other_options options
112
- options.on("-c", "--cookie=C", "Specify a cookie.") do |cookie|
113
- @options.cookie = cookie
114
- end
115
-
116
- options.on("-v", "--[no-]verbose", "Run verbosely") do |verbose|
117
- @options.verbose = verbose
118
- end
119
-
120
- options.on_tail("-h", "--help", "Show this message") do
121
- puts options
122
- @options.exit = true
123
- end
124
- end
125
-
126
- def version options
127
- options.on_tail("--version", "Show version") do
128
- puts "Hansel version #{IO.foreach('VERSION').first.strip}"
129
- @options.exit = true
130
- end
131
- end
132
-
133
- def parse_options options
134
- options.banner = "Usage: hansel [options]"
135
- options.separator "Options:"
136
- %w(server_options httperf_options output_options
137
- other_options version).map(&:to_sym).each do |method|
138
- self.send method, options
139
- end
140
- end
141
-
142
- end
143
- end
data/lib/config.rb DELETED
@@ -1,60 +0,0 @@
1
- module Hansel
2
- #
3
- # Loads and parses the configuration file
4
- #
5
- class Config
6
- def initialize(argv)
7
- @argv = argv
8
- @args = []
9
- end
10
-
11
- #
12
- # The main configuration directory: defaults to ~/.hansel
13
- # Creates the configuration directory if it doesn't exist.
14
- #
15
- def config_path
16
- @config_path ||= File.join [ENV['HOME'], '.hansel']
17
- FileUtils.mkdir_p @config_path unless File.exists? @config_path
18
- @config_path
19
- end
20
-
21
- #
22
- # The options file located in the configuration directory
23
- #
24
- def options_path
25
- @options_path ||= File.join config_path, 'options'
26
- end
27
-
28
- def read_lines file
29
- file.read.split("\n").each do |line|
30
- next if line =~ /#+/
31
- @args += line.split(' ')
32
- end
33
- end
34
-
35
- def read_file path
36
- File.open path do |file|
37
- read_lines file
38
- end
39
- end
40
-
41
- #
42
- # Reads the options file and returns an Array of String objects.
43
- # Line starting with '#' are skipped.
44
- #
45
- def read_config_file
46
- path = options_path
47
- if File.exists? path
48
- read_file path
49
- end
50
- @args
51
- end
52
-
53
- #
54
- # Returns an OpenStruct object with the options
55
- #
56
- def options
57
- @options ||= ArgParser.new(read_config_file + @argv).parse
58
- end
59
- end
60
- end
@@ -1,14 +0,0 @@
1
- module Hansel
2
- #
3
- # Output to yaml format
4
- #
5
- class YamlFormatter
6
- def initialize(data)
7
- @data = data
8
- end
9
-
10
- def format
11
- @data.to_yaml
12
- end
13
- end
14
- end