Adds approx 10% to total data size. Speeds up large table requests by 2 orders of magnitude. Co-authored-by: Kajari Ghosh <ghoshkaj@gmail.com>
		
			
				
	
	
		
			245 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			245 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
| @routing @testbot @mld
 | ||
| Feature: Multi level routing
 | ||
| 
 | ||
|     Background:
 | ||
|         Given the profile "testbot"
 | ||
|         And the partition extra arguments "--small-component-size 1 --max-cell-sizes 4,16,64"
 | ||
| 
 | ||
|     Scenario: Testbot - Multi level routing check partition
 | ||
|         Given the node map
 | ||
|             """
 | ||
|             a───b───e───f
 | ||
|             │   │   │   │
 | ||
|             d───c   h───g
 | ||
|                  ╲ ╱
 | ||
|                   ╳
 | ||
|                  ╱ ╲
 | ||
|             i───j   m───n
 | ||
|             │   │   │   │
 | ||
|             l───k───p───o
 | ||
|             """
 | ||
| 
 | ||
|         And the ways
 | ||
|             | nodes | highway |
 | ||
|             | abcda | primary |
 | ||
|             | efghe | primary |
 | ||
|             | ijkli | primary |
 | ||
|             | nmop  | primary |
 | ||
|             | cm    | primary |
 | ||
|             | hj    | primary |
 | ||
|             | kp    | primary |
 | ||
|             | be    | primary |
 | ||
| 
 | ||
|         And the data has been extracted
 | ||
|         When I run "osrm-partition --max-cell-sizes 4,16 --small-component-size 1 {processed_file}"
 | ||
|         Then it should exit successfully
 | ||
|         And stdout should not contain "level 1 #cells 1 bit size 1"
 | ||
| 
 | ||
|     Scenario: Testbot - Multi level routing
 | ||
|         Given the node map
 | ||
|             """
 | ||
|            a────b   e─────f
 | ||
|             \   │   │    /
 | ||
|             d───c   h───g
 | ||
|                  ╲ ╱
 | ||
|                   ╳
 | ||
|                  ╱ ╲
 | ||
|             i───j   m───n
 | ||
|            /    │   │    \
 | ||
|           l─────k───p─────o
 | ||
|             """
 | ||
| 
 | ||
|         And the nodes
 | ||
|             | node | highway         |
 | ||
|             | i    | traffic_signals |
 | ||
|             | n    | traffic_signals |
 | ||
| 
 | ||
|         And the ways
 | ||
|             | nodes | highway |
 | ||
|             | abcda | primary |
 | ||
|             | efghe | primary |
 | ||
|             | ijkli | primary |
 | ||
|             | mnopm | primary |
 | ||
|             | cm    | primary |
 | ||
|             | hj    | primary |
 | ||
|             | kp    | primary |
 | ||
|         And the partition extra arguments "--small-component-size 1 --max-cell-sizes 4,16"
 | ||
| 
 | ||
|         When I route I should get
 | ||
|             | from | to | route                                  | time   |
 | ||
|             | a    | b  | abcda,abcda                            | 25s    |
 | ||
|             | a    | f  | abcda,cm,mnopm,kp,ijkli,hj,efghe,efghe | 239.2s |
 | ||
|             | a    | l  | abcda,cm,mnopm,kp,ijkli,ijkli          | 157.1s |
 | ||
|             | a    | o  | abcda,cm,mnopm,mnopm,mnopm             | 137.1s |
 | ||
|             | f    | l  | efghe,hj,ijkli,ijkli                   | 136.7s |
 | ||
|             | f    | o  | efghe,hj,ijkli,kp,mnopm,mnopm          | 162.1s |
 | ||
|             | l    | o  | ijkli,kp,mnopm,mnopm                   | 80s    |
 | ||
|             | c    | m  | cm,cm                                  | 44.7s  |
 | ||
|             | f    | a  | efghe,hj,ijkli,kp,mnopm,cm,abcda,abcda | 239.2s |
 | ||
