@@ -425,7 +425,7 @@ mod tests {
425425 #[ cfg( target_os = "linux" ) ]
426426 use crate :: mem:: shared_mem:: { ExclusiveSharedMemory , GuestSharedMemory , SharedMemory as _} ;
427427 use crate :: sandbox:: { Callable , SandboxConfiguration } ;
428- use crate :: sandbox_state:: sandbox:: { DevolvableSandbox , EvolvableSandbox } ;
428+ use crate :: sandbox_state:: sandbox:: EvolvableSandbox ;
429429 use crate :: sandbox_state:: transition:: { MultiUseContextCallback , Noop } ;
430430 use crate :: { GuestBinary , HyperlightError , MultiUseSandbox , Result , UninitializedSandbox } ;
431431
@@ -469,26 +469,30 @@ mod tests {
469469 }
470470
471471 /// Tests that evolving from MultiUseSandbox to MultiUseSandbox creates a new state
472- /// and devolving from MultiUseSandbox to MultiUseSandbox restores the previous state
472+ /// and restoring a snapshot from before evolving restores the previous state
473473 #[ test]
474- fn evolve_devolve_handles_state_correctly ( ) {
475- let sbox1 : MultiUseSandbox = {
474+ fn snapshot_evolve_restore_handles_state_correctly ( ) {
475+ let mut sbox : MultiUseSandbox = {
476476 let path = simple_guest_as_string ( ) . unwrap ( ) ;
477477 let u_sbox = UninitializedSandbox :: new ( GuestBinary :: FilePath ( path) , None ) . unwrap ( ) ;
478478 u_sbox. evolve ( Noop :: default ( ) )
479479 }
480480 . unwrap ( ) ;
481481
482+ let snapshot = sbox. snapshot ( ) . unwrap ( ) ;
483+
482484 let func = Box :: new ( |call_ctx : & mut MultiUseGuestCallContext | {
483485 call_ctx. call :: < i32 > ( "AddToStatic" , 5i32 ) ?;
484486 Ok ( ( ) )
485487 } ) ;
486488 let transition_func = MultiUseContextCallback :: from ( func) ;
487- let mut sbox2 = sbox1. evolve ( transition_func) . unwrap ( ) ;
488- let res: i32 = sbox2. call_guest_function_by_name ( "GetStatic" , ( ) ) . unwrap ( ) ;
489+ let mut sbox = sbox. evolve ( transition_func) . unwrap ( ) ;
490+
491+ let res: i32 = sbox. call_guest_function_by_name ( "GetStatic" , ( ) ) . unwrap ( ) ;
489492 assert_eq ! ( res, 5 ) ;
490- let mut sbox3: MultiUseSandbox = sbox2. devolve ( Noop :: default ( ) ) . unwrap ( ) ;
491- let res: i32 = sbox3. call_guest_function_by_name ( "GetStatic" , ( ) ) . unwrap ( ) ;
493+
494+ sbox. restore ( & snapshot) . unwrap ( ) ;
495+ let res: i32 = sbox. call_guest_function_by_name ( "GetStatic" , ( ) ) . unwrap ( ) ;
492496 assert_eq ! ( res, 0 ) ;
493497 }
494498
0 commit comments