Add t/axmap tester
[fio.git] / t / stest.c
CommitLineData
fbc2792b
JA
1#include <stdio.h>
2#include <stdlib.h>
3#include <assert.h>
4
5#include "../smalloc.h"
6#include "../flist.h"
7
8FILE *f_err;
39ab7da2
JA
9struct timeval *fio_tv = NULL;
10unsigned int fio_debug = 0;
fbc2792b
JA
11
12#define MAGIC1 0xa9b1c8d2
13#define MAGIC2 0xf0a1e9b3
14
15#define LOOPS 32
16
17struct elem {
18 unsigned int magic1;
19 struct flist_head list;
20 unsigned int magic2;
21};
22
23FLIST_HEAD(list);
24
25static int do_rand_allocs(void)
26{
27 unsigned int size, nr, rounds = 0;
28 unsigned long total;
29 struct elem *e;
30
31 while (rounds++ < LOOPS) {
32#ifdef STEST_SEED
33 srand(MAGIC1);
34#endif
35 nr = total = 0;
36 while (total < 128*1024*1024UL) {
37 size = 8 * sizeof(struct elem) + (int) (999.0 * (rand() / (RAND_MAX + 1.0)));
38 e = smalloc(size);
39 if (!e) {
40 printf("fail at %lu, size %u\n", total, size);
41 break;
42 }
43 e->magic1 = MAGIC1;
44 e->magic2 = MAGIC2;
45 total += size;
46 flist_add_tail(&e->list, &list);
47 nr++;
48 }
49
50 printf("Got items: %u\n", nr);
51
52 while (!flist_empty(&list)) {
53 e = flist_entry(list.next, struct elem, list);
54 assert(e->magic1 == MAGIC1);
55 assert(e->magic2 == MAGIC2);
56 flist_del(&e->list);
57 sfree(e);
58 }
59 }
60
61 return 0;
62}
63
64static int do_specific_alloc(unsigned long size)
65{
66 void *ptr;
67
68 ptr = smalloc(size);
69 sfree(ptr);
70 return 0;
71}
72
73int main(int argc, char *argv[])
74{
75 f_err = stderr;
76
77 sinit();
78
79 do_rand_allocs();
80
81 /* smalloc bug, commit 271067a6 */
82 do_specific_alloc(671386584);
83
84 scleanup();
85 return 0;
86}
39ab7da2
JA
87
88void __dprint(int type, const char *str, ...)
89{
90}