falcon-lab: interact with nodes concurrently - #901
Conversation
Revision history
Generated by jj-stack from this pull request's force-push history. |
f88b817 to
07a8a19
Compare
07a8a19 to
23f32ec
Compare
Start interacting with falcon nodes concurrently, when possible. In some circumstances, test execution takes quite a long time because checks across multiple nodes are done serially even when doing so isn't needed for the semantics of the test. The biggest example of this is in the BFD test, where each state transition must pass 5 consecutive checks. Before, the BFD test took almost 10 minutes to complete: ``` Aug 30 01:16:47.008 INFO phase 1: all peers up [..] Aug 30 01:26:13.247 INFO interop bfd static routing test passed ``` After, the BFD test takes <3 minutes to complete: ``` Aug 30 20:11:40.563 INFO phase 1: all peers up [..] Aug 30 20:14:06.527 INFO interop bfd static routing test passed ``` Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
23f32ec to
ee08219
Compare
nicolaskagami
left a comment
There was a problem hiding this comment.
Mostly looks good
The 🤖 indicated a little cancellation concern which looked appropriate to me.
| ); | ||
| Ok::<(), anyhow::Error>(()) | ||
| }; | ||
| tokio::try_join!(mgd1_ready, mgd2_ready)?; |
There was a problem hiding this comment.
(🤖 flagged)
These try_joins will short-circuit, which is likely intended, but cancelling the other futures might leave some commands unfinished (e.g. not logging out).
This may be a problem because apparently subsequent commands share the VM shell and expect a 'login' prompt.
| ); | ||
| Ok::<(), anyhow::Error>(()) | ||
| }; | ||
| tokio::try_join!(cr1_imports, cr2_imports, cr3_imports, peer_imports)?; |
There was a problem hiding this comment.
(🤖 flagged)
These try_joins will short-circuit, which is likely intended, but cancelling the other futures might leave some commands unfinished (e.g. not logging out).
This may be a problem because apparently subsequent commands share the VM shell and expect a 'login' prompt.
here as well
| } | ||
|
|
||
| while let Some(result) = checks.join_next().await { | ||
| result??; |
There was a problem hiding this comment.
(🤖 flagged)
These try_joins will short-circuit, which is likely intended, but cancelling the other futures might leave some commands unfinished (e.g. not logging out).
This may be a problem because apparently subsequent commands share the VM shell and expect a 'login' prompt.
here as well
Start interacting with falcon nodes concurrently, when possible. In some circumstances, test execution takes quite a long time because checks across multiple nodes are done serially even when doing so isn't needed for the semantics of the test. The biggest example of this is in the BFD test, where each state transition must pass 5 consecutive checks.
Before, the BFD test took almost 10 minutes to complete:
After, the BFD test takes <3 minutes to complete:
Signed-off-by: Trey Aspelund trey@oxidecomputer.com