diff --git a/src/tests/libknot/libknot/rrset_tests.c b/src/tests/libknot/libknot/rrset_tests.c index b0cf0f7191fc4357679b44d490bf46a497ede0d1..04d5fbe304fa1e1222f5d1a4ac59eddd47ec605e 100644 --- a/src/tests/libknot/libknot/rrset_tests.c +++ b/src/tests/libknot/libknot/rrset_tests.c @@ -116,14 +116,14 @@ typedef struct test_rrset test_rrset_t; /* Artificial RDATA definitions: */ static test_rdata_t test_rdata_array[TEST_RDATA_COUNT] = { - [TEST_RDATA_A_LESS] = {(uint8_t *)"\x1\x1\x1\0", (uint8_t *)"\x1\x1\x1\1", 4, 4}, - [TEST_RDATA_A_GT] = {(uint8_t *)"\x1\x1\x1\1", (uint8_t *)"\x1\x1\x1\0", 4, 4}, + [TEST_RDATA_A_LESS] = {(uint8_t *)"\x1\x1\x1\0", (uint8_t *)"\x1\x1\x1\0", 4, 4}, + [TEST_RDATA_A_GT] = {(uint8_t *)"\x1\x1\x1\1", (uint8_t *)"\x1\x1\x1\1", 4, 4}, [TEST_RDATA_NS_LESS] = {NULL, NULL, sizeof(knot_dname_t *), 0}, [TEST_RDATA_NS_GT] = {NULL, NULL, sizeof(knot_dname_t *), 0}, - [TEST_RDATA_MX_DNAME_LESS] = {(uint8_t *)"\x0\x1", NULL, sizeof(knot_dname_t *) + 2, 0}, - [TEST_RDATA_MX_DNAME_GT] = {(uint8_t *)"\x0\x1", NULL, sizeof(knot_dname_t *) + 2, 0}, - [TEST_RDATA_MX_BIN_LESS] = {(uint8_t *)"\x0\x1", NULL, sizeof(knot_dname_t *) + 2, 0}, - [TEST_RDATA_MX_BIN_GT] = {(uint8_t *)"\x0\x2", NULL, sizeof(knot_dname_t *) + 2, 0}, + [TEST_RDATA_MX_DNAME_LESS] = {NULL, NULL, sizeof(knot_dname_t *) + 2, 0}, + [TEST_RDATA_MX_DNAME_GT] = {NULL, NULL, sizeof(knot_dname_t *) + 2, 0}, + [TEST_RDATA_MX_BIN_LESS] = {NULL, NULL, sizeof(knot_dname_t *) + 2, 0}, + [TEST_RDATA_MX_BIN_GT] = {NULL, NULL, sizeof(knot_dname_t *) + 2, 0}, [TEST_RDATA_MINFO1] = {NULL, NULL, sizeof(knot_dname_t *) * 2, 0}, [TEST_RDATA_MINFO2] = {NULL, NULL, sizeof(knot_dname_t *) * 2, 0} }; @@ -171,26 +171,121 @@ static void create_test_dnames() static void create_test_rdata() { /* NS, MX and MINFO types need init. */ - memcpy(test_rdata_array[TEST_RDATA_NS_LESS].rdata + 2, &test_dnames[0], + /* TODO use tmp variables, this is too big. This needs a rewrite, but i'm too tired now. */ + test_rdata_array[TEST_RDATA_NS_LESS].rdata = + xmalloc(sizeof(knot_dname_t *)); + memcpy(test_rdata_array[TEST_RDATA_NS_LESS].rdata, &test_dnames[0], sizeof(knot_dname_t *)); - memcpy(test_rdata_array[TEST_RDATA_NS_GT].rdata + 2, &test_dnames[0], + test_rdata_array[TEST_RDATA_NS_LESS].wire = + xmalloc(test_dnames[0]->size); + memcpy(test_rdata_array[TEST_RDATA_NS_LESS].wire, test_dnames[0]->name, + test_dnames[0]->size); + test_rdata_array[TEST_RDATA_NS_LESS].wire_size = test_dnames[0]->size; + test_rdata_array[TEST_RDATA_NS_LESS].size = sizeof(knot_dname_t *); + + + test_rdata_array[TEST_RDATA_NS_GT].rdata = + xmalloc(sizeof(knot_dname_t *)); + memcpy(test_rdata_array[TEST_RDATA_NS_GT].rdata, &test_dnames[0], sizeof(knot_dname_t *)); + test_rdata_array[TEST_RDATA_NS_GT].wire = + xmalloc(test_dnames[0]->size); + memcpy(test_rdata_array[TEST_RDATA_NS_GT].wire, test_dnames[0]->name, + test_dnames[0]->size); + test_rdata_array[TEST_RDATA_NS_GT].wire_size = test_dnames[0]->size; + test_rdata_array[TEST_RDATA_NS_GT].size = sizeof(knot_dname_t *); + + + test_rdata_array[TEST_RDATA_MX_DNAME_LESS].rdata = + xmalloc(2 + sizeof(knot_dname_t *)); + uint16_t id = 10; + knot_wire_write_u16(test_rdata_array[TEST_RDATA_MX_DNAME_LESS].rdata, id); memcpy(test_rdata_array[TEST_RDATA_MX_DNAME_LESS].rdata + 2, &test_dnames[0], sizeof(knot_dname_t *)); + test_rdata_array[TEST_RDATA_MX_DNAME_LESS].wire = + xmalloc(test_dnames[0]->size + 2); + knot_wire_write_u16(test_rdata_array[TEST_RDATA_MX_DNAME_LESS].wire, id); + memcpy(test_rdata_array[TEST_RDATA_MX_DNAME_LESS].wire + 2, + test_dnames[0]->name, test_dnames[0]->size); + test_rdata_array[TEST_RDATA_MX_DNAME_LESS].wire_size = test_dnames[0]->size + 2; + test_rdata_array[TEST_RDATA_MX_DNAME_LESS].size = sizeof(knot_dname_t *) + 2; + + + test_rdata_array[TEST_RDATA_MX_DNAME_GT].rdata = + xmalloc(2 + sizeof(knot_dname_t *)); + id = 10; + knot_wire_write_u16(test_rdata_array[TEST_RDATA_MX_DNAME_GT].rdata, id); memcpy(test_rdata_array[TEST_RDATA_MX_DNAME_GT].rdata + 2, &test_dnames[1], sizeof(knot_dname_t *)); + test_rdata_array[TEST_RDATA_MX_DNAME_GT].wire = + xmalloc(test_dnames[1]->size + 2); + knot_wire_write_u16(test_rdata_array[TEST_RDATA_MX_DNAME_GT].wire, id); + memcpy(test_rdata_array[TEST_RDATA_MX_DNAME_GT].wire + 2, + test_dnames[0]->name, test_dnames[1]->size); + test_rdata_array[TEST_RDATA_MX_DNAME_GT].wire_size = test_dnames[1]->size + 2; + test_rdata_array[TEST_RDATA_MX_DNAME_GT].size = sizeof(knot_dname_t *) + 2; + + + test_rdata_array[TEST_RDATA_MX_BIN_LESS].rdata = + xmalloc(2 + sizeof(knot_dname_t *)); + id = 10; + knot_wire_write_u16(test_rdata_array[TEST_RDATA_MX_BIN_LESS].rdata, id); memcpy(test_rdata_array[TEST_RDATA_MX_BIN_LESS].rdata + 2, &test_dnames[2], sizeof(knot_dname_t *)); + test_rdata_array[TEST_RDATA_MX_BIN_LESS].wire = + xmalloc(test_dnames[0]->size + 2); + knot_wire_write_u16(test_rdata_array[TEST_RDATA_MX_BIN_LESS].wire, id); + memcpy(test_rdata_array[TEST_RDATA_MX_BIN_LESS].wire + 2, + test_dnames[0]->name, test_dnames[0]->size); + test_rdata_array[TEST_RDATA_MX_BIN_LESS].wire_size = test_dnames[0]->size + 2; + test_rdata_array[TEST_RDATA_MX_BIN_LESS].size = sizeof(knot_dname_t *) + 2; + + + test_rdata_array[TEST_RDATA_MX_BIN_GT].rdata = + xmalloc(2 + sizeof(knot_dname_t *)); + id = 20; + knot_wire_write_u16(test_rdata_array[TEST_RDATA_MX_BIN_GT].rdata, id); memcpy(test_rdata_array[TEST_RDATA_MX_BIN_GT].rdata + 2, &test_dnames[2], sizeof(knot_dname_t *)); + test_rdata_array[TEST_RDATA_MX_BIN_GT].wire = + xmalloc(test_dnames[0]->size + 2); + knot_wire_write_u16(test_rdata_array[TEST_RDATA_MX_BIN_GT].wire, id); + memcpy(test_rdata_array[TEST_RDATA_MX_BIN_GT].wire + 2, + test_dnames[0]->name, test_dnames[0]->size); + test_rdata_array[TEST_RDATA_MX_BIN_GT].wire_size = test_dnames[0]->size + 2; + test_rdata_array[TEST_RDATA_MX_BIN_GT].size = sizeof(knot_dname_t *) + 2; + + test_rdata_array[TEST_RDATA_MINFO1].rdata = + xmalloc(sizeof(knot_dname_t *) * 2); memcpy(test_rdata_array[TEST_RDATA_MINFO1].rdata, &test_dnames[0], sizeof(knot_dname_t *)); memcpy(test_rdata_array[TEST_RDATA_MINFO1].rdata + sizeof(knot_dname_t *), &test_dnames[1], sizeof(knot_dname_t *)); + test_rdata_array[TEST_RDATA_MINFO1].wire = + xmalloc(test_dnames[0]->size + test_dnames[1]->size); + memcpy(test_rdata_array[TEST_RDATA_MINFO1].wire, test_dnames[0]->name, + test_dnames[0]->size); + memcpy(test_rdata_array[TEST_RDATA_MINFO1].wire + test_dnames[0]->size, + test_dnames[1]->name, test_dnames[1]->size); + test_rdata_array[TEST_RDATA_MINFO1].wire_size = + test_dnames[0]->size + test_dnames[1]->size; + test_rdata_array[TEST_RDATA_MINFO1].size = sizeof(knot_dname_t *) * 2; + + test_rdata_array[TEST_RDATA_MINFO2].rdata = + xmalloc(sizeof(knot_dname_t *) * 2); memcpy(test_rdata_array[TEST_RDATA_MINFO2].rdata, &test_dnames[2], sizeof(knot_dname_t *)); memcpy(test_rdata_array[TEST_RDATA_MINFO2].rdata + sizeof(knot_dname_t *), &test_dnames[3], sizeof(knot_dname_t *)); + test_rdata_array[TEST_RDATA_MINFO2].wire = + xmalloc(test_dnames[2]->size + test_dnames[3]->size); + memcpy(test_rdata_array[TEST_RDATA_MINFO2].wire, test_dnames[0]->name, + test_dnames[0]->size); + memcpy(test_rdata_array[TEST_RDATA_MINFO2].wire + test_dnames[2]->size, + test_dnames[3]->name, test_dnames[3]->size); + test_rdata_array[TEST_RDATA_MINFO2].wire_size = + test_dnames[2]->size + test_dnames[3]->size; + test_rdata_array[TEST_RDATA_MINFO2].size = sizeof(knot_dname_t *) * 2; } static void create_test_rrsets() @@ -221,15 +316,19 @@ static void create_test_rrsets() uint16_t rdlength = 0; test_rrset.test_rdata = xmalloc(sizeof(void *) * test_rrset.rr_count); + size_t actual_length = 0; for (int j = 0; j < test_rrset.rr_count; j++) { test_rrset.test_rdata[j] = &test_rdata_array[j]; rdlength += test_rrset.test_rdata[j]->wire_size; + actual_length += test_rrset.test_rdata[j]->size; } /* Copy RDLENGTH to wire. */ knot_wire_write_u16(test_rrset.header_wire + offset, rdlength); /* Assign RDATA (including indices). */ offset = 0; + test_rrset.rrset.rdata = xmalloc(actual_length); + test_rrset.rdata_wire = xmalloc(rdlength); test_rrset.rrset.rdata_indices = xmalloc(sizeof(uint32_t) * test_rrset.rr_count); for (int j = 0; j < test_rrset.rr_count; j++) { @@ -250,9 +349,9 @@ static void create_test_rrsets() offset = 0; for (int j = 0; j < test_rrset.rr_count; j++) { memcpy(test_rrset.rdata_wire + offset, - test_rrset.test_rdata[i]->wire, - test_rrset.test_rdata[i]->wire_size); - offset += test_rrset.test_rdata[i]->wire_size; + test_rrset.test_rdata[j]->wire, + test_rrset.test_rdata[j]->wire_size); + offset += test_rrset.test_rdata[j]->wire_size; } test_rrset.rdata_wire_size = offset; } @@ -295,7 +394,7 @@ static int check_rrset_values(const knot_rrset_t *rrset, static int test_rrset_new() { /* Actual values don't matter in this case. */ - knot_dname_t *dname = (knot_dname_t *)0x1; + knot_dname_t *dname = test_dnames[0]; uint16_t type = 1; uint16_t rclass = 1; uint32_t ttl = 1; diff --git a/src/tests/libknot/unittests_libknot.c b/src/tests/libknot/unittests_libknot.c index d522e1db1498585f520fb57acaef3ad738867c28..112b6af429a2ffe918fad7f4b81b4003a9b365ad 100644 --- a/src/tests/libknot/unittests_libknot.c +++ b/src/tests/libknot/unittests_libknot.c @@ -45,21 +45,7 @@ int main(int argc, char *argv[]) unit_api *tests[] = { /* DNS units */ - &cuckoo_tests_api, //! Cuckoo hashing unit - &dname_tests_api, //! DNS library (dname) unit - &edns_tests_api, //! DNS library (EDNS0) unit - &zone_tests_api, //! DNS library (zone) unit - &node_tests_api, //! DNS library (node) unit - &rdata_tests_api, //! DNS library (rdata) unit - &response_tests_api, //! DNS library (response) unit &rrset_tests_api, //! DNS library (rrset) unit - &dname_table_tests_api, - &nsec3_tests_api, - &packet_tests_api, - &query_tests_api, - &zonedb_tests_api, //! DNS library (zonedb) unit - &zone_tree_tests_api, - &tsig_tests_api, NULL };