13
13
along with this program; if not, write to the Free Software
14
14
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
18
17
#include <string.h>
19
18
#include <assert.h>
21
20
#include <string.h>
27
#if TIME_WITH_SYS_TIME
28
# include <sys/time.h>
32
# include <sys/time.h>
38
#include <boost/scoped_ptr.hpp>
21
#include <mysys/my_getopt.h>
23
#define ARCHIVE_ROW_HEADER_SIZE 4
40
25
#define COMMENT_STRING "Your bases"
41
26
#define FRM_STRING "My bases"
48
33
char test_string[BUFFER_LEN];
50
uint64_t row_lengths[]= {536870912LL, 2147483648LL, 4294967296LL, 8589934592LL};
51
uint64_t row_numbers[]= {524288LL, 2097152LL, 4194304LL, 8388608LL};
35
unsigned long long row_lengths[]= {536870912LL, 2147483648LL, 4294967296LL, 8589934592LL};
36
unsigned long long row_numbers[]= {524288LL, 2097152LL, 4194304LL, 8388608LL};
54
int size_test(uint64_t length, uint64_t rows_to_test_for, az_method method);
39
int size_test(unsigned long long length, unsigned long long rows_to_test_for, az_method method);
55
40
int small_test(az_method method);
56
41
long int timedif(struct timeval a, struct timeval b);
59
44
int main(int argc, char *argv[])
67
drizzled::internal::my_init();
70
56
for (method= AZ_METHOD_BLOCK; method < AZ_METHOD_MAX; method++)
75
61
printf("Testing %d\n", (int)method);
76
62
gettimeofday(&start_time, NULL);
77
small_test((az_method)method);
78
64
gettimeofday(&end_time, NULL);
79
65
timing= timedif(end_time, start_time);
80
66
printf("\tTime took %ld.%03ld seconds\n\n", timing / 1000, timing % 1000);
92
78
struct timeval start_time, end_time;
95
printf("Testing %"PRIu64" bytes with (%d)\n", row_lengths[x], (int)method);
81
printf("Testing %llu bytes with (%d)\n", row_lengths[x], (int)method);
96
82
gettimeofday(&start_time, NULL);
97
size_test(row_lengths[x], row_numbers[x], (az_method)method);
83
size_test(row_lengths[x], row_numbers[x], method);
98
84
gettimeofday(&end_time, NULL);
99
85
timing= timedif(end_time, start_time);
100
86
printf("\tTime took %ld.%03ld seconds\n\n", timing / 1000, timing % 1000);
104
drizzled::internal::my_end();
116
102
int written_rows= 0;
117
boost::scoped_ptr<azio_stream> writer_handle_ap(new azio_stream);
118
boost::scoped_ptr<azio_stream> reader_handle_ap(new azio_stream);
119
azio_stream &writer_handle= *writer_handle_ap.get();
120
azio_stream &reader_handle= *reader_handle_ap.get();
103
azio_stream writer_handle, reader_handle;
122
105
memcpy(test_string, TEST_STRING_INIT, 1024);
124
107
unlink(TEST_FILENAME);
126
if (!(ret= azopen(&writer_handle, TEST_FILENAME, O_CREAT|O_RDWR,
109
if (!(ret= azopen(&writer_handle, TEST_FILENAME, O_CREAT|O_RDWR|O_BINARY,
129
112
printf("Could not create test file\n");
133
azwrite_comment(&writer_handle, (char *)COMMENT_STRING,
116
azwrite_comment(&writer_handle, (char *)COMMENT_STRING,
134
117
(unsigned int)strlen(COMMENT_STRING));
135
118
azread_comment(&writer_handle, comment_str);
136
119
assert(!memcmp(COMMENT_STRING, comment_str,
137
120
strlen(COMMENT_STRING)));
139
azwrite_frm(&writer_handle, (char *)FRM_STRING,
122
azwrite_frm(&writer_handle, (char *)FRM_STRING,
140
123
(unsigned int)strlen(FRM_STRING));
141
124
azread_frm(&writer_handle, comment_str);
142
125
assert(!memcmp(FRM_STRING, comment_str,
143
126
strlen(FRM_STRING)));
146
if (!(ret= azopen(&reader_handle, TEST_FILENAME, O_RDONLY,
129
if (!(ret= azopen(&reader_handle, TEST_FILENAME, O_RDONLY|O_BINARY,
149
132
printf("Could not open test file\n");
191
174
azclose(&reader_handle);
193
if (!(ret= azopen(&reader_handle, TEST_FILENAME, O_RDONLY,
176
if (!(ret= azopen(&reader_handle, TEST_FILENAME, O_RDONLY|O_BINARY,
196
179
printf("Could not open test file\n");
245
228
assert(!memcmp(reader_handle.row_ptr, test_string, ret));
248
if (!(ret= azopen(&writer_handle, TEST_FILENAME, O_RDWR, method)))
231
if (!(ret= azopen(&writer_handle, TEST_FILENAME, O_RDWR|O_BINARY, method)))
250
233
printf("Could not open file (%s) for appending\n", TEST_FILENAME);
291
int size_test(uint64_t length, uint64_t rows_to_test_for,
274
int size_test(unsigned long long length, unsigned long long rows_to_test_for,
292
275
az_method method)
294
boost::scoped_ptr<azio_stream> writer_handle_ap(new azio_stream);
295
boost::scoped_ptr<azio_stream> reader_handle_ap(new azio_stream);
296
azio_stream &writer_handle= *writer_handle_ap.get();
297
azio_stream &reader_handle= *reader_handle_ap.get();
298
uint64_t write_length;
299
uint64_t read_length;
277
azio_stream writer_handle, reader_handle;
278
unsigned long long write_length;
279
unsigned long long read_length;
280
unsigned long long count;
301
281
unsigned int ret;
305
if (!(ret= azopen(&writer_handle, TEST_FILENAME,
306
O_CREAT|O_RDWR|O_TRUNC,
285
if (!(ret= azopen(&writer_handle, TEST_FILENAME,
286
O_CREAT|O_RDWR|O_TRUNC|O_BINARY,
309
289
printf("Could not create test file\n");
313
for (count= 0, write_length= 0; write_length < length ;
293
for (count= 0, write_length= 0; write_length < length ;
314
294
write_length+= ret)
328
308
assert(write_length == count * BUFFER_LEN); /* Number of rows time BUFFER_LEN */
329
309
azflush(&writer_handle, Z_SYNC_FLUSH);
331
if (!(ret= azopen(&reader_handle, TEST_FILENAME, O_RDONLY,
311
if (!(ret= azopen(&reader_handle, TEST_FILENAME, O_RDONLY|O_BINARY,
334
314
printf("Could not open test file\n");
338
318
/* We do a double loop to test speed */
339
319
for (x= 0, read_length= 0; x < 2; x++, read_length= 0)
321
unsigned long long count;
343
323
azread_init(&reader_handle);
344
for (read_count= 0; read_count < writer_handle.rows; read_count++)
324
for (count= 0; count < writer_handle.rows; count++)
346
326
ret= azread_row(&reader_handle, &error);
347
327
read_length+= ret;