Beginnings of testing for MerkleDag
This commit is contained in:
parent
0245aa6549
commit
f9d927f375
8 changed files with 223 additions and 117 deletions
|
@ -1,11 +1,17 @@
|
|||
#include "ipfs/merkledag/merkledag.h"
|
||||
#include "ipfs/node/node.h"
|
||||
#include "../test_helper.h"
|
||||
|
||||
int test_merkledag_add_data() {
|
||||
int retVal = 0;
|
||||
|
||||
// create a fresh repo
|
||||
retVal = drop_and_build_repository("/tmp/.ipfs");
|
||||
if (retVal == 0)
|
||||
return 0;
|
||||
|
||||
// open the fs repo
|
||||
struct RepoConfig* repo_config;
|
||||
struct RepoConfig* repo_config = NULL;
|
||||
struct FSRepo* fs_repo;
|
||||
const char* path = "/tmp/.ipfs";
|
||||
|
||||
|
@ -21,6 +27,9 @@ int test_merkledag_add_data() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
// get the size of the database
|
||||
int start_file_size = os_utils_file_size("/tmp/.ipfs/datastore/data.mdb");
|
||||
|
||||
// create data for node
|
||||
size_t binary_data_size = 255;
|
||||
unsigned char binary_data[binary_data_size];
|
||||
|
@ -29,17 +38,64 @@ int test_merkledag_add_data() {
|
|||
}
|
||||
|
||||
// create a node
|
||||
struct Node* node = N_Create_From_Data(binary_data);
|
||||
struct Node* node1 = N_Create_From_Data(binary_data, 255);
|
||||
|
||||
retVal = ipfs_merkledag_add(node, fs_repo);
|
||||
retVal = ipfs_merkledag_add(node1, fs_repo);
|
||||
if (retVal == 0)
|
||||
return 0;
|
||||
|
||||
// make sure everything is correct
|
||||
if (node->cached == NULL)
|
||||
if (node1->cached == NULL)
|
||||
return 0;
|
||||
|
||||
Node_Delete(node);
|
||||
int first_add_size = os_utils_file_size("/tmp/.ipfs/datastore/data.mdb");
|
||||
if (first_add_size == start_file_size) { // uh oh, database should have increased in size
|
||||
return 0;
|
||||
}
|
||||
|
||||
// adding the same binary again should do nothing (the hash should be the same)
|
||||
struct Node* node2 = N_Create_From_Data(binary_data, 255);
|
||||
retVal = ipfs_merkledag_add(node2, fs_repo);
|
||||
if (retVal == 0)
|
||||
return 0;
|
||||
|
||||
// make sure everything is correct
|
||||
if (node2->cached == NULL)
|
||||
return 0;
|
||||
for(int i = 0; i < node1->cached->hash_length; i++) {
|
||||
if (node1->cached->hash[i] != node2->cached->hash[i]) {
|
||||
printf("hash of node1 does not match node2 at position %d\n", i);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int second_add_size = os_utils_file_size("/tmp/.ipfs/datastore/data.mdb");
|
||||
if (first_add_size != second_add_size) { // uh oh, the database shouldn't have changed size
|
||||
fprintf("looks as if a new record was added when it shouldn't have. Old file size: %d, new file size: %d\n", first_add_size, second_add_size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// now change 1 byte, which should change the hash
|
||||
binary_data[10] = 0;
|
||||
// create a node
|
||||
struct Node* node3 = N_Create_From_Data(binary_data, 255);
|
||||
|
||||
retVal = ipfs_merkledag_add(node3, fs_repo);
|
||||
if (retVal == 0)
|
||||
return 0;
|
||||
|
||||
// make sure everything is correct
|
||||
if (node3->cached == NULL)
|
||||
return 0;
|
||||
|
||||
Node_Delete(node1);
|
||||
Node_Delete(node2);
|
||||
Node_Delete(node3);
|
||||
int third_add_size = os_utils_file_size("/tmp/.ipfs/datastore/data.mdb");
|
||||
if (third_add_size == second_add_size || third_add_size < second_add_size) {// uh oh, it didn't add it
|
||||
printf("Node 3 should have been added, but the file size did not change from %d.\n", third_add_size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue