Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TRACKER] Navigation test plan #73132

Open
36 of 63 tasks
Scony opened this issue Feb 11, 2023 · 2 comments
Open
36 of 63 tasks

[TRACKER] Navigation test plan #73132

Scony opened this issue Feb 11, 2023 · 2 comments

Comments

@Scony
Copy link
Contributor

Scony commented Feb 11, 2023

In the upcoming weeks, I'm going to work on test cases for the navigation area. I'm going to use this issue as a progress tracker but also as a place where anyone can propose scenarios to implement.

Please note that many scenarios will be tested in 3D only since quite a lot of navigation code is common for 2D and 3D so we don't need to duplicate test cases in many instances.

Server tests

NavigationServer3D

General

  • Server should be empty when initialized - checking if the internal state of server is correct after initialization
  • Server should release valid RIDs

Agent

  • Server should create a valid agent
  • Server should not report dangling agent in ProcessInfo
  • Server should not report removed agent in ProcessInfo
  • Server should report agent with active map in ProcessInfo
  • Server should be able to set/get basic agent params
  • Server should be able to set/get all agent's params
  • (...)

Map

  • Server should create a valid map
  • Server should yield default values in response to queries against empty map
  • Server should report active map in ProcessInfo
  • Server should not report active map in ProcessInfo
  • Server should be able to set/get all map's params
  • Server should report correct number of map's agents
  • Server should report correct number of map's obstacles
  • Server should report correct number of map's links
  • Server should report correct number of map's regions
  • Server should emit map_changed
  • Server should emit navigation_debug_changed
  • (...)

Link

  • Server should create valid link
  • Server should not report dangling link in ProcessInfo
  • Server should report link with active map in ProcessInfo
  • Server should be able to set/get all link's params
  • (...)

Region

  • Server should create valid region
  • Server should not report dangling region in ProcessInfo
  • Server should report region with active map in ProcessInfo
  • Server should yield default values in response to queries against empty region
  • (...)

Obstacle

  • Server should create valid obstacle
  • Server should be able to set/get all obstacle's params
  • (...)

NavigationServer2D

  • Server should be empty when initialized - checking if the internal state of server is correct after initialization
  • (...)

Node tests

NavigationRegion3D

  • New region should have valid RID
  • Navigation region should bake navigation mesh correctly
  • Navigation region should emit bake_finished
  • Navigation region should emit navigation_mesh_changed
  • (...)

NavigationRegion2D

  • New region should have valid RID
  • (...)

NavigationAgent3D

  • New agent should have valid RID
  • New agent should attach to default map
  • (...)

NavigationAgent2D

  • New agent should have valid RID
  • New agent should attach to default map
  • (...)

NavigationObstacle3D

  • New obstacle should have valid RID
  • New obstacle should attach to default map
  • Obstacle estimates radius correctly
  • Obstacle uses hardcoded radius if not estimated
  • Obstacle changes navigation map correctly
  • Obstacle is avoided by agent correctly
  • (...)

NavigationObstacle2D

  • New obstacle should have valid RID
  • New obstacle should attach to default map
  • Obstacle changes navigation map correctly
  • Obstacle is avoided by agent correctly
  • (...)

NavigationLink3D

  • (...)

NavigationLink2D

  • (...)

PRs

This issue supplements #43440

@smix8
Copy link
Contributor

smix8 commented Nov 13, 2023

Looking for navigation related benchmark ideas.

Benchmark ideas are written in format like this:
TYPE: [Groups it Belongs]: Name: Description

Examples:

  • Exclusive:AStar3D: Create random map with 1000 inter connected points (probably using Delaunay3D), Benchmark solving it 1000 times from random 2 points
  • Exclusive:Navigation: On a premade map, solve 1000 random paths between two points on the surface of the shapes.
  • Agents: Benchmark 1000 moving agents in a map with local collision avoidance.

@Scony
Copy link
Contributor Author

Scony commented Nov 13, 2023

Looking for navigation related benchmark ideas.

Benchmark ideas are written in format like this: TYPE: [Groups it Belongs]: Name: Description

Examples:

  • Exclusive:AStar3D: Create random map with 1000 inter connected points (probably using Delaunay3D), Benchmark solving it 1000 times from random 2 points
  • Exclusive:Navigation: On a premade map, solve 1000 random paths between two points on the surface of the shapes.
  • Agents: Benchmark 1000 moving agents in a map with local collision avoidance.

Some more examples to consider:

  • Exclusive:Navigation[Agents]: Benchmark 10 maps with 100 moving agents each and with local collision avoidance.
  • Exclusive:Navigation[Agents]: Benchmark 100 maps with 10 moving agents each and with local collision avoidance.
  • Exclusive:Navigation[Agents]: Benchmark 1000 moving agents in a map with local collision avoidance and with 100 triangular, static obstacles spread across the map.
  • Exclusive:Navigation[Agents/Queries]: Benchmark 1000 moving agents in a map with local collision avoidance while changing desired location (path recalculation) for 100 of them every second for 10 seconds.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

3 participants