@@ -9,12 +9,14 @@ use std::time::Duration;
9
9
use super :: setup:: WicketdTestContext ;
10
10
use gateway_messages:: SpPort ;
11
11
use gateway_test_utils:: setup as gateway_setup;
12
+ use http:: StatusCode ;
12
13
use sled_hardware_types:: Baseboard ;
13
14
use slog:: { info, warn} ;
14
15
use wicket:: OutputKind ;
15
16
use wicket_common:: inventory:: { SpIdentifier , SpType } ;
16
17
use wicket_common:: rack_setup:: BootstrapSledDescription ;
17
18
use wicketd_client:: types:: { GetInventoryParams , GetInventoryResponse } ;
19
+ use wicketd_client:: Error ;
18
20
19
21
#[ tokio:: test]
20
22
async fn test_inventory ( ) {
@@ -25,16 +27,13 @@ async fn test_inventory() {
25
27
26
28
let inventory_fut = async {
27
29
loop {
28
- println ! ( "HERE" ) ;
29
30
let response = wicketd_testctx
30
31
. wicketd_client
31
32
. get_inventory ( & params)
32
33
. await
33
- . expect ( "get_inventory succeeded" )
34
- . into_inner ( ) ;
35
- println ! ( "NOW HERE" ) ;
34
+ . map ( |r| r. into_inner ( ) ) ;
36
35
match response {
37
- GetInventoryResponse :: Response { inventory, .. } => {
36
+ Ok ( GetInventoryResponse :: Response { inventory, .. } ) => {
38
37
// Ensure that the SP state is populated -- if it's not,
39
38
// then the `configured-bootstrap-sleds` command below
40
39
// might return an empty list.
@@ -60,7 +59,17 @@ async fn test_inventory() {
60
59
) ;
61
60
}
62
61
}
63
- GetInventoryResponse :: Unavailable => { }
62
+ // Successful response, but the MGS inventory isn't available.
63
+ Ok ( GetInventoryResponse :: Unavailable ) => { }
64
+
65
+ // 503 means neither MGS nor transceiver inventory is available.
66
+ Err ( Error :: ErrorResponse ( rv) )
67
+ if rv. status ( ) == StatusCode :: SERVICE_UNAVAILABLE => { }
68
+
69
+ // Anything else is unexpected.
70
+ Err ( e) => panic ! (
71
+ "get_inventory failed with unexpected response: {e:?}"
72
+ ) ,
64
73
}
65
74
66
75
// Keep polling wicketd until it receives its first results from MGS.
0 commit comments