|             | l    | a  | ijkli,kp,mnopm,cm,abcda,abcda          | 157.1s |
 | ||
| 
 | ||
|         When I request a travel time matrix I should get
 | ||
|             |   | a     | f     | l     | o     |
 | ||
|             | a | 0     | 239.2 | 157.1 | 137.1 |
 | ||
|             | f | 239.2 | 0     | 136.7 | 162.1 |
 | ||
|             | l | 157.1 | 136.7 | 0     | 80    |
 | ||
|             | o | 137.1 | 162.1 | 80    | 0     |
 | ||
| 
 | ||
|         When I request a travel time matrix I should get
 | ||
|             |   | a | f     | l     | o     |
 | ||
|             | a | 0 | 239.2 | 157.1 | 137.1 |
 | ||
| 
 | ||
|         When I request a travel time matrix I should get
 | ||
|             |   |   a   |
 | ||
|             | a |   0   |
 | ||
|             | f | 239.2 |
 | ||
|             | l | 157.1 |
 | ||
|             | o | 137.1 |
 | ||
| 
 | ||
|         When I request a travel time matrix I should get
 | ||
|             |   | a     | f     | l     | o     |
 | ||
|             | a | 0     | 239.2 | 157.1 | 137.1 |
 | ||
|             | o | 137.1 | 162.1 | 80    | 0     |
 | ||
| 
 | ||
|         When I request a travel time matrix I should get
 | ||
|             |   |     a |     o |
 | ||
|             | a |     0 | 137.1 |
 | ||
|             | f | 239.2 | 162.1 |
 | ||
|             | l | 157.1 |    80 |
 | ||
|             | o | 137.1 |     0 |
 | ||
| 
 | ||
|         When I request a travel distance matrix I should get
 | ||
|             |   | a      | f      | l      | o      |
 | ||
|             | a | 0      | 2383.7 | 1566.9 | 1366.8 |
 | ||
|             | f | 2339.9 | 0      | 1198.1 | 1522.1 |
 | ||
|             | l | 1618.3 | 1293.3 | 0      | 800.5  |
 | ||
|             | o | 1418.2 | 1617.3 | 800.5  | 0      |
 | ||
| 
 | ||
|         When I request a travel distance matrix I should get
 | ||
|             |   | a | f      | l      | o      |
 | ||
|             | a | 0 | 2383.7 | 1566.9 | 1366.8 |
 | ||
| 
 | ||
|         When I request a travel distance matrix I should get
 | ||
|             |   | a      |
 | ||
|             | a | 0      |
 | ||
|             | f | 2339.9 |
 | ||
|             | l | 1618.3 |
 | ||
|             | o | 1418.2 |
 | ||
| 
 | ||
|         When I request a travel distance matrix I should get
 | ||
|             |   | a      | f      | l      | o      |
 | ||
|             | a | 0      | 2383.7 | 1566.9 | 1366.8 |
 | ||
|             | f | 2339.9 | 0      | 1198.1 | 1522.1 |
 | ||
| 
 | ||
|         When I request a travel distance matrix I should get
 | ||
|             |   | a      | o      |
 | ||
|             | a | 0      | 1366.8 |
 | ||
|             | f | 2339.9 | 1522.1 |
 | ||
|             | l | 1618.3 | 800.5  |
 | ||
|             | o | 1418.2 | 0      |
 | ||
| 
 | ||
|     Scenario: Testbot - Multi level routing: horizontal road
 | ||
|         Given the node map
 | ||
|             """
 | ||
|             a───b   e───f
 | ||
|             │   │   │   │
 | ||
|             d───c   h───g
 | ||
|             │           │
 | ||
|             i═══j═══k═══l
 | ||
|             │           │
 | ||
|             m───n   q───r
 | ||
|             │   │   │   │
 | ||
|             p───o───t───s
 | ||
|             """
 | ||
|         And the ways
 | ||
|             | nodes | highway   |
 | ||
|             | abcda | primary   |
 | ||
|             | efghe | primary   |
 | ||
|             | mnopm | primary   |
 | ||
