示例#1
0
/*
 * Random test:
 * - p = number of polynomials to activate first
 * - n = number of random operations
 */
static void random_test(uint32_t n, uint32_t p) {
  printf("*******************\n");
  printf("    RANDOM TESTS\n");
  printf("*******************\n\n");

  init_test_bench(&bench, &poly_table);

  random_activate(&bench, p);
  while (n > 0) {
    random_op(&bench);
    n --;
  }

  // final step: propagate
  if (! bench.mngr_conflict) {
    test_propagate(&bench);
  }

  delete_test_bench(&bench);
}
示例#2
0
int main(void) {
    int i, * ptr;
    op_t op;
    void * addr;

    init_mem();
    srand(time(NULL));

    for (i = 0; i < NPTRS; i++) {
        ptrs[i] = NULL;
    }

    printf("STAGE #1: RANDOM OPERATIONS:\n"
           "============================\n");
    for (i = 0; i < NLOOPS; i++) {
        op = random_op();
        perform_op(op);
    }
    printf("\n\n\n");

    printf("STAGE #2: BOUNDARY CASES:\n"
           "=========================\n\n");

    printf("BOUNDARY CASE #1: ALLOCATING MEMORY WHEN FULL:\n\n");
    printf("Trying to allocate POOL_SIZE = %d bytes of memory...\n", POOL_SIZE);
    ptr = mem_malloc(POOL_SIZE);
    if (! ptr) {
        fprintf(stderr, "\nBoundary case verified: memory full\n");
    }
    else {
        printf("%d bytes of memory allocated successfully.\n", POOL_SIZE);
        mem_stat();
        printf("\nTrying again to allocate POOL_SIZE = %d bytes of memory...\n", POOL_SIZE);
        ptr = mem_malloc(POOL_SIZE);
        if (! ptr) {
            fprintf(stderr, "\nBoundary case verified: memory full\n");
        }
    }
    printf("\n\n");

    printf("BOUNDARY CASE #2: FREEING ALREADY FREED MEMORY:\n\n");
    if (count > 0) {
        printf("First trying to free existing memory at ptrs[0]...\n");
        mem_free(ptrs[0]);
        printf("mem_free() successful.\n");
        mem_stat();
        printf("Now trying to free already freed memory at ptrs[0]...\n");
        mem_free(ptrs[0]);
    }
    else {
        printf("Trying to free already freed memory at ptrs[0]...\n");
        mem_free(ptrs[0]);
    }
    printf("\nBoundary case verified: freeing already freed memory\n\n\n");

    printf("BOUNDARY CASE #3: FREEING AN INVALID POINTER:\n\n");
    addr = (void *) 0x30; /* random memory address */
    printf("Trying to free invalid pointer %p...\n", addr);
    mem_free(addr);
    printf("\nBoundary case verified: freeing an invalid pointer\n");

    return 0;
}