62096ffc1c
Also included is a way to pass port and swarm info to methods that build the config file. This makes testing easier. Multiple peers can be started on the same machine easily.
159 lines
4.2 KiB
C
159 lines
4.2 KiB
C
#include "cid/test_cid.h"
|
|
#include "cmd/ipfs/test_init.h"
|
|
#include "flatfs/test_flatfs.h"
|
|
#include "merkledag/test_merkledag.h"
|
|
#include "node/test_node.h"
|
|
#include "node/test_importer.h"
|
|
#include "node/test_resolver.h"
|
|
#include "repo/test_repo_bootstrap_peers.h"
|
|
#include "repo/test_repo_config.h"
|
|
#include "repo/test_repo_fsrepo.h"
|
|
#include "repo/test_repo_identity.h"
|
|
#include "routing/test_routing.h"
|
|
#include "routing/test_supernode.h"
|
|
#include "storage/test_ds_helper.h"
|
|
#include "storage/test_datastore.h"
|
|
#include "storage/test_blocks.h"
|
|
#include "storage/test_unixfs.h"
|
|
#include "core/test_ping.h"
|
|
|
|
int testit(const char* name, int (*func)(void)) {
|
|
printf("Testing %s...\n", name);
|
|
int retVal = func();
|
|
if (retVal)
|
|
printf("%s success!\n", name);
|
|
else
|
|
printf("** Uh oh! %s failed.**\n", name);
|
|
return retVal == 0;
|
|
}
|
|
|
|
const char* names[] = {
|
|
"test_cid_new_free",
|
|
"test_cid_cast_multihash",
|
|
"test_cid_cast_non_multihash",
|
|
"test_cid_protobuf_encode_decode",
|
|
"test_repo_config_new",
|
|
"test_repo_config_init",
|
|
"test_repo_config_write",
|
|
"test_repo_config_identity_new",
|
|
"test_repo_config_identity_private_key",
|
|
"test_repo_fsrepo_write_read_block",
|
|
"test_routing_supernode_start",
|
|
"test_get_init_command",
|
|
"test_import_small_file",
|
|
"test_import_large_file",
|
|
"test_repo_fsrepo_open_config",
|
|
"test_flatfs_get_directory",
|
|
"test_flatfs_get_filename",
|
|
"test_flatfs_get_full_filename",
|
|
"test_ds_key_from_binary",
|
|
"test_blocks_new",
|
|
"test_repo_bootstrap_peers_init",
|
|
"test_ipfs_datastore_put",
|
|
"test_node",
|
|
"test_node_link_encode_decode",
|
|
"test_node_encode_decode",
|
|
"test_merkledag_add_data",
|
|
"test_merkledag_get_data",
|
|
"test_merkledag_add_node",
|
|
"test_merkledag_add_node_with_links",
|
|
"test_resolver_get",
|
|
"test_routing_supernode_get_value",
|
|
"test_routing_supernode_get_remote_value",
|
|
"test_routing_find_peer",
|
|
"test_unixfs_encode_decode",
|
|
"test_unixfs_encode_smallfile",
|
|
"test_ping",
|
|
"test_ping_remote",
|
|
"test_resolver_remote_get"
|
|
};
|
|
|
|
int (*funcs[])(void) = {
|
|
test_cid_new_free,
|
|
test_cid_cast_multihash,
|
|
test_cid_cast_non_multihash,
|
|
test_cid_protobuf_encode_decode,
|
|
test_repo_config_new,
|
|
test_repo_config_init,
|
|
test_repo_config_write,
|
|
test_repo_config_identity_new,
|
|
test_repo_config_identity_private_key,
|
|
test_repo_fsrepo_write_read_block,
|
|
test_routing_supernode_start,
|
|
test_get_init_command,
|
|
test_import_small_file,
|
|
test_import_large_file,
|
|
test_repo_fsrepo_open_config,
|
|
test_flatfs_get_directory,
|
|
test_flatfs_get_filename,
|
|
test_flatfs_get_full_filename,
|
|
test_ds_key_from_binary,
|
|
test_blocks_new,
|
|
test_repo_bootstrap_peers_init,
|
|
test_ipfs_datastore_put,
|
|
test_node,
|
|
test_node_link_encode_decode,
|
|
test_node_encode_decode,
|
|
test_merkledag_add_data,
|
|
test_merkledag_get_data,
|
|
test_merkledag_add_node,
|
|
test_merkledag_add_node_with_links,
|
|
test_resolver_get,
|
|
test_routing_supernode_get_value,
|
|
test_routing_supernode_get_remote_value,
|
|
test_routing_find_peer,
|
|
test_unixfs_encode_decode,
|
|
test_unixfs_encode_smallfile,
|
|
test_ping,
|
|
test_ping_remote,
|
|
test_resolver_remote_get
|
|
};
|
|
|
|
/**
|
|
* run 1 test or run all
|
|
*/
|
|
int main(int argc, char** argv) {
|
|
int counter = 0;
|
|
int tests_ran = 0;
|
|
char* test_wanted;
|
|
int only_one = 0;
|
|
if(argc > 1) {
|
|
only_one = 1;
|
|
if (argv[1][0] == '\'') { // some shells put quotes around arguments
|
|
argv[1][strlen(argv[1])-1] = 0;
|
|
test_wanted = &(argv[1][1]);
|
|
}
|
|
else
|
|
test_wanted = argv[1];
|
|
}
|
|
int array_length = sizeof(funcs) / sizeof(funcs[0]);
|
|
int array2_length = sizeof(names) / sizeof(names[0]);
|
|
if (array_length != array2_length) {
|
|
printf("Test arrays are not of the same length. Funcs: %d, Names: %d\n", array_length, array2_length);
|
|
}
|
|
for (int i = 0; i < array_length; i++) {
|
|
if (only_one) {
|
|
const char* currName = names[i];
|
|
if (strcmp(currName, test_wanted) == 0) {
|
|
tests_ran++;
|
|
counter += testit(names[i], funcs[i]);
|
|
}
|
|
}
|
|
else
|
|
if (!only_one) {
|
|
tests_ran++;
|
|
counter += testit(names[i], funcs[i]);
|
|
}
|
|
}
|
|
|
|
if (tests_ran == 0)
|
|
printf("***** No tests found *****\n");
|
|
else {
|
|
if (counter > 0) {
|
|
printf("***** There were %d failed (out of %d) test(s) *****\n", counter, tests_ran);
|
|
} else {
|
|
printf("All %d tests passed\n", tests_ran);
|
|
}
|
|
}
|
|
return 1;
|
|
}
|