+++ /dev/null
-/* SilcStack tests */
-
-#include "silc.h"
-
-#define NUM_ALLS 300
-
-int main(int argc, char **argv)
-{
- SilcBool success = FALSE;
- SilcStack stack, child, child2;
- void *ptr, *ptr2;
- int i;
-
- if (argc > 1 && !strcmp(argv[1], "-d")) {
- silc_log_debug(TRUE);
- silc_log_debug_hexdump(TRUE);
- silc_log_quick(TRUE);
- silc_log_set_debug_string("*stack*,*errno*");
- }
-
- SILC_LOG_DEBUG(("Allocating stack of default size (1024 bytes)"));
- stack = silc_stack_alloc(0, NULL);
- if (!stack)
- goto err;
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Allocating 2048 bytes from stack"));
- ptr = silc_smalloc(stack, 2048);
- if (!ptr)
- goto err;
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Freeing the stack"));
- silc_stack_free(stack);
-
- SILC_LOG_DEBUG(("Allocating stack of default size (1024 bytes)"));
- stack = silc_stack_alloc(0, NULL);
- if (!stack)
- goto err;
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Pushing and allocating %d times", NUM_ALLS));
- if (!silc_stack_push(stack, NULL))
- goto err;
- for (i = 0; i < NUM_ALLS; i++) {
- ptr2 = silc_smalloc(stack, (i + 1) * 7);
- if (!ptr2)
- goto err;
- }
- silc_stack_stats(stack);
- silc_stack_pop(stack);
- SILC_LOG_DEBUG(("Popping"));
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Pushing and allocating %d times", NUM_ALLS));
- if (!silc_stack_push(stack, NULL))
- goto err;
- for (i = 0; i < NUM_ALLS; i++) {
- ptr2 = silc_smalloc(stack, (i + 1) * 7);
- if (!ptr2)
- goto err;
- }
- silc_stack_stats(stack);
- silc_stack_pop(stack);
- SILC_LOG_DEBUG(("Popping"));
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Pushing %d times", NUM_ALLS / 2));
- for (i = 0; i < NUM_ALLS / 2; i++) {
- if (!silc_stack_push(stack, NULL))
- goto err;
- ptr2 = silc_smalloc(stack, (i + 1) * 7);
- if (!ptr2)
- goto err;
- }
- silc_stack_stats(stack);
- SILC_LOG_DEBUG(("Popping %d times", NUM_ALLS / 2));
- for (i = 0; i < NUM_ALLS / 2; i++)
- silc_stack_pop(stack);
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Pushing and reallocating %d times", NUM_ALLS / 10));
- ptr2 = NULL;
- if (!silc_stack_push(stack, NULL))
- goto err;
- for (i = 0; i < NUM_ALLS / 10; i++) {
- ptr2 = silc_srealloc(stack, (i * 7), ptr2, (i + 1) * 7);
- if (!ptr2)
- goto err;
- }
- silc_stack_stats(stack);
- silc_stack_pop(stack);
- SILC_LOG_DEBUG(("Popping"));
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Creating child stack"));
- child = silc_stack_alloc(8190, stack);
- if (!child)
- goto err;
- SILC_LOG_DEBUG(("Pushing %d times", NUM_ALLS / 2));
- for (i = 0; i < NUM_ALLS / 2; i++) {
- if (!silc_stack_push(child, NULL))
- goto err;
- ptr2 = silc_smalloc(child, (i + 1) * 7);
- if (!ptr2)
- goto err;
- }
- silc_stack_stats(child);
- SILC_LOG_DEBUG(("Popping %d times", NUM_ALLS / 2));
- for (i = 0; i < NUM_ALLS / 2; i++)
- silc_stack_pop(child);
- silc_stack_stats(child);
-
- SILC_LOG_DEBUG(("Pushing and reallocating %d times", NUM_ALLS / 10));
- ptr2 = NULL;
- if (!silc_stack_push(child, NULL))
- goto err;
- for (i = 0; i < NUM_ALLS / 10; i++) {
- ptr2 = silc_srealloc(child, (i * 7), ptr2, (i + 1) * 7);
- if (!ptr2)
- goto err;
- }
- ptr = silc_smalloc(child, 100000);
- silc_stack_stats(child);
- silc_stack_pop(child);
- SILC_LOG_DEBUG(("Popping"));
- silc_stack_stats(child);
- silc_stack_stats(stack);
- silc_stack_free(child);
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Creating child stack"));
- child = silc_stack_alloc(8192, stack);
- if (!child)
- goto err;
- SILC_LOG_DEBUG(("Pushing %d times", NUM_ALLS / 10));
- for (i = 0; i < NUM_ALLS / 10; i++) {
- if (!silc_stack_push(child, NULL))
- goto err;
- ptr2 = silc_smalloc(child, (i + 1) * 7);
- if (!ptr2)
- goto err;
- }
- silc_stack_stats(child);
- SILC_LOG_DEBUG(("Popping %d times", NUM_ALLS / 10));
- for (i = 0; i < NUM_ALLS / 10; i++)
- silc_stack_pop(child);
- silc_stack_stats(child);
-
- SILC_LOG_DEBUG(("Pushing and reallocating %d times", NUM_ALLS / 10));
- ptr2 = NULL;
- if (!silc_stack_push(child, NULL))
- goto err;
- for (i = 0; i < NUM_ALLS / 10; i++) {
- ptr2 = silc_srealloc(child, (i * 7), ptr2, (i + 1) * 7);
- if (!ptr2)
- goto err;
- }
- SILC_LOG_DEBUG(("Allocate child from child"));
- child2 = silc_stack_alloc(0, child);
- ptr = silc_smalloc(child2, 500000);
- silc_stack_stats(child2);
- silc_stack_free(child2);
- silc_stack_stats(child);
- silc_stack_pop(child);
- SILC_LOG_DEBUG(("Popping"));
- silc_stack_stats(child);
- silc_stack_stats(stack);
- silc_stack_free(child);
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Purge stack"));
- silc_stack_purge(stack);
- silc_stack_stats(stack);
-
- SILC_LOG_DEBUG(("Current alignment: %d", silc_stack_get_alignment(stack)));
- SILC_LOG_DEBUG(("Set alignemtn to 16"));
- silc_stack_set_alignment(stack, 16);
- SILC_LOG_DEBUG(("Current alignment: %d", silc_stack_get_alignment(stack)));
- SILC_LOG_DEBUG(("Allocate 1 byte"));
- ptr = silc_smalloc(stack, 1);
- SILC_LOG_DEBUG(("Allocate 1 byte, check alignment"));
- ptr2 = silc_smalloc(stack, 1);
- if (ptr2 - ptr < 16) {
- SILC_LOG_DEBUG(("Bad alignment"));
- goto err;
- }
- SILC_LOG_DEBUG(("Alignment (ptr, ptr2) is %d", ptr2 - ptr));
- SILC_LOG_DEBUG(("Allocate 1 byte, check alignment"));
- ptr2 = silc_smalloc(stack, 1);
- if (ptr2 - ptr < 32) {
- SILC_LOG_DEBUG(("Bad alignment"));
- goto err;
- }
- SILC_LOG_DEBUG(("Alignment (ptr, ptr2) is %d", ptr2 - ptr));
-
- SILC_LOG_DEBUG(("Freeing the stack"));
- silc_stack_free(stack);
-
- success = TRUE;
-
- err:
- SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
- fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");
-
- return success;
-}