diff --git a/test/unit/files/persist_read/v5-cfg.test-db b/test/unit/files/persist_read/v5-cfg.test-db deleted file mode 100644 index 2449222e..00000000 Binary files a/test/unit/files/persist_read/v5-cfg.test-db and /dev/null differ diff --git a/test/unit/files/persist_read/v5-client-message-props.test-db b/test/unit/files/persist_read/v5-client-message-props.test-db deleted file mode 100644 index b34f6db8..00000000 Binary files a/test/unit/files/persist_read/v5-client-message-props.test-db and /dev/null differ diff --git a/test/unit/files/persist_read/v5-client-message.test-db b/test/unit/files/persist_read/v5-client-message.test-db deleted file mode 100644 index 1aac12c4..00000000 Binary files a/test/unit/files/persist_read/v5-client-message.test-db and /dev/null differ diff --git a/test/unit/files/persist_read/v5-message-store-props.test-db b/test/unit/files/persist_read/v5-message-store-props.test-db deleted file mode 100644 index a5c296a8..00000000 Binary files a/test/unit/files/persist_read/v5-message-store-props.test-db and /dev/null differ diff --git a/test/unit/files/persist_read/v5-message-store.test-db b/test/unit/files/persist_read/v5-message-store.test-db deleted file mode 100644 index f16b3907..00000000 Binary files a/test/unit/files/persist_read/v5-message-store.test-db and /dev/null differ diff --git a/test/unit/files/persist_read/v5-sub.test-db b/test/unit/files/persist_read/v5-sub.test-db deleted file mode 100644 index acd14379..00000000 Binary files a/test/unit/files/persist_read/v5-sub.test-db and /dev/null differ diff --git a/test/unit/files/persist_read/v6-cfg.test-db b/test/unit/files/persist_read/v6-cfg.test-db new file mode 100644 index 00000000..bf8151fd Binary files /dev/null and b/test/unit/files/persist_read/v6-cfg.test-db differ diff --git a/test/unit/files/persist_read/v6-client-message-props.test-db b/test/unit/files/persist_read/v6-client-message-props.test-db new file mode 100644 index 00000000..7c7a785c Binary files /dev/null and b/test/unit/files/persist_read/v6-client-message-props.test-db differ diff --git a/test/unit/files/persist_read/v6-client-message.test-db b/test/unit/files/persist_read/v6-client-message.test-db new file mode 100644 index 00000000..2010de5f Binary files /dev/null and b/test/unit/files/persist_read/v6-client-message.test-db differ diff --git a/test/unit/files/persist_read/v6-client.test-db b/test/unit/files/persist_read/v6-client.test-db new file mode 100644 index 00000000..c6be0dba Binary files /dev/null and b/test/unit/files/persist_read/v6-client.test-db differ diff --git a/test/unit/files/persist_read/v6-message-store-props.test-db b/test/unit/files/persist_read/v6-message-store-props.test-db new file mode 100644 index 00000000..982d86fe Binary files /dev/null and b/test/unit/files/persist_read/v6-message-store-props.test-db differ diff --git a/test/unit/files/persist_read/v6-message-store.test-db b/test/unit/files/persist_read/v6-message-store.test-db new file mode 100644 index 00000000..a76b8e25 Binary files /dev/null and b/test/unit/files/persist_read/v6-message-store.test-db differ diff --git a/test/unit/files/persist_read/v5-retain.test-db b/test/unit/files/persist_read/v6-retain.test-db similarity index 51% rename from test/unit/files/persist_read/v5-retain.test-db rename to test/unit/files/persist_read/v6-retain.test-db index f9d8a4f5..e515431c 100644 Binary files a/test/unit/files/persist_read/v5-retain.test-db and b/test/unit/files/persist_read/v6-retain.test-db differ diff --git a/test/unit/files/persist_read/v6-sub.test-db b/test/unit/files/persist_read/v6-sub.test-db new file mode 100644 index 00000000..f1f6663a Binary files /dev/null and b/test/unit/files/persist_read/v6-sub.test-db differ diff --git a/test/unit/files/persist_write/empty.test-db b/test/unit/files/persist_write/empty.test-db index 26169f32..eba5ad85 100644 Binary files a/test/unit/files/persist_write/empty.test-db and b/test/unit/files/persist_write/empty.test-db differ diff --git a/test/unit/files/persist_write/v5-message-store-no-ref.test-db b/test/unit/files/persist_write/v5-message-store-no-ref.test-db deleted file mode 100644 index 2449222e..00000000 Binary files a/test/unit/files/persist_write/v5-message-store-no-ref.test-db and /dev/null differ diff --git a/test/unit/files/persist_write/v6-message-store-no-ref.test-db b/test/unit/files/persist_write/v6-message-store-no-ref.test-db new file mode 100644 index 00000000..bf8151fd Binary files /dev/null and b/test/unit/files/persist_write/v6-message-store-no-ref.test-db differ diff --git a/test/unit/persist_read_test.c b/test/unit/persist_read_test.c index d1c7e786..84c36c03 100644 --- a/test/unit/persist_read_test.c +++ b/test/unit/persist_read_test.c @@ -409,7 +409,7 @@ static void TEST_v4_message_store(void) } } -static void TEST_v5_config_ok(void) +static void TEST_v6_config_ok(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -420,7 +420,7 @@ static void TEST_v5_config_ok(void) db.config = &config; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-cfg.test-db"; + config.persistence_filepath = "files/persist_read/v6-cfg.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); @@ -466,7 +466,7 @@ static void TEST_v5_bad_chunk(void) } -static void TEST_v5_message_store(void) +static void TEST_v6_message_store(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -477,7 +477,7 @@ static void TEST_v5_message_store(void) db.config = &config; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-message-store.test-db"; + config.persistence_filepath = "files/persist_read/v6-message-store.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); @@ -501,7 +501,7 @@ static void TEST_v5_message_store(void) } -static void TEST_v5_message_store_props(void) +static void TEST_v6_message_store_props(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -518,7 +518,7 @@ static void TEST_v5_message_store_props(void) config.listener_count = 1; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-message-store-props.test-db"; + config.persistence_filepath = "files/persist_read/v6-message-store-props.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); @@ -573,7 +573,43 @@ static void TEST_v5_client(void) } } -static void TEST_v5_client_message(void) +static void TEST_v6_client(void) +{ + struct mosquitto_db db; + struct mosquitto__config config; + struct mosquitto *context; + struct mosquitto__listener listener; + int rc; + + memset(&db, 0, sizeof(struct mosquitto_db)); + memset(&config, 0, sizeof(struct mosquitto__config)); + memset(&listener, 0, sizeof(struct mosquitto__listener)); + db.config = &config; + + listener.port = 1883; + config.per_listener_settings = true; + config.listeners = &listener; + config.listener_count = 1; + config.persistence = true; + config.persistence_filepath = "files/persist_read/v6-client.test-db"; + + rc = persist__restore(&db); + CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + + CU_ASSERT_PTR_NOT_NULL(db.contexts_by_id); + HASH_FIND(hh_id, db.contexts_by_id, "client-id", strlen("client-id"), context); + CU_ASSERT_PTR_NOT_NULL(context); + if(context){ + CU_ASSERT_PTR_NULL(context->msgs_in.inflight); + CU_ASSERT_PTR_NULL(context->msgs_out.inflight); + CU_ASSERT_EQUAL(context->last_mid, 0x5287); + CU_ASSERT_EQUAL(context->listener, &listener); + CU_ASSERT_PTR_NOT_NULL(context->username); + CU_ASSERT_STRING_EQUAL(context->username, "usrname"); + } +} + +static void TEST_v6_client_message(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -585,7 +621,7 @@ static void TEST_v5_client_message(void) db.config = &config; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-client-message.test-db"; + config.persistence_filepath = "files/persist_read/v6-client-message.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); @@ -622,7 +658,7 @@ static void TEST_v5_client_message(void) } } -static void TEST_v5_client_message_props(void) +static void TEST_v6_client_message_props(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -634,7 +670,7 @@ static void TEST_v5_client_message_props(void) db.config = &config; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-client-message-props.test-db"; + config.persistence_filepath = "files/persist_read/v6-client-message-props.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); @@ -675,7 +711,7 @@ static void TEST_v5_client_message_props(void) } } -static void TEST_v5_retain(void) +static void TEST_v6_retain(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -688,7 +724,7 @@ static void TEST_v5_retain(void) db.config = &config; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-retain.test-db"; + config.persistence_filepath = "files/persist_read/v6-retain.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); @@ -711,7 +747,7 @@ static void TEST_v5_retain(void) CU_ASSERT_EQUAL(last_retained, 0x54); } -static void TEST_v5_sub(void) +static void TEST_v6_sub(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -726,7 +762,7 @@ static void TEST_v5_sub(void) db.config = &config; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-sub.test-db"; + config.persistence_filepath = "files/persist_read/v6-sub.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); @@ -775,16 +811,17 @@ int init_persist_read_tests(void) || !CU_add_test(test_suite, "v3 sub", TEST_v3_sub) || !CU_add_test(test_suite, "v4 config ok", TEST_v4_config_ok) || !CU_add_test(test_suite, "v4 message store", TEST_v4_message_store) - || !CU_add_test(test_suite, "v5 config ok", TEST_v5_config_ok) + || !CU_add_test(test_suite, "v5 client", TEST_v5_client) || !CU_add_test(test_suite, "v5 config bad truncated", TEST_v5_config_truncated) || !CU_add_test(test_suite, "v5 bad chunk", TEST_v5_bad_chunk) - || !CU_add_test(test_suite, "v5 message store", TEST_v5_message_store) - || !CU_add_test(test_suite, "v5 message store+props", TEST_v5_message_store_props) - || !CU_add_test(test_suite, "v5 client", TEST_v5_client) - || !CU_add_test(test_suite, "v5 client message", TEST_v5_client_message) - || !CU_add_test(test_suite, "v5 client message+props", TEST_v5_client_message_props) - || !CU_add_test(test_suite, "v5 retain", TEST_v5_retain) - || !CU_add_test(test_suite, "v5 sub", TEST_v5_sub) + || !CU_add_test(test_suite, "v6 config ok", TEST_v6_config_ok) + || !CU_add_test(test_suite, "v6 message store", TEST_v6_message_store) + || !CU_add_test(test_suite, "v6 message store+props", TEST_v6_message_store_props) + || !CU_add_test(test_suite, "v6 client", TEST_v6_client) + || !CU_add_test(test_suite, "v6 client message", TEST_v6_client_message) + || !CU_add_test(test_suite, "v6 client message+props", TEST_v6_client_message_props) + || !CU_add_test(test_suite, "v6 retain", TEST_v6_retain) + || !CU_add_test(test_suite, "v6 sub", TEST_v6_sub) ){ printf("Error adding persist CUnit tests.\n"); diff --git a/test/unit/persist_write_test.c b/test/unit/persist_write_test.c index b6043761..16e422de 100644 --- a/test/unit/persist_write_test.c +++ b/test/unit/persist_write_test.c @@ -110,7 +110,7 @@ static void TEST_empty_file(void) } -static void TEST_v5_config_ok(void) +static void TEST_v6_config_ok(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -121,20 +121,20 @@ static void TEST_v5_config_ok(void) db.config = &config; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-cfg.test-db"; + config.persistence_filepath = "files/persist_read/v6-cfg.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - config.persistence_filepath = "v5-cfg.db"; + config.persistence_filepath = "v6-cfg.db"; rc = persist__backup(&db, true); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v5-cfg.test-db", "v5-cfg.db")); - unlink("v5-cfg.db"); + CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v6-cfg.test-db", "v6-cfg.db")); + unlink("v6-cfg.db"); } -static void TEST_v5_message_store_no_ref(void) +static void TEST_v6_message_store_no_ref(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -145,20 +145,20 @@ static void TEST_v5_message_store_no_ref(void) db.config = &config; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-message-store.test-db"; + config.persistence_filepath = "files/persist_read/v6-message-store.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - config.persistence_filepath = "v5-message-store-no-ref.db"; + config.persistence_filepath = "v6-message-store-no-ref.db"; rc = persist__backup(&db, true); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_EQUAL(0, file_diff("files/persist_write/v5-message-store-no-ref.test-db", "v5-message-store-no-ref.db")); - unlink("v5-message-store-no-ref.db"); + CU_ASSERT_EQUAL(0, file_diff("files/persist_write/v6-message-store-no-ref.test-db", "v6-message-store-no-ref.db")); + unlink("v6-message-store-no-ref.db"); } -static void TEST_v5_message_store_props(void) +static void TEST_v6_message_store_props(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -170,48 +170,25 @@ static void TEST_v5_message_store_props(void) memset(&listener, 0, sizeof(struct mosquitto__listener)); db.config = &config; listener.port = 1883; + config.per_listener_settings = true; config.listeners = &listener; config.listener_count = 1; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-message-store-props.test-db"; + config.persistence_filepath = "files/persist_read/v6-message-store-props.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - config.persistence_filepath = "v5-message-store-props.db"; + config.persistence_filepath = "v6-message-store-props.db"; rc = persist__backup(&db, true); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v5-message-store-props.test-db", "v5-message-store-props.db")); - unlink("v5-message-store-props.db"); + CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v6-message-store-props.test-db", "v6-message-store-props.db")); + unlink("v6-message-store-props.db"); } -static void TEST_v5_client(void) -{ - struct mosquitto_db db; - struct mosquitto__config config; - int rc; - - memset(&db, 0, sizeof(struct mosquitto_db)); - memset(&config, 0, sizeof(struct mosquitto__config)); - db.config = &config; - - config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-client.test-db"; - rc = persist__restore(&db); - CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - - config.persistence_filepath = "v5-client.db"; - rc = persist__backup(&db, true); - CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - - CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v5-client.test-db", "v5-client.db")); - unlink("v5-client.db"); -} - - -static void TEST_v5_client_message(void) +static void TEST_v6_client(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -223,24 +200,25 @@ static void TEST_v5_client_message(void) memset(&listener, 0, sizeof(struct mosquitto__listener)); db.config = &config; listener.port = 1883; + config.per_listener_settings = true; config.listeners = &listener; config.listener_count = 1; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-client-message.test-db"; + config.persistence_filepath = "files/persist_read/v6-client.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - config.persistence_filepath = "v5-client-message.db"; + config.persistence_filepath = "v6-client.db"; rc = persist__backup(&db, true); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v5-client-message.test-db", "v5-client-message.db")); - unlink("v5-client-message.db"); + CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v6-client.test-db", "v6-client.db")); + unlink("v6-client.db"); } -static void TEST_v5_client_message_props(void) +static void TEST_v6_client_message(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -252,11 +230,42 @@ static void TEST_v5_client_message_props(void) memset(&listener, 0, sizeof(struct mosquitto__listener)); db.config = &config; listener.port = 1883; + config.per_listener_settings = true; config.listeners = &listener; config.listener_count = 1; config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-client-message-props.test-db"; + config.persistence_filepath = "files/persist_read/v6-client-message.test-db"; + rc = persist__restore(&db); + CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + + config.persistence_filepath = "v6-client-message.db"; + rc = persist__backup(&db, true); + CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + + CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v6-client-message.test-db", "v6-client-message.db")); + unlink("v6-client-message.db"); +} + + +static void TEST_v6_client_message_props(void) +{ + struct mosquitto_db db; + struct mosquitto__config config; + struct mosquitto__listener listener; + int rc; + + memset(&db, 0, sizeof(struct mosquitto_db)); + memset(&config, 0, sizeof(struct mosquitto__config)); + memset(&listener, 0, sizeof(struct mosquitto__listener)); + db.config = &config; + listener.port = 1883; + config.per_listener_settings = true; + config.listeners = &listener; + config.listener_count = 1; + + config.persistence = true; + config.persistence_filepath = "files/persist_read/v6-client-message-props.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); @@ -268,16 +277,16 @@ static void TEST_v5_client_message_props(void) } } - config.persistence_filepath = "v5-client-message-props.db"; + config.persistence_filepath = "v6-client-message-props.db"; rc = persist__backup(&db, true); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v5-client-message-props.test-db", "v5-client-message-props.db")); - unlink("v5-client-message-props.db"); + CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v6-client-message-props.test-db", "v6-client-message-props.db")); + unlink("v6-client-message-props.db"); } -static void TEST_v5_sub(void) +static void TEST_v6_sub(void) { struct mosquitto_db db; struct mosquitto__config config; @@ -289,22 +298,23 @@ static void TEST_v5_sub(void) memset(&listener, 0, sizeof(struct mosquitto__listener)); db.config = &config; listener.port = 1883; + config.per_listener_settings = true; config.listeners = &listener; config.listener_count = 1; db__open(&config, &db); config.persistence = true; - config.persistence_filepath = "files/persist_read/v5-sub.test-db"; + config.persistence_filepath = "files/persist_read/v6-sub.test-db"; rc = persist__restore(&db); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - config.persistence_filepath = "v5-sub.db"; + config.persistence_filepath = "v6-sub.db"; rc = persist__backup(&db, true); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v5-sub.test-db", "v5-sub.db")); - unlink("v5-sub.db"); + CU_ASSERT_EQUAL(0, file_diff("files/persist_read/v6-sub.test-db", "v6-sub.db")); + unlink("v6-sub.db"); } @@ -362,13 +372,13 @@ int main(int argc, char *argv[]) if(0 || !CU_add_test(test_suite, "Persistence disabled", TEST_persistence_disabled) || !CU_add_test(test_suite, "Empty file", TEST_empty_file) - || !CU_add_test(test_suite, "v5 config ok", TEST_v5_config_ok) - || !CU_add_test(test_suite, "v5 message store (message has no refs)", TEST_v5_message_store_no_ref) - || !CU_add_test(test_suite, "v5 message store + props", TEST_v5_message_store_props) - || !CU_add_test(test_suite, "v5 client", TEST_v5_client) - || !CU_add_test(test_suite, "v5 client message", TEST_v5_client_message) - || !CU_add_test(test_suite, "v5 client message+props", TEST_v5_client_message_props) - || !CU_add_test(test_suite, "v5 sub", TEST_v5_sub) + || !CU_add_test(test_suite, "v6 config ok", TEST_v6_config_ok) + || !CU_add_test(test_suite, "v6 message store (message has no refs)", TEST_v6_message_store_no_ref) + || !CU_add_test(test_suite, "v6 message store + props", TEST_v6_message_store_props) + || !CU_add_test(test_suite, "v6 client", TEST_v6_client) + || !CU_add_test(test_suite, "v6 client message", TEST_v6_client_message) + || !CU_add_test(test_suite, "v6 client message+props", TEST_v6_client_message_props) + || !CU_add_test(test_suite, "v6 sub", TEST_v6_sub) //|| !CU_add_test(test_suite, "v5 full", TEST_v5_full) ){