2 * This file is used to test simple I/O operation for accurate mode
22 g++ -g -Wall -I../../src -I../../src/lib -L../../src/lib justdisk.c -lbac -lpthread -lssl -D_TEST_OPEN
40 #define NB_ELT 50000000
47 static int my_cmp(void *item1, void *item2)
52 printf("cmp(%s, %s)\n", elt1->buf, elt2->buf);
53 return strcmp(elt1->buf, elt2->buf);
56 rblist *load_rb(const char *file)
62 lst = New(rblist(res, res->link));
64 fp = fopen(file, "r");
68 while (fgets(buffer, sizeof(buffer), fp)) {
70 int len = strlen(buffer);
72 buffer[len-1]=0; /* zap \n */
74 MY *buf = (MY *)malloc(sizeof(MY));
75 memset(buf, 0, sizeof(MY));
76 buf->buf = bstrdup(buffer);
77 res = (MY *)lst->insert(buf, my_cmp);
95 char *start_heap = (char *)sbrk(0);
97 rblist *rb_file = load_rb("files");
98 rblist *rb_path = load_rb("path");
100 char *etc = (char *)rb_path->search((void *)"/etc/", my_cmp);
104 fd = open("testfile", O_CREAT | O_RDWR, 0600);
106 perror("E: Can't open testfile ");
110 memset(&elt, 0, sizeof(elt));
113 for (i=0; i<NB_ELT; i++) {
114 write(fd, &elt, sizeof(elt));
117 lseek(fd, 0, SEEK_SET); /* rewind */
119 /* 2) load and update */
120 for (i=0; i<NB_ELT; i++) {
121 lseek(fd, i*sizeof(AccurateElt), SEEK_SET);
122 read(fd, &elt, sizeof(elt));
123 lseek(fd, i*sizeof(AccurateElt), SEEK_SET);
124 write(fd, &elt, sizeof(elt));
127 lseek(fd, 0, SEEK_SET); /* rewind */
129 /* 3) Fetch all of them */
130 for (i=0; i<NB_ELT; i++) {
131 read(fd, &elt, sizeof(elt));
136 fprintf(stderr, "heap;%lld\n", (long long)((char *)sbrk(0) - start_heap));
140 #else /* _TEST_OPEN */
146 fd = fopen("testfile", "w+");
148 perror("E: Can't open testfile ");
152 memset(&elt, 0, sizeof(elt));
155 printf("Loading...\n");
156 for (i=0; i<NB_ELT; i++) {
157 fwrite(&elt, sizeof(elt), 1, fd);
160 fseek(fd, 0, SEEK_SET); /* rewind */
162 /* 2) load and update */
163 printf("Load and update...\n");
164 for (i=0; i<NB_ELT; i++) {
165 fseek(fd, i*sizeof(AccurateElt), SEEK_SET);
166 fread(&elt, sizeof(elt), 1, fd);
167 fseek(fd, i*sizeof(AccurateElt), SEEK_SET);
168 fwrite(&elt, sizeof(elt), 1, fd);
171 fseek(fd, 0, SEEK_SET); /* rewind */
173 /* 3) Fetch all of them */
174 printf("Fetch them...\n");
175 for (i=0; i<NB_ELT; i++) {
176 fread(&elt, sizeof(elt), 1, fd);
182 #endif /* _TEST_OPEN */