Browse Source

Verify restored schema constraints and legacy index fixture

master
evgeny 5 days ago
parent
commit
8cd54f9802
  1. 9
      tests/test_db_sync_schema.c

9
tests/test_db_sync_schema.c

@ -111,7 +111,8 @@ int main(int argc, char** argv) {
assert(sqlite3_get_table(db, "SELECT name FROM sqlite_master WHERE type='table' AND name LIKE 'msg_%'",
&tables, &rows, &columns, NULL) == SQLITE_OK);
for (int i = 0; i < rows; i++) {
const char* name = tables[i + 1]; snprintf(sql, sizeof(sql), "ALTER TABLE \"%s\" RENAME TO saved", name); execute(db, sql);
const char* name = tables[i + 1];
snprintf(sql, sizeof(sql), "DROP INDEX \"idx_%s_ttl\";ALTER TABLE \"%s\" RENAME TO saved", name, name); execute(db, sql);
legacy_table(db, name); snprintf(sql, sizeof(sql), "INSERT INTO \"%s\" SELECT " OLD_COLUMNS " FROM saved;DROP TABLE saved", name);
execute(db, sql);
}
@ -121,8 +122,14 @@ int main(int argc, char** argv) {
assert(chat_core_get_messages_json(inst, channel, 10, 0, listing, sizeof(listing), &len) == 0 && len > 0);
snprintf(sql, sizeof(sql), "INSERT INTO \"%s\" (" OLD_COLUMNS ") SELECT * FROM expected", table);
assert(sqlite3_exec(db, sql, NULL, NULL, NULL) == SQLITE_CONSTRAINT);
assert(sqlite3_extended_errcode(db) == SQLITE_CONSTRAINT_NOTNULL);
snprintf(sql, sizeof(sql), "INSERT INTO \"%s\" (" OLD_COLUMNS ",message_id) SELECT *,x'01' FROM expected", table);
assert(sqlite3_exec(db, sql, NULL, NULL, NULL) == SQLITE_CONSTRAINT);
assert(sqlite3_extended_errcode(db) == SQLITE_CONSTRAINT_CHECK);
snprintf(sql, sizeof(sql), "INSERT INTO \"%s\" SELECT timestamp+1000000,node_id,id,chain_hash,flags,data,"
"author_signature,message_id,local_attrs,delivered_peers,delivery_chain FROM \"%s\" LIMIT 1", table, table);
assert(sqlite3_exec(db, sql, NULL, NULL, NULL) == SQLITE_CONSTRAINT);
assert(sqlite3_extended_errcode(db) == SQLITE_CONSTRAINT_UNIQUE);
chat_service_stop(inst); assert(chat_service_start(inst) == 0); check_history(db, table, gid);
send_text(inst, channel, "Отправка после обновления 👍"); assert(chat_core_count(inst, channel) == 4);
DEBUG_INFO(DEBUG_CATEGORY_CHAT_SYNC, "PASS: restart, empty table, preserved fields, canonical IDs and new message submission");

Loading…
Cancel
Save