123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- #pragma once
- #include "multiaddr/multiaddr.h"
- #include "multiaddr/varhexutils.h"
- int test_new_like_libp2p() {
- int retVal = 0;
- char* ip = "10.211.55.2";
- int port = 4001;
- char str[strlen(ip) + 50];
- sprintf(str, "/ip4/%s/tcp/%d/", ip, port);
- struct MultiAddress* ma_string = multiaddress_new_from_string(str);
- // convert to binary
- struct MultiAddress* ma_binary = multiaddress_new_from_bytes(ma_string->bytes, ma_string->bsize);
- if (strcmp(ma_string->string, ma_binary->string) != 0) {
- fprintf(stderr, "%s does not equal %s\n", ma_string->string, ma_binary->string);
- goto exit;
- }
- retVal = 1;
- exit:
- multiaddress_free(ma_string);
- multiaddress_free(ma_binary);
- return retVal;
- }
- int test_new_from_string() {
- struct MultiAddress* a = multiaddress_new_from_string("/ip4/127.0.0.1/tcp/8080/");
- printf("Number of Bytes: %lu, Bytes: ", a->bsize);
- for(int i = 0; i < a->bsize; i++) {
- printf("%02x ", a->bytes[i]);
- }
- printf(" End of bytes\n");
- multiaddress_free(a);
- return 1;
- }
- int test_full() {
- char addrstr[100];
- strcpy(addrstr,"/ip4/192.168.1.1/");
- printf("INITIAL: %s\n",addrstr);
- struct MultiAddress* a;
- a= multiaddress_new_from_string(addrstr);
- unsigned char* tmp = Var_To_Hex((char*)a->bytes, a->bsize);
- printf("TEST BYTES: %s\n", tmp);
- free(tmp);
- //Remember, Decapsulation happens from right to left, never in reverse!
- printf("A STRING:%s\n",a->string);
- multiaddress_encapsulate(a,"/udp/3333/");
- printf("A STRING ENCAPSULATED:%s\n",a->string);
- tmp = Var_To_Hex((char*)a->bytes, a->bsize);
- printf("TEST BYTES: %s\n", tmp);
- free(tmp);
- multiaddress_decapsulate(a,"udp");
- printf("A STRING DECAPSULATED UDP:%s\n",a->string);
- tmp = Var_To_Hex((char*)a->bytes, a->bsize);
- printf("TEST BYTES: %s\n", tmp);
- free(tmp);
- multiaddress_encapsulate(a,"/udp/3333/");
- printf("A STRING ENCAPSULATED UDP: %s\n",a->string);
- multiaddress_encapsulate(a,"/ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG");
- printf("A STRING ENCAPSULATED IPFS:%s\n",a->string);
- tmp = Var_To_Hex((char*)a->bytes, a->bsize);
- printf("TEST BYTES: %s\n", tmp);
- free(tmp);
- printf("TEST BYTE SIZE: %lu\n",a->bsize);
- struct MultiAddress* beta;
- beta = multiaddress_new_from_bytes(a->bytes,a->bsize);
- printf("B STRING: %s\n",beta->string);
- multiaddress_free(a);
- multiaddress_free(beta);
- return 1;
- }
- int test_hex_to_var() {
- size_t d;
- unsigned char* result = Hex_To_Var("04", &d);
- if (d != 1)
- return 0;
- if (result[0] != 4)
- return 0;
- if (result != NULL)
- free(result);
- return 1;
- }
- int test_int_to_hex() {
- int val = 2555351;
- char* result = Int_To_Hex(val);
- int retVal = Hex_To_Int(result);
- if (retVal != val)
- return 0;
- return 1;
- }
- int test_multiaddr_utils() {
- int retVal = 0;
- struct MultiAddress* addr = multiaddress_new_from_string("/ip4/127.0.0.1/tcp/4001/");
- if (!multiaddress_is_ip(addr)) {
- fprintf(stderr, "The address should be an IP\n");
- return 0;
- }
- char* ip = NULL;
- multiaddress_get_ip_address(addr, &ip);
- if (ip == NULL) {
- fprintf(stderr, "get_ip_address returned NULL\n");
- goto exit;
- }
- if(strcmp(ip, "127.0.0.1") != 0) {
- fprintf(stderr, "ip addresses are not equal\n");
- goto exit;
- }
- int port = multiaddress_get_ip_port(addr);
- if (port != 4001) {
- fprintf(stderr, "port incorrect. %d was returned instead of %d\n", port, 4001);
- goto exit;
- }
- retVal = 1;
- exit:
- if (ip != NULL)
- free(ip);
- if (addr != NULL)
- multiaddress_free(addr);
- return retVal;
- }
- int test_multiaddr_peer_id() {
- char* orig_address = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG";
- char full_string[255];
- char* result = NULL;
- char* bytes = NULL;
- int retVal = 0, port = 0;
- struct MultiAddress *addr = NULL, *addr2 = NULL;
- sprintf(full_string, "/ip4/127.0.0.1/tcp/4001/ipfs/%s/", orig_address);
- addr = multiaddress_new_from_string(full_string);
- result = multiaddress_get_peer_id(addr);
- if (result == NULL || strcmp(result, orig_address) != 0)
- goto exit;
- free(result);
- result = NULL;
- // switch to bytes and back again to verify the peer id follows...
- // 1. display the original bytes
- result = (char*)Var_To_Hex((char*)addr->bytes, addr->bsize);
- fprintf(stderr, "Original Bytes: %s\n", result);
- free(result);
- result = NULL;
- // make a new MultiAddress from bytes
- bytes = malloc(addr->bsize);
- memcpy(bytes, addr->bytes, addr->bsize);
- addr2 = multiaddress_new_from_bytes((unsigned char*)bytes, addr->bsize);
- free(bytes);
- bytes = NULL;
- // 2. Display the resultant bytes
- result = (char*)Var_To_Hex((char*)addr2->bytes, addr2->bsize);
- fprintf(stderr, "New Bytes: %s\n", result);
- free(result);
- result = NULL;
- if (strcmp(full_string, addr2->string) != 0) {
- fprintf(stderr, "Original string was %s but new string is %s\n", full_string, addr2->string);
- goto exit;
- }
- port = multiaddress_get_ip_port(addr2);
- if (port != 4001) {
- fprintf(stderr, "Original string had port 4001, but now reporting %d\n", port);
- goto exit;
- }
- result = multiaddress_get_peer_id(addr2);
- if (strcmp(result, orig_address) != 0) {
- fprintf(stderr, "New peer id %s does not match %s", result, orig_address);
- goto exit;
- }
- free(result);
- result = NULL;
- retVal = 1;
- exit:
- if (addr != NULL)
- multiaddress_free(addr);
- if (addr2 != NULL)
- multiaddress_free(addr2);
- if (result != NULL)
- free(result);
- if (bytes != NULL)
- free(bytes);
- return retVal;
- }
- int test_multiaddr_get_peer_id() {
- const char* orig_address = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG";
- char full_string[255] = "";
- char* result = NULL;
- int retVal = 0;
- struct MultiAddress *addr = NULL;
- sprintf(full_string, "/ip4/127.0.0.1/tcp/4001/ipfs/%s/", orig_address);
- addr = multiaddress_new_from_string(full_string);
- result = multiaddress_get_peer_id(addr);
- if (result == NULL)
- goto exit;
- if (strcmp(orig_address, result) != 0)
- goto exit;
- retVal = 1;
- exit:
- multiaddress_free(addr);
- free(result);
- result = NULL;
- return retVal;
- }
- int test_multiaddr_bytes() {
- int retVal = 0;
- char* orig_address = "/ip4/127.0.0.1/tcp/4001/";
- struct MultiAddress *orig = NULL, *result = NULL;
- orig = multiaddress_new_from_string(orig_address);
- result = multiaddress_new_from_bytes(orig->bytes, orig->bsize);
- if (strcmp(orig_address, result->string) != 0) {
- fprintf(stderr, "%s does not equal %s\n", orig_address, result->string);
- goto exit;
- }
- retVal = 1;
- exit:
- if (orig != NULL)
- multiaddress_free(orig);
- if (result != NULL)
- multiaddress_free(result);
- return retVal;
- }
|