@@ -678,4 +678,53 @@ TEST_F(BaseVM, throwsOnRequestToRenameSnapshotWithRepeatedName)
678
678
EXPECT_EQ (vm.get_snapshot (names[0 ]), snapshot_album[0 ]);
679
679
EXPECT_EQ (vm.get_snapshot (names[1 ]), snapshot_album[1 ]);
680
680
}
681
+
682
+ TEST_F (BaseVM, restoresSnapshots)
683
+ {
684
+ mock_named_snapshotting ();
685
+
686
+ mp::VMMount mount{" src" , {}, {}, mp::VMMount::MountType::Classic};
687
+ std::unordered_map<std::string, mp::VMMount> mounts{};
688
+
689
+ QJsonObject metadata{};
690
+ metadata[" meta" ] = " data" ;
691
+
692
+ const mp::VMSpecs original_specs{2 ,
693
+ mp::MemorySize{" 3.5G" },
694
+ mp::MemorySize{" 15G" },
695
+ " 12:12:12:12:12:12" ,
696
+ {},
697
+ " user" ,
698
+ mp::VirtualMachine::State::off,
699
+ {{" dst" , mount}},
700
+ false ,
701
+ metadata};
702
+
703
+ const auto * snapshot_name = " shoot" ;
704
+ vm.take_snapshot (original_specs, snapshot_name, " " );
705
+
706
+ ASSERT_EQ (snapshot_album.size (), 1 );
707
+ auto & snapshot = *snapshot_album[0 ];
708
+
709
+ mp::VMSpecs changed_specs = original_specs;
710
+ changed_specs.num_cores = 3 ;
711
+ changed_specs.mem_size = mp::MemorySize{" 5G" };
712
+ changed_specs.disk_space = mp::MemorySize{" 35G" };
713
+ changed_specs.state = mp::VirtualMachine::State::stopped;
714
+ changed_specs.mounts .clear ();
715
+ changed_specs.metadata [" data" ] = " meta" ;
716
+ changed_specs.metadata [" meta" ] = " toto" ;
717
+
718
+ EXPECT_CALL (snapshot, apply);
719
+ EXPECT_CALL (snapshot, get_state).WillRepeatedly (Return (original_specs.state ));
720
+ EXPECT_CALL (snapshot, get_num_cores).WillRepeatedly (Return (original_specs.num_cores ));
721
+ EXPECT_CALL (snapshot, get_mem_size).WillRepeatedly (Return (original_specs.mem_size ));
722
+ EXPECT_CALL (snapshot, get_disk_space).WillRepeatedly (Return (original_specs.disk_space ));
723
+ EXPECT_CALL (snapshot, get_mounts).WillRepeatedly (ReturnRef (original_specs.mounts ));
724
+ EXPECT_CALL (snapshot, get_metadata).WillRepeatedly (ReturnRef (original_specs.metadata ));
725
+
726
+ vm.restore_snapshot (snapshot_name, changed_specs);
727
+
728
+ EXPECT_EQ (original_specs, changed_specs);
729
+ }
681
730
} // namespace
0 commit comments