MCPcopy Create free account
hub / github.com/dfinity/orbit / system_restore

Function system_restore

tests/integration/src/system_upgrade_tests.rs:403–477  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

401
402#[test]
403fn system_restore() {
404 let TestEnv {
405 env, canister_ids, ..
406 } = setup_new_env();
407
408 let system_info = get_system_info(&env, WALLET_ADMIN_USER, canister_ids.station);
409 let upgrader_id = system_info.upgrader_id;
410
411 for target in [
412 SystemRestoreTargetDTO::RestoreStation,
413 SystemRestoreTargetDTO::RestoreUpgrader,
414 ] {
415 let target_canister_id = match target {
416 SystemRestoreTargetDTO::RestoreStation => canister_ids.station,
417 SystemRestoreTargetDTO::RestoreUpgrader => upgrader_id,
418 };
419 let controller = match target {
420 SystemRestoreTargetDTO::RestoreStation => upgrader_id,
421 SystemRestoreTargetDTO::RestoreUpgrader => canister_ids.station,
422 };
423 let snapshot = env
424 .take_canister_snapshot(target_canister_id, Some(controller), None)
425 .unwrap();
426
427 let system_restore = RequestOperationInput::SystemRestore(SystemRestoreOperationInput {
428 target: target.clone(),
429 snapshot_id: hex::encode(&snapshot.id),
430 });
431
432 match target {
433 SystemRestoreTargetDTO::RestoreStation => {
434 let system_restore_request = submit_request(
435 &env,
436 WALLET_ADMIN_USER,
437 canister_ids.station,
438 system_restore,
439 );
440 // wait until the station is restored (to a state before the restore request) at which point the restore request is not found anymore
441 loop {
442 env.tick();
443 env.advance_time(Duration::from_secs(5));
444 match try_get_request(
445 &env,
446 WALLET_ADMIN_USER,
447 canister_ids.station,
448 system_restore_request.clone(),
449 ) {
450 Err(err) => assert!(
451 err.reject_message.contains(&format!(
452 "Canister {} is not running",
453 canister_ids.station
454 )) || err
455 .reject_message
456 .contains(&format!("Canister {} is stopped", canister_ids.station))
457 ),
458 Ok(Err(err)) => {
459 assert_eq!(err.code, "NOT_FOUND");
460 break;

Callers

nothing calls this directly

Calls 5

setup_new_envFunction · 0.85
get_system_infoFunction · 0.85
submit_requestFunction · 0.85
try_get_requestFunction · 0.85
execute_requestFunction · 0.85

Tested by

no test coverage detected