mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 06:28:27 -04:00
autotest: add test for logging restart after transfer complete
This commit is contained in:
parent
e934780a29
commit
ed512eaabe
@ -966,6 +966,7 @@ class AutoTestSub(vehicle_test_suite.TestSuite):
|
|||||||
self.SET_POSITION_TARGET_GLOBAL_INT,
|
self.SET_POSITION_TARGET_GLOBAL_INT,
|
||||||
self.TestLogDownloadMAVProxy,
|
self.TestLogDownloadMAVProxy,
|
||||||
self.TestLogDownloadMAVProxyNetwork,
|
self.TestLogDownloadMAVProxyNetwork,
|
||||||
|
self.TestLogDownloadLogRestart,
|
||||||
self.MAV_CMD_NAV_LOITER_UNLIM,
|
self.MAV_CMD_NAV_LOITER_UNLIM,
|
||||||
self.MAV_CMD_NAV_LAND,
|
self.MAV_CMD_NAV_LAND,
|
||||||
self.MAV_CMD_MISSION_START,
|
self.MAV_CMD_MISSION_START,
|
||||||
|
@ -3876,7 +3876,7 @@ class TestSuite(ABC):
|
|||||||
raise NotAchievedException("Sequence not increasing")
|
raise NotAchievedException("Sequence not increasing")
|
||||||
if m.num_logs != num_logs:
|
if m.num_logs != num_logs:
|
||||||
raise NotAchievedException("Number of logs changed")
|
raise NotAchievedException("Number of logs changed")
|
||||||
if m.time_utc < 1000:
|
if m.time_utc < 1000 and m.id != m.num_logs:
|
||||||
raise NotAchievedException("Bad timestamp")
|
raise NotAchievedException("Bad timestamp")
|
||||||
if m.id != m.last_log_num:
|
if m.id != m.last_log_num:
|
||||||
if m.size == 0:
|
if m.size == 0:
|
||||||
@ -4177,6 +4177,55 @@ class TestSuite(ABC):
|
|||||||
# raise NotAchievedException("Size delta: actual=%u vs downloaded=%u" %
|
# raise NotAchievedException("Size delta: actual=%u vs downloaded=%u" %
|
||||||
# (len(actual_bytes), len(backwards_data_downloaded)))
|
# (len(actual_bytes), len(backwards_data_downloaded)))
|
||||||
|
|
||||||
|
def download_log(self, log_id, timeout=360):
|
||||||
|
tstart = self.get_sim_time()
|
||||||
|
data_downloaded = []
|
||||||
|
bytes_read = 0
|
||||||
|
last_print = 0
|
||||||
|
while True:
|
||||||
|
if self.get_sim_time_cached() - tstart > timeout:
|
||||||
|
raise NotAchievedException("Did not download log in good time")
|
||||||
|
self.mav.mav.log_request_data_send(
|
||||||
|
self.sysid_thismav(),
|
||||||
|
1, # target component
|
||||||
|
log_id,
|
||||||
|
bytes_read,
|
||||||
|
90
|
||||||
|
)
|
||||||
|
m = self.assert_receive_message('LOG_DATA', timeout=2)
|
||||||
|
if m.ofs != bytes_read:
|
||||||
|
raise NotAchievedException(f"Unexpected offset {bytes_read=} {self.dump_message_verbose(m)}")
|
||||||
|
if m.id != log_id:
|
||||||
|
raise NotAchievedException(f"Unexpected id {log_id=} {self.dump_message_verbose(m)}")
|
||||||
|
data_downloaded.extend(m.data[0:m.count])
|
||||||
|
bytes_read += m.count
|
||||||
|
if m.count < 90: # FIXME: constant
|
||||||
|
break
|
||||||
|
# self.progress("Read %u bytes at offset %u" % (m.count, m.ofs))
|
||||||
|
if time.time() - last_print > 10:
|
||||||
|
last_print = time.time()
|
||||||
|
self.progress(f"{bytes_read=}")
|
||||||
|
return data_downloaded
|
||||||
|
|
||||||
|
def TestLogDownloadLogRestart(self):
|
||||||
|
'''test logging restarts after log download'''
|
||||||
|
# self.delay_sim_time(30)
|
||||||
|
self.set_parameters({
|
||||||
|
"LOG_FILE_RATEMAX": 1,
|
||||||
|
})
|
||||||
|
self.reboot_sitl()
|
||||||
|
number = self.current_onboard_log_number()
|
||||||
|
content = self.download_log(number)
|
||||||
|
print(f"Content is of length {len(content)}")
|
||||||
|
# current_log_filepath = self.current_onboard_log_filepath()
|
||||||
|
self.delay_sim_time(5)
|
||||||
|
new_number = self.current_onboard_log_number()
|
||||||
|
if number == new_number:
|
||||||
|
raise NotAchievedException("Did not start logging again")
|
||||||
|
new_content = self.download_log(new_number)
|
||||||
|
if len(new_content) == 0:
|
||||||
|
raise NotAchievedException(f"Unexpected length {len(new_content)=}")
|
||||||
|
|
||||||
#################################################
|
#################################################
|
||||||
# SIM UTILITIES
|
# SIM UTILITIES
|
||||||
#################################################
|
#################################################
|
||||||
@ -12156,6 +12205,10 @@ switch value'''
|
|||||||
self.stop_mavproxy(mavproxy)
|
self.stop_mavproxy(mavproxy)
|
||||||
return num_log
|
return num_log
|
||||||
|
|
||||||
|
def current_onboard_log_number(self):
|
||||||
|
logs = self.download_full_log_list(print_logs=False)
|
||||||
|
return sorted(logs.keys())[-1]
|
||||||
|
|
||||||
def current_onboard_log_filepath(self):
|
def current_onboard_log_filepath(self):
|
||||||
'''return filepath to currently open dataflash log. We assume that's
|
'''return filepath to currently open dataflash log. We assume that's
|
||||||
the latest log...'''
|
the latest log...'''
|
||||||
|
Loading…
Reference in New Issue
Block a user