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: Background:
Given the profile "testbot" Given the profile "testbot"
Scenario: No options should show help Scenario Outline: Help
When I run "osrm-routed" When I run "osrm-routed <program_options>"
Then stderr should be empty Then stderr should be empty
And stdout should contain "osrm-routed <base.osrm> [<options>]:" And stdout should contain "osrm-routed <base.osrm> [<options>]:"
And stdout should contain "Options:" And stdout should contain "Options:"
@ -27,48 +27,8 @@ Feature: Command line options: help
And stdout should contain "--sharedmemory" And stdout should contain "--sharedmemory"
And it should exit with code 0 And it should exit with code 0
Scenario: Help, short Examples:
When I run "osrm-routed -h" | program_options |
Then stderr should be empty | |
And stdout should contain "osrm-routed <base.osrm> [<options>]:" | -h |
And stdout should contain "Options:" | --help |
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

View File

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

View File

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

View File

@ -1,16 +1,21 @@
When(/^I run "osrm\-routed\s?(.*?)"$/) do |options| When(/^I run "osrm\-routed\s?(.*?)"$/) do |options|
Dir.chdir TEST_FOLDER do 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 begin
Timeout.timeout(1) do 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' @stderr = File.read 'error.log'
@exit_code = $?.exitstatus @exit_code = $?.exitstatus
end end
rescue rescue Timeout::Error
# TODO would be easy to handle there was an option to make osrm exit right after completing initialization raise "*** osrm-routed didn't quit. Maybe the --trial option wasn't used?"
@stdout = nil
@stderr = nil
@exit_code = nil
end end
end end
end end
@ -20,11 +25,21 @@ Then /^it should exit with code (\d+)$/ do |code|
end end
Then /^stdout should contain "(.*?)"$/ do |str| Then /^stdout should contain "(.*?)"$/ do |str|
@stdout.include?(str).should == true @stdout.should include(str)
end end
Then /^stderr should contain "(.*?)"$/ do |str| 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 end
Then /^stdout should be empty$/ do Then /^stdout should be empty$/ do
@ -34,3 +49,7 @@ end
Then /^stderr should be empty$/ do Then /^stderr should be empty$/ do
@stderr.should == "" @stderr.should == ""
end 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 STRESS_TIMEOUT = 300
Before do |scenario| 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") @scenario_time = Time.now.strftime("%Y-%m-%dT%H:%m:%SZ")
reset_data reset_data
@has_logged_preprocess_info = false @has_logged_preprocess_info = false