cuke: test file options
This commit is contained in:
		
							parent
							
								
									7048dd754d
								
							
						
					
					
						commit
						9e10b94339
					
				
							
								
								
									
										27
									
								
								features/options/files.feature
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								features/options/files.feature
									
									
									
									
									
										Normal 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
 | 
			
		||||
@ -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          |
 | 
			
		||||
@ -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
 | 
			
		||||
        
 | 
			
		||||
@ -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       |
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user