diff --git a/tests/test_dm_media.c b/tests/test_dm_media.c index ebd69e257..f31ebc989 100644 --- a/tests/test_dm_media.c +++ b/tests/test_dm_media.c @@ -440,7 +440,9 @@ static int release_failures(struct media_test* t) { } control(t, S, t->ids[M], cmd, packet, cmd == DM_MEDIA_EXPIRED ? 32 : 33); if (release_state(t, completed) || completed[0] || completed[1] || completed[2] != (cmd == DM_MEDIA_EXPIRED) || - completed[3] != before[3] || completed[4] || completed[5] != (cmd == DM_MEDIA_EXPIRED ? 2 : 3) || + completed[3] != before[3] || (cmd == DM_MEDIA_EXPIRED ? completed[4] != 0 : + completed[4] < (sqlite3_int64)ntp_time_get_seconds(t->nodes[S]) + 59) || + completed[5] != (cmd == DM_MEDIA_EXPIRED ? 2 : 3) || value(t->nodes[S], "SELECT count(*) FROM dm_media_jobs WHERE receipt IS NOT NULL") || value(t->nodes[S], "SELECT count(*) FROM dm_media_jobs WHERE body IS NULL")) return -1; control(t, S, t->ids[M], cmd, packet, cmd == DM_MEDIA_EXPIRED ? 32 : 33); diff --git a/tests/test_dm_media_cleanup.c b/tests/test_dm_media_cleanup.c index 83ae7a053..c9ec8c37b 100644 --- a/tests/test_dm_media_cleanup.c +++ b/tests/test_dm_media_cleanup.c @@ -167,6 +167,10 @@ int main(void) { check_receipt(inst.topo_sqlite_db); reply(media, 77, 999, DM_MEDIA_DELETE_ACK, id, sizeof(id)); assert(scalar(inst.topo_sqlite_db, "SELECT released FROM dm_media_holders") == 0); + uint8_t stale[32] = {101}; memcpy(stale + 16, id, sizeof(id)); stale[15] = 1; + dm_mailbox_media_recv(media, 78, 101, DM_MEDIA_DELETE_ACK, stale, sizeof(stale)); + assert(scalar(inst.topo_sqlite_db, "SELECT released FROM dm_media_holders") == 0); + assert(scalar(inst.topo_sqlite_db, "SELECT holder FROM dm_media_jobs") == 101); exec_sql(inst.topo_sqlite_db, "INSERT INTO dm_media_holders SELECT id,102,x'66000000000000000000000000000000',0 FROM dm_media_jobs"); reply(media, 78, 101, DM_MEDIA_DELETE_ACK, id, sizeof(id)); assert(scalar(inst.topo_sqlite_db, "SELECT released FROM dm_media_holders WHERE node_id=101") == 1);