Skip to content

Commit

Permalink
test_config: split into multiple functions for readability
Browse files Browse the repository at this point in the history
  • Loading branch information
rhaas80 committed Oct 14, 2020
1 parent 0cbeda7 commit 3dc3045
Showing 1 changed file with 57 additions and 38 deletions.
95 changes: 57 additions & 38 deletions test/test_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,41 +8,36 @@
#include "kvtree.h"
#include "kvtree_util.h"

int
main(void) {
int rc;
kvtree* axl_config_values = kvtree_new();
/* settable option values */
size_t old_axl_file_buf_size;
int old_axl_debug;
int old_axl_make_directories;
int old_axl_copy_metadata;

size_t old_axl_file_buf_size = axl_file_buf_size;
int old_axl_debug = axl_debug;
int old_axl_make_directories = axl_make_directories;
int old_axl_copy_metadata = axl_copy_metadata;

rc = AXL_Init();
if (rc != AXL_SUCCESS) {
printf("AXL_Init() failed (error %d)\n", rc);
return EXIT_FAILURE;
}
/* tests setting global options, error exits if failure are detected */
void set_global_options(void)
{
kvtree* axl_config_values = kvtree_new();

/* check AXL configuration settings */
int rc = kvtree_util_set_bytecount(axl_config_values,
AXL_KEY_CONFIG_FILE_BUF_SIZE,
old_axl_file_buf_size + 1);
if (rc != KVTREE_SUCCESS) {
printf("kvtree_util_set_bytecount failed (error %d)\n", rc);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}
rc = kvtree_util_set_int(axl_config_values, AXL_KEY_CONFIG_DEBUG,
!old_axl_debug);
if (rc != KVTREE_SUCCESS) {
printf("kvtree_util_set_int failed (error %d)\n", rc);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

printf("Configuring AXL (first set of options)...\n");
if (AXL_Config(axl_config_values) == NULL) {
printf("AXL_Config() failed\n");
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

/* check that options were set */
Expand All @@ -51,13 +46,13 @@ main(void) {
printf("AXL_Config() failed to set %s: %lu != %lu\n",
AXL_KEY_CONFIG_FILE_BUF_SIZE, (long unsigned)axl_file_buf_size,
(long unsigned)(old_axl_file_buf_size + 1));
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

if (axl_debug != !old_axl_debug) {
printf("AXL_Config() failed to set %s: %d != %d\n",
AXL_KEY_CONFIG_DEBUG, axl_debug, !old_axl_debug);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

/* set remainder of options */
Expand All @@ -68,19 +63,19 @@ main(void) {
!old_axl_make_directories);
if (rc != KVTREE_SUCCESS) {
printf("kvtree_util_set_int failed (error %d)\n", rc);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}
rc = kvtree_util_set_int(axl_config_values, AXL_KEY_CONFIG_COPY_METADATA,
!old_axl_copy_metadata);
if (rc != KVTREE_SUCCESS) {
printf("kvtree_util_set_int failed (error %d)\n", rc);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

printf("Configuring AXL (second set of options)...\n");
if (AXL_Config(axl_config_values) == NULL) {
printf("AXL_Config() failed\n");
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

/* check all options once more */
Expand All @@ -90,29 +85,34 @@ main(void) {
printf("AXL_Config() failed to set %s: %lu != %lu\n",
AXL_KEY_CONFIG_FILE_BUF_SIZE, (long unsigned)axl_file_buf_size,
(long unsigned)(old_axl_file_buf_size + 1));
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

if (axl_debug != !old_axl_debug) {
printf("AXL_Config() failed to set %s: %d != %d\n",
AXL_KEY_CONFIG_DEBUG, axl_debug, !old_axl_debug);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

if (axl_make_directories != !old_axl_make_directories) {
printf("AXL_Config() failed to set %s: %d != %d\n",
AXL_KEY_CONFIG_MKDIR, axl_make_directories,
!old_axl_make_directories);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

if (axl_copy_metadata != !old_axl_copy_metadata) {
printf("AXL_Config() failed to set %s: %d != %d\n",
AXL_KEY_CONFIG_COPY_METADATA, axl_copy_metadata,
!old_axl_copy_metadata);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

kvtree_delete(&axl_config_values);
}

void get_global_options(void)
{
/* check that querying works (very similar to setter in library) */
static const char* known_options[] = {
AXL_KEY_CONFIG_FILE_BUF_SIZE,
Expand All @@ -128,7 +128,7 @@ main(void) {
kvtree *axl_configured_values = AXL_Config(NULL);
if (axl_configured_values == NULL) {
printf("AXL_Config() failed to get config\n");
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

unsigned long ul;
Expand All @@ -137,7 +137,7 @@ main(void) {
{
printf("Could not get %s from AXL_Config\n",
AXL_KEY_CONFIG_FILE_BUF_SIZE);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}
new_axl_file_buf_size = (size_t) ul;
if (new_axl_file_buf_size != ul) {
Expand All @@ -147,55 +147,55 @@ main(void) {
printf("Value '%s' passed for %s exceeds int range\n",
value, AXL_KEY_CONFIG_FILE_BUF_SIZE
);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}
if (new_axl_file_buf_size != old_axl_file_buf_size+1) {
printf("AXL_Config returned unexpected value %llu for %s. Expected %llu.\n",
(unsigned long long)new_axl_file_buf_size,
AXL_KEY_CONFIG_FILE_BUF_SIZE,
(unsigned long long)old_axl_file_buf_size+1);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

if (kvtree_util_get_int(axl_configured_values, AXL_KEY_CONFIG_DEBUG,
&new_axl_debug) != KVTREE_SUCCESS)
{
printf("Could not get %s from AXL_Config\n",
AXL_KEY_CONFIG_DEBUG);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}
if (new_axl_debug != !old_axl_file_buf_size) {
printf("AXL_Config returned unexpected value %d for %s. Expected %d.\n",
new_axl_debug, AXL_KEY_CONFIG_DEBUG, !old_axl_debug);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

if (kvtree_util_get_int(axl_configured_values, AXL_KEY_CONFIG_MKDIR,
&new_axl_make_directories) != KVTREE_SUCCESS)
{
printf("Could not get %s from AXL_Config\n",
AXL_KEY_CONFIG_MKDIR);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}
if (new_axl_make_directories != !old_axl_make_directories) {
printf("AXL_Config returned unexpected value %d for %s. Expected %d.\n",
new_axl_make_directories, AXL_KEY_CONFIG_MKDIR,
!old_axl_make_directories);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

if (kvtree_util_get_int(axl_configured_values, AXL_KEY_CONFIG_COPY_METADATA,
&new_axl_copy_metadata) != KVTREE_SUCCESS)
{
printf("Could not get %s from AXL_Config\n",
AXL_KEY_CONFIG_COPY_METADATA);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}
if (new_axl_copy_metadata != !old_axl_copy_metadata) {
printf("AXL_Config returned unexpected value %d for %s. Expected %d.\n",
new_axl_copy_metadata, AXL_KEY_CONFIG_COPY_METADATA,
!old_axl_copy_metadata);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

/* report all unknown options (typos?) */
Expand Down Expand Up @@ -226,16 +226,35 @@ main(void) {
kvtree_elem_key(elem),
kvtree_elem_key(kvtree_elem_first(kvtree_elem_hash(elem)))
);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}
}

kvtree_delete(&axl_configured_values);
}

int
main(void) {
int rc;

rc = AXL_Init();
if (rc != AXL_SUCCESS) {
printf("AXL_Init() failed (error %d)\n", rc);
exit(EXIT_FAILURE);
}

old_axl_file_buf_size = axl_file_buf_size;
old_axl_debug = axl_debug;
old_axl_make_directories = axl_make_directories;
old_axl_copy_metadata = axl_copy_metadata;

set_global_options();
get_global_options();

rc = AXL_Finalize();
if (rc != AXL_SUCCESS) {
printf("AXL_Finalize() failed (error %d)\n", rc);
return EXIT_FAILURE;
exit(EXIT_FAILURE);
}

return EXIT_SUCCESS;
Expand Down

0 comments on commit 3dc3045

Please sign in to comment.