|             | qrstq | primary   |
 | ||
|             | ijkl  | primary   |
 | ||
|             | dim   | primary   |
 | ||
|             | glr   | primary   |
 | ||
|             | ot    | secondary |
 | ||
| 
 | ||
|         When I route I should get
 | ||
|             | from | to | route                          | time |
 | ||
|             | a    | b  | abcda,abcda                    | 20s  |
 | ||
|             | a    | d  | abcda,abcda                    | 20s  |
 | ||
|             | a    | l  | abcda,dim,ijkl,ijkl            | 100s |
 | ||
|             | a    | p  | abcda,dim,mnopm,mnopm          | 80s  |
 | ||
|             | a    | o  | abcda,dim,mnopm,mnopm          | 100s |
 | ||
|             | a    | t  | abcda,dim,mnopm,ot,ot          | 140s |
 | ||
|             | a    | s  | abcda,dim,ijkl,glr,qrstq,qrstq | 140s |
 | ||
|             | a    | f  | abcda,dim,ijkl,glr,efghe,efghe | 140s |
 | ||
| 
 | ||
| 
 | ||
|     Scenario: Testbot - Multi level routing: route over internal cell edge hf
 | ||
|         Given the node map
 | ||
|             """
 | ||
|             a───b
 | ||
|             │   │
 | ||
|             d───c──e───f
 | ||
|                  ╲ │ ╳ │ ╲
 | ||
|                    h───g──i───j
 | ||
|                           │   │
 | ||
|                           l───k
 | ||
|             """
 | ||
|         And the partition extra arguments "--small-component-size 1 --max-cell-sizes 4,16"
 | ||
|         And the ways
 | ||
|             | nodes | maxspeed |
 | ||
|             | abcda |        5 |
 | ||
|             | efghe |        5 |
 | ||
|             | ijkli |        5 |
 | ||
|             | eg    |       10 |
 | ||
|             | ce    |       15 |
 | ||
|             | ch    |       15 |
 | ||
|             | fi    |       15 |
 | ||
|             | gi    |       15 |
 | ||
|             | hf    |      100 |
 | ||
| 
 | ||
|         When I route I should get
 | ||
|             | from | to | route                      | time   |
 | ||
|             | a    | k  | abcda,ch,hf,fi,ijkli,ijkli | 724.3s |
 | ||
| 
 | ||
| 
 | ||
|     Scenario: Testbot - Edge case for matrix plugin with
 | ||
|         Given the node map
 | ||
|             """
 | ||
|             a───b
 | ||
|             │ ╳ │
 | ||
|             d───c
 | ||
|             │   │
 | ||
|             e   f
 | ||
|             │ ╱ │
 | ||
|             h   g───i
 | ||
|             """
 | ||
|         And the partition extra arguments "--small-component-size 1 --max-cell-sizes 5,16,64"
 | ||
| 
 | ||
|         And the nodes
 | ||
|             | node | highway         |
 | ||
|             | e    | traffic_signals |
 | ||
|             | g    | traffic_signals |
 | ||
| 
 | ||
|         And the ways
 | ||
|             | nodes | highway | maxspeed |
 | ||
|             | abcda | primary |          |
 | ||
|             | ac    | primary |          |
 | ||
|             | db    | primary |          |
 | ||
|             | deh   | primary |          |
 | ||
|             | cfg   | primary |          |
 | ||
|             | ef    | primary |        1 |
 | ||
|             | eg    | primary |        1 |
 | ||
|             | hf    | primary |        1 |
 | ||
|             | hg    | primary |        1 |
 | ||
|             | gi    | primary |          |
 | ||
| 
 | ||
|         When I route I should get
 | ||
|             | from | to | route               | time |
 | ||
|             | h    | i  | deh,abcda,cfg,gi,gi | 134s |
 | ||
| 
 | ||
|         When I request a travel time matrix I should get
 | ||
|             |   |   h |   i |
 | ||
|             | h |   0 | 134 |
 | ||
|             | i | 134 |   0 |
 |