X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fats%2Ftest_ats_api_scheduling_update_address.c;h=03f7ecfabb17d6a90ed36637a0da2c38deb7fda8;hb=056f559d916d785164f40e63ca56c153ea0e9ebe;hp=ce2bf40ee5cd6dcf28e8d87f493c3908483237ac;hpb=a08d5f29cd7645cecf7e0a7f68a4bcf58dbf75f9;p=oweals%2Fgnunet.git diff --git a/src/ats/test_ats_api_scheduling_update_address.c b/src/ats/test_ats_api_scheduling_update_address.c index ce2bf40ee..03f7ecfab 100644 --- a/src/ats/test_ats_api_scheduling_update_address.c +++ b/src/ats/test_ats_api_scheduling_update_address.c @@ -26,7 +26,7 @@ */ #include "platform.h" #include "gnunet_ats_service.h" -#include "gnunet_testing_lib-new.h" +#include "gnunet_testing_lib.h" #include "ats.h" #include "test_ats_api_common.h" @@ -63,22 +63,15 @@ struct GNUNET_HELLO_Address test_hello_address; */ static void *test_session; -static void -create_test_address (struct Test_Address *dest, char * plugin, void *session, void *addr, size_t addrlen) -{ - dest->plugin = GNUNET_strdup (plugin); - dest->session = session; - dest->addr = GNUNET_malloc (addrlen); - memcpy (dest->addr, addr, addrlen); - dest->addr_len = addrlen; -} +/** + * Test ats info + */ +struct GNUNET_ATS_Information test_ats_info[3]; -static void -free_test_address (struct Test_Address *dest) -{ - GNUNET_free (dest->plugin); - GNUNET_free (dest->addr); -} +/** + * Test ats count + */ +uint32_t test_ats_count; static void @@ -108,41 +101,6 @@ end () } -static int -compare_addresses (const struct GNUNET_HELLO_Address *address1, void *session1, - const struct GNUNET_HELLO_Address *address2, void *session2) -{ - if (0 != memcmp (&address1->peer, &address2->peer, sizeof (struct GNUNET_PeerIdentity))) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid peer id'\n"); - return GNUNET_SYSERR; - } - if (0 != strcmp (address1->transport_name, address2->transport_name)) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid plugin'\n"); - return GNUNET_SYSERR; - } - if (address1->address_length != address2->address_length) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid address length'\n"); - return GNUNET_SYSERR; - - } - else if (0 != memcmp (address1->address, address2->address, address2->address_length)) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid address'\n"); - return GNUNET_SYSERR; - } - if (session1 != session2) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid session1 %p vs session2 %p'\n", - session1, session2); - return GNUNET_SYSERR; - - } - return GNUNET_OK; -} - static void address_suggest_cb (void *cls, const struct GNUNET_HELLO_Address *address, struct Session *session, @@ -163,12 +121,33 @@ address_suggest_cb (void *cls, const struct GNUNET_HELLO_Address *address, } else { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Stage 0: Callback with incorrect address `%s'\n", + GNUNET_i2s (&address->peer)); + ret = 1; + GNUNET_SCHEDULER_add_now (&end, NULL); + return; + } + + if ((ats_count != test_ats_count) || + (GNUNET_OK != compare_ats(atsi, ats_count, test_ats_info, test_ats_count))) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Stage 0: Callback with incorrect ats info \n"); ret = 1; GNUNET_SCHEDULER_add_now (&end, NULL); return; } /* Update address */ + /* Prepare ATS Information */ + test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE); + test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN); + test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE); + test_ats_info[1].value = htonl(5); + test_ats_info[2].type = htonl (GNUNET_ATS_QUALITY_NET_DELAY); + test_ats_info[2].value = htonl(30); + test_ats_count = 3; + + GNUNET_ATS_address_update (sched_ats, &test_hello_address, test_session, test_ats_info, test_ats_count); /* Request address */ GNUNET_ATS_suggest_address (sched_ats, &p.id); @@ -185,11 +164,20 @@ address_suggest_cb (void *cls, const struct GNUNET_HELLO_Address *address, } else { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stage 1: Callback with incorrect address `%s'\n", + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Stage 1: Callback with incorrect address `%s'\n", GNUNET_i2s (&address->peer)); ret = 1; } + if ((ats_count != test_ats_count) || + (GNUNET_OK != compare_ats(atsi, ats_count, test_ats_info, test_ats_count))) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Stage 1: Callback with incorrect ats info \n"); + ret = 1; + GNUNET_SCHEDULER_add_now (&end, NULL); + return; + } + GNUNET_SCHEDULER_add_now (&end, NULL); } } @@ -212,19 +200,17 @@ run (void *cls, } /* Set up peer */ - if (GNUNET_SYSERR == GNUNET_CRYPTO_hash_from_string(PEERID, &p.id.hashPubKey)) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not setup peer!\n"); - ret = GNUNET_SYSERR; - end (); - return; - } - - GNUNET_assert (0 == strcmp (PEERID, GNUNET_i2s_full (&p.id))); - + memset (&p.id, '1', sizeof (p.id)); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n", GNUNET_i2s_full(&p.id)); + /* Prepare ATS Information */ + test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE); + test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN); + test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DELAY); + test_ats_info[1].value = htonl(10); + test_ats_count = 2; + /* Adding address without session */ test_session = &test_addr; create_test_address (&test_addr, "test", &test_addr, "test", strlen ("test") + 1); @@ -232,7 +218,7 @@ run (void *cls, test_hello_address.transport_name = test_addr.plugin; test_hello_address.address = test_addr.addr; test_hello_address.address_length = test_addr.addr_len; - GNUNET_ATS_address_add (sched_ats, &test_hello_address, test_session, NULL, 0); + GNUNET_ATS_address_add (sched_ats, &test_hello_address, test_session, test_ats_info, test_ats_count); /* Request address */ GNUNET_ATS_suggest_address (sched_ats, &p.id);