aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2008-10-26 21:40:20 +0000
committerYang Tse <yangsita@gmail.com>2008-10-26 21:40:20 +0000
commitdc289aa4fa4ea381237be28372b4eaf5c87a86de (patch)
treee56f1348553f29099774f52df01e02741e0773c2
parent6db8f534450d50ff70c3d5a46ac32ccfbac4da46 (diff)
downloadgnurl-dc289aa4fa4ea381237be28372b4eaf5c87a86de.tar.gz
gnurl-dc289aa4fa4ea381237be28372b4eaf5c87a86de.tar.bz2
gnurl-dc289aa4fa4ea381237be28372b4eaf5c87a86de.zip
convert test #558 into something more interesting, attempting
now to minimally exercise some internal hash routines.
-rw-r--r--tests/data/test55831
-rw-r--r--tests/libtest/lib558.c155
2 files changed, 71 insertions, 115 deletions
diff --git a/tests/data/test558 b/tests/data/test558
index 481588ae6..e2c74b251 100644
--- a/tests/data/test558
+++ b/tests/data/test558
@@ -15,7 +15,7 @@ lib558
</tool>
<name>
-loop testing
+internal hash testing
</name>
<command>
nothing
@@ -26,28 +26,13 @@ nothing
# Verify data after the test has been "shot"
<verify>
<stdout mode="text">
-malloc of root struct OK
-malloc of pointer table OK
-initializing table...
-table initialized OK
-filling pointer table...
-malloc of pointed element (idx 0) OK
-malloc of pointed element (idx 1) OK
-malloc of pointed element (idx 2) OK
-malloc of pointed element (idx 3) OK
-malloc of pointed element (idx 4) OK
-malloc of pointed element (idx 5) OK
-malloc of pointed element (idx 6) OK
-malloc of pointed element (idx 7) OK
-malloc of pointed element (idx 8) OK
-malloc of pointed element (idx 9) OK
-pointer table filling OK
-freeing pointers in table...
-freeing pointers in table OK
-freeing table...
-freeing table OK
-freeing root struct...
-freeing root struct OK
+easy handle init OK
+creating hash...
+hash creation OK
+destroying hash...
+hash destruction OK
+destroying easy handle...
+easy handle destruction OK
</stdout>
</verify>
diff --git a/tests/libtest/lib558.c b/tests/libtest/lib558.c
index d5d1d146a..bf4f9149f 100644
--- a/tests/libtest/lib558.c
+++ b/tests/libtest/lib558.c
@@ -8,120 +8,91 @@
* $Id$
*/
-
-
#include "test.h"
-#include "memdebug.h"
-
-#define TABLE_SIZE 10
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#define ENABLE_CURLX_PRINTF
+#include "curlx.h"
-struct element_st {
- int idx;
- int dummy;
-};
-
-
-struct root_st {
- struct element_st **table;
- int size;
-};
+#include "hash.h"
+#include "hostip.h"
+#include "memory.h"
+#include "memdebug.h"
-static
-struct root_st * new_root(void)
+int test(char *URL)
{
- struct root_st *r;
-
- r = malloc(sizeof(struct root_st));
- if(r != NULL)
- printf("malloc of root struct OK\n");
- else {
- printf("malloc of root struct failed\n");
- return NULL;
- }
+ CURL *easyh;
+ struct curl_hash *hp;
+ char *data_key;
+ struct Curl_dns_entry *data_node;
+ struct Curl_dns_entry *nodep;
+ size_t key_len;
+
+ (void)URL; /* not used */
- r->size = TABLE_SIZE;
- r->table = malloc(r->size * sizeof(struct element_st *));
- if(r->table != NULL)
- printf("malloc of pointer table OK\n");
- else {
- printf("malloc of pointer table failed\n");
- free(r);
- return NULL;
+ easyh = curl_easy_init();
+ if(!easyh) {
+ printf("easy handle init failed\n");
+ return TEST_ERR_MAJOR_BAD;
}
+ printf("easy handle init OK\n");
- return r;
-}
-
-
-static
-struct element_st * new_element(int idx)
-{
- struct element_st *e;
-
- e = malloc(sizeof(struct element_st));
- if(e != NULL)
- printf("malloc of pointed element (idx %d) OK\n", idx);
- else {
- printf("malloc of pointed element (idx %d) failed\n", idx);
- return NULL;
+ printf("creating hash...\n");
+ hp = Curl_mk_dnscache();
+ if(!hp) {
+ printf("hash creation failed\n");
+ return TEST_ERR_MAJOR_BAD;
}
+ printf("hash creation OK\n");
- e->idx = e->dummy = idx;
+ /**/
- return e;
-}
-
-
-int test(char *URL)
-{
- struct root_st *root;
- int error;
- int i;
- (void)URL; /* not used */
-
- root = new_root();
- if(!root)
+ data_key = aprintf("%s:%d", "dummy", 0);
+ if(!data_key) {
+ printf("data key creation failed\n");
return TEST_ERR_MAJOR_BAD;
-
- printf("initializing table...\n");
- for (i = 0; i < root->size; ++i) {
- root->table[i] = NULL;
}
- printf("table initialized OK\n");
-
- printf("filling pointer table...\n");
- error = 0;
- for (i = 0; i < root->size; ++i) {
- root->table[i] = new_element(i);
- if(!root->table[i]) {
- error = 1;
- break;
- }
+ key_len = strlen(data_key);
+
+ data_node = calloc(1, sizeof(struct Curl_dns_entry));
+ if(!data_node) {
+ printf("data node creation failed\n");
+ return TEST_ERR_MAJOR_BAD;
}
- if(error) {
- printf("pointer table filling failed\n");
+
+ data_node->addr = Curl_ip2addr(INADDR_ANY, "dummy", 0);
+ if(!data_node->addr) {
+ printf("actual data creation failed\n");
return TEST_ERR_MAJOR_BAD;
}
- else
- printf("pointer table filling OK\n");
- printf("freeing pointers in table...\n");
- for (i = 0; i < root->size; ++i) {
- if(root->table[i])
- free(root->table[i]);
+ nodep = Curl_hash_add(hp, data_key, key_len+1, (void *)data_node);
+ if(!nodep) {
+ printf("insertion into hash failed\n");
+ return TEST_ERR_MAJOR_BAD;
}
- printf("freeing pointers in table OK\n");
- printf("freeing table...\n");
- free(root->table);
- printf("freeing table OK\n");
+ free(data_key);
- printf("freeing root struct...\n");
- free(root);
- printf("freeing root struct OK\n");
+ /**/
+
+ printf("destroying hash...\n");
+ Curl_hash_destroy(hp);
+ printf("hash destruction OK\n");
+
+ printf("destroying easy handle...\n");
+ curl_easy_cleanup(easyh);
+ printf("easy handle destruction OK\n");
+
+ curl_global_cleanup();
return 0; /* OK */
}
+