c-ipfs/test/core/test_node.h

55 lines
1.2 KiB
C

#include <stdlib.h>
#include <pthread.h>
#include "../test_helper.h"
#include "ipfs/core/ipfs_node.h"
int test_node_peerstore() {
int retVal = 0;
const char *repo_path = "/tmp/test1";
char* peer_id = NULL;
struct IpfsNode *local_node = NULL;
struct Libp2pPeer* peer = NULL;
pthread_t api_pth = 0;
if (!drop_and_build_repository(repo_path, 4001, NULL, &peer_id))
goto exit;
if (!ipfs_node_online_new(&api_pth, repo_path, &local_node))
goto exit;
// add a peer to the peerstore
peer = libp2p_peer_new();
if (peer == NULL)
goto exit;
peer->id_size = strlen(peer_id);
peer->id = malloc(peer->id_size);
memcpy(peer->id, peer_id, peer->id_size);
if (!libp2p_peerstore_add_peer(local_node->peerstore, peer))
goto exit;
// add a second peer by changing the id a bit
char tmp = peer->id[3];
char tmp2 = peer->id[4];
char tmp3 = peer->id[5];
peer->id[3] = tmp2;
peer->id[4] = tmp3;
peer->id[5] = tmp;
if (!libp2p_peerstore_add_peer(local_node->peerstore, peer))
goto exit;
retVal = 1;
exit:
if (peer_id != NULL)
free(peer_id);
if (peer != NULL)
libp2p_peer_free(peer);
if (local_node != NULL)
ipfs_node_free(&api_pth, local_node);
return retVal;
}