@@ -338,7 +338,7 @@ mod tests {
338338
339339 use crate :: func:: call_ctx:: MultiUseGuestCallContext ;
340340 use crate :: sandbox:: { Callable , SandboxConfiguration } ;
341- use crate :: sandbox_state:: sandbox:: { DevolvableSandbox , EvolvableSandbox } ;
341+ use crate :: sandbox_state:: sandbox:: EvolvableSandbox ;
342342 use crate :: sandbox_state:: transition:: { MultiUseContextCallback , Noop } ;
343343 use crate :: { GuestBinary , HyperlightError , MultiUseSandbox , Result , UninitializedSandbox } ;
344344
@@ -382,26 +382,30 @@ mod tests {
382382 }
383383
384384 /// Tests that evolving from MultiUseSandbox to MultiUseSandbox creates a new state
385- /// and devolving from MultiUseSandbox to MultiUseSandbox restores the previous state
385+ /// and restoring a snapshot from before evolving restores the previous state
386386 #[ test]
387- fn evolve_devolve_handles_state_correctly ( ) {
388- let sbox1 : MultiUseSandbox = {
387+ fn snapshot_evolve_restore_handles_state_correctly ( ) {
388+ let mut sbox : MultiUseSandbox = {
389389 let path = simple_guest_as_string ( ) . unwrap ( ) ;
390390 let u_sbox = UninitializedSandbox :: new ( GuestBinary :: FilePath ( path) , None ) . unwrap ( ) ;
391391 u_sbox. evolve ( Noop :: default ( ) )
392392 }
393393 . unwrap ( ) ;
394394
395+ let snapshot = sbox. snapshot ( ) . unwrap ( ) ;
396+
395397 let func = Box :: new ( |call_ctx : & mut MultiUseGuestCallContext | {
396398 call_ctx. call :: < i32 > ( "AddToStatic" , 5i32 ) ?;
397399 Ok ( ( ) )
398400 } ) ;
399401 let transition_func = MultiUseContextCallback :: from ( func) ;
400- let mut sbox2 = sbox1. evolve ( transition_func) . unwrap ( ) ;
401- let res: i32 = sbox2. call_guest_function_by_name ( "GetStatic" , ( ) ) . unwrap ( ) ;
402+ let mut sbox = sbox. evolve ( transition_func) . unwrap ( ) ;
403+
404+ let res: i32 = sbox. call_guest_function_by_name ( "GetStatic" , ( ) ) . unwrap ( ) ;
402405 assert_eq ! ( res, 5 ) ;
403- let mut sbox3: MultiUseSandbox = sbox2. devolve ( Noop :: default ( ) ) . unwrap ( ) ;
404- let res: i32 = sbox3. call_guest_function_by_name ( "GetStatic" , ( ) ) . unwrap ( ) ;
406+
407+ sbox. restore ( & snapshot) . unwrap ( ) ;
408+ let res: i32 = sbox. call_guest_function_by_name ( "GetStatic" , ( ) ) . unwrap ( ) ;
405409 assert_eq ! ( res, 0 ) ;
406410 }
407411
0 commit comments