Files
simulation_core/tests/unit-tests/auto-save.robot

118 lines
5.6 KiB
Plaintext

*** Variables ***
${SCRIPT} ${CURDIR}/../../scripts/single-node/quickfeather.resc
*** Keywords ***
Run Emulation With Auto Save
[Arguments] ${emulation_time} ${auto_save_period}
Execute Command autoSave true ${auto_save_period}
Execute Command emulation RunFor "${emulation_time}"
*** Test Cases ***
Should Take First Snapshot Immediately
Execute Script ${SCRIPT}
Execute Command autoSave true 0.1
${snapshots_count}= Execute Command emulation SnapshotTracker Count
Should Be Equal As Integers ${snapshots_count} 1
Should Take Snapshot Exactly At Timestamp
Execute Script ${SCRIPT}
Run Emulation With Auto Save emulation_time=0.011 auto_save_period=0.01
${snapshots_count}= Execute Command emulation SnapshotTracker Count
${snapshots_info}= Execute Command emulation SnapshotTracker PrintDetailedSnapshotsInfo
Should Be Equal As Integers ${snapshots_count} 2
Should Contain ${snapshots_info} 00:00:00.000000
Should Contain ${snapshots_info} 00:00:00.010000
Should Take Snapshots Periodically
Execute Script ${SCRIPT}
Run Emulation With Auto Save emulation_time=0.05 auto_save_period=0.01
${snapshots_count}= Execute Command emulation SnapshotTracker Count
${snapshots_info}= Execute Command emulation SnapshotTracker PrintDetailedSnapshotsInfo
Should Be Equal As Integers ${snapshots_count} 6
Should Contain ${snapshots_info} 00:00:00.000000
Should Contain ${snapshots_info} 00:00:00.010000
Should Contain ${snapshots_info} 00:00:00.020000
Should Contain ${snapshots_info} 00:00:00.030000
Should Contain ${snapshots_info} 00:00:00.040000
Should Contain ${snapshots_info} 00:00:00.050000
Should Resume Taking Snapshots After Load
Execute Script ${SCRIPT}
Run Emulation With Auto Save emulation_time=0.01 auto_save_period=0.01
${snap_path}= Execute Command emulation SnapshotTracker GetLastSnapshotBeforeOrAtTimeStamp "0.01"
Execute Command Load @${snap_path}
Execute Command mach set 0
${snapshots_count1}= Execute Command emulation SnapshotTracker Count
${snapshots_info1}= Execute Command emulation SnapshotTracker PrintDetailedSnapshotsInfo
Should Be Equal As Integers ${snapshots_count1} 2
Should Contain ${snapshots_info1} 00:00:00.000000
Should Contain ${snapshots_info1} 00:00:00.010000
Execute Command emulation RunFor "0.01"
${snapshots_count2}= Execute Command emulation SnapshotTracker Count
${snapshots_info2}= Execute Command emulation SnapshotTracker PrintDetailedSnapshotsInfo
Should Be Equal As Integers ${snapshots_count2} 3
Should Contain ${snapshots_info2} 00:00:00.000000
Should Contain ${snapshots_info2} 00:00:00.010000
Should Contain ${snapshots_info2} 00:00:00.020000
Should Stop Taking Snapshots
Execute Script ${SCRIPT}
Run Emulation With Auto Save emulation_time=0.015 auto_save_period=0.01
Execute Command autoSave false
Execute Command emulation RunFor "0.01"
${snapshots_info}= Execute Command emulation SnapshotTracker PrintDetailedSnapshotsInfo
Should Not Contain ${snapshots_info} 00:00:00.020000
Should Reenable Auto Save Properly
Execute Script ${SCRIPT}
Run Emulation With Auto Save emulation_time=0.011 auto_save_period=0.01
Execute Command autoSave false
# before reenabling auto-save, registered snapshot should be cancelled, the code below checks it
Execute Command autoSave true 0.02
${snapshots_count1}= Execute Command emulation SnapshotTracker Count
Execute Command emulation RunFor "0.02"
${snapshots_count2}= Execute Command emulation SnapshotTracker Count
Should Be Equal As Integers ${snapshots_count1} 3
Should Be Equal As Integers ${snapshots_count2} 4
Should Forget Later Snapshots After Load
Execute Script ${SCRIPT}
Run Emulation With Auto Save emulation_time=0.021 auto_save_period=0.01
${snapshots_count1}= Execute Command emulation SnapshotTracker Count
${snapshots_info1}= Execute Command emulation SnapshotTracker PrintDetailedSnapshotsInfo
Should Be Equal As Integers ${snapshots_count1} 3
Should Contain ${snapshots_info1} 00:00:00.000000
Should Contain ${snapshots_info1} 00:00:00.010000
Should Contain ${snapshots_info1} 00:00:00.020000
${snap_path}= Execute Command emulation SnapshotTracker GetLastSnapshotBeforeOrAtTimeStamp "0.01"
Execute Command Load @${snap_path}
Execute Command mach set 0
${snapshots_count2}= Execute Command emulation SnapshotTracker Count
${snapshots_info2}= Execute Command emulation SnapshotTracker PrintDetailedSnapshotsInfo
Should Be Equal As Integers ${snapshots_count2} 2
Should Contain ${snapshots_info2} 00:00:00.000000
Should Contain ${snapshots_info2} 00:00:00.010000
Execute Command emulation RunFor "0.00"