cuke: test file options

This commit is contained in:
Emil Tin 2014-03-22 11:36:42 +01:00
parent 7048dd754d
commit 9e10b94339
6 changed files with 88 additions and 67 deletions

View File

@ -0,0 +1,27 @@
@routing @options @files
Feature: Command line options: files
Normally when launching osrm-routed, it will keep running as a server until it's shut down.
For testing program options, the --trial option is used, which causes osrm-routed to quit
immediately after initialization. This makes testing easier and faster.
The {base} part of the options to osrm-routed will be expanded to the actual base path of
the preprocessed file.
Background:
Given the profile "testbot"
And the node map
| a | b |
And the ways
| nodes |
| ab |
And I preprocess data
Scenario: Passing base file
When I run "osrm-routed {base}.osrm --trial"
Then stdout should contain /^\[info\] starting up engines/
And stdout should contain /\d{1,2}\.\d{1,2}\.\d{1,2}/
And stdout should contain /compiled at/
And stdout should contain /^\[info\] loaded plugin: viaroute/
And stdout should contain /^\[server\] trial run/
And stdout should contain /^\[server\] shutdown completed/
And it should exit with code 0

View File

@ -4,8 +4,8 @@ Feature: Command line options: help
Background:
Given the profile "testbot"
Scenario: No options should show help
When I run "osrm-routed"
Scenario Outline: Help
When I run "osrm-routed <program_options>"
Then stderr should be empty
And stdout should contain "osrm-routed <base.osrm> [<options>]:"
And stdout should contain "Options:"
@ -27,48 +27,8 @@ Feature: Command line options: help
And stdout should contain "--sharedmemory"
And it should exit with code 0
Scenario: Help, short
When I run "osrm-routed -h"
Then stderr should be empty
And stdout should contain "osrm-routed <base.osrm> [<options>]:"
And stdout should contain "Options:"
And stdout should contain "--version"
And stdout should contain "--help"
And stdout should contain "--config"
And stdout should contain "--trial"
And stdout should contain "Configuration:"
And stdout should contain "--hsgrdata arg"
And stdout should contain "--nodesdata arg"
And stdout should contain "--edgesdata arg"
And stdout should contain "--ramindex arg"
And stdout should contain "--fileindex arg"
And stdout should contain "--namesdata arg"
And stdout should contain "--timestamp arg"
And stdout should contain "--ip"
And stdout should contain "--port"
And stdout should contain "--threads"
And stdout should contain "--sharedmemory"
And it should exit with code 0
Scenario: Help, long
When I run "osrm-routed --help"
Then stderr should be empty
And stdout should contain "osrm-routed <base.osrm> [<options>]:"
And stdout should contain "Options:"
And stdout should contain "--version"
And stdout should contain "--help"
And stdout should contain "--config"
And stdout should contain "--trial"
And stdout should contain "Configuration:"
And stdout should contain "--hsgrdata arg"
And stdout should contain "--nodesdata arg"
And stdout should contain "--edgesdata arg"
And stdout should contain "--ramindex arg"
And stdout should contain "--fileindex arg"
And stdout should contain "--namesdata arg"
And stdout should contain "--timestamp arg"
And stdout should contain "--ip"
And stdout should contain "--port"
And stdout should contain "--threads"
And stdout should contain "--sharedmemory"
And it should exit with code 0
Examples:
| program_options |
| |
| -h |
| --help |

View File

@ -17,4 +17,3 @@ Feature: Command line options: invalid options
And stderr should contain "exception"
And stderr should contain "does not exist"
And it should exit with code 255

View File

@ -4,14 +4,14 @@ Feature: Command line options: version
Background:
Given the profile "testbot"
Scenario: Version, short
When I run "osrm-routed -v"
Scenario Outline: Version
When I run "osrm-routed <program_options>"
Then stderr should be empty
And stdout should contain " v0."
And stdout should contain 1 line
And stdout should contain /v\d{1,2}\.\d{1,2}\.\d{1,2}/
And it should exit with code 0
Scenario: Version, long
When I run "osrm-routed --version"
Then stderr should be empty
And stdout should contain " v0."
And it should exit with code 0
Examples:
| program_options |
| -v |
| --version |

View File

@ -1,16 +1,21 @@
When(/^I run "osrm\-routed\s?(.*?)"$/) do |options|
Dir.chdir TEST_FOLDER do
if options.include? '{base}'
# expand {base} to base path of preprocessed data file
raise "*** Cannot expand {base} without a preprocessed file." unless @osm_file
options_expanded = options.gsub "{base}", "#{@osm_file}"
else
options_expanded = options
end
begin
Timeout.timeout(1) do
@stdout = `#{BIN_PATH}/osrm-routed #{options} 2>error.log`
@stdout = `#{BIN_PATH}/osrm-routed #{options_expanded} 2>error.log`
@stderr = File.read 'error.log'
@exit_code = $?.exitstatus
end
rescue
# TODO would be easy to handle there was an option to make osrm exit right after completing initialization
@stdout = nil
@stderr = nil
@exit_code = nil
rescue Timeout::Error
raise "*** osrm-routed didn't quit. Maybe the --trial option wasn't used?"
end
end
end
@ -20,11 +25,21 @@ Then /^it should exit with code (\d+)$/ do |code|
end
Then /^stdout should contain "(.*?)"$/ do |str|
@stdout.include?(str).should == true
@stdout.should include(str)
end
Then /^stderr should contain "(.*?)"$/ do |str|
@stderr.include?(str).should == true
@stderr.should include(str)
end
Then(/^stdout should contain \/(.*)\/$/) do |regex_str|
regex = Regexp.new regex_str
@stdout.should =~ regex
end
Then(/^stderr should contain \/(.*)\/$/) do |regex_str|
regex = Regexp.new regex_str
@stderr.should =~ regex
end
Then /^stdout should be empty$/ do
@ -34,3 +49,7 @@ end
Then /^stderr should be empty$/ do
@stderr.should == ""
end
Then /^stdout should contain (\d+) lines?$/ do |lines|
@stdout.lines.count.should == lines.to_i
end

View File

@ -2,7 +2,23 @@
STRESS_TIMEOUT = 300
Before do |scenario|
@scenario_title = scenario.title
# feature name
case scenario
when Cucumber::Ast::Scenario
@feature_name = scenario.feature.name
when Cucumber::Ast::OutlineTable::ExampleRow
@feature_name = scenario.scenario_outline.feature.name
end
# scenario name
case scenario
when Cucumber::Ast::Scenario
@scenario_title = scenario.name
when Cucumber::Ast::OutlineTable::ExampleRow
@scenario_title = scenario.scenario_outline.name
end
@scenario_time = Time.now.strftime("%Y-%m-%dT%H:%m:%SZ")
reset_data
@has_logged_preprocess_info = false