1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdio.h>
3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdlib.h>
4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* The original test driver machinery. */
6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define N_TEST_TRANSACTIONS 500
7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define N_TEST_ARR 2000
8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define M_TEST_MALLOC 1000
10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid* test_arr[N_TEST_ARR];
12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main ( int argc, char** argv )
14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   int i, j, k, nbytes;
16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned char* chp;
17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < N_TEST_ARR; i++)
19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      test_arr[i] = NULL;
20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < N_TEST_TRANSACTIONS; i++) {
22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      j = random() % N_TEST_ARR;
23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      if (test_arr[j]) {
24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         free(test_arr[j]);
25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         test_arr[j] = NULL;
26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      } else {
27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         nbytes = 1 + random() % M_TEST_MALLOC;
28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         if (random()%64 == 32)
29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            nbytes *= 17;
30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         test_arr[j] = malloc( nbytes );
31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         chp = test_arr[j];
32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         for (k = 1; k < nbytes; k++)
33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            chp[k] = (unsigned char)(k + 99);
34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      }
35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; test_arr[i] == NULL; i++) ;
38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   free(test_arr[i]);
39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   ((char*)test_arr[i])[0] = 0;
40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < N_TEST_ARR; i++) {
42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      if (test_arr[i]) {
43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         free(test_arr[i]);
44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         test_arr[i] = NULL;
45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      }
46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   return 0;
49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
50