annotate src/lib/test-istream-failure-at.c @ 22955:812e5c961328

fts: Indexing virtual mailbox didn't always index the last mails
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 03 May 2018 18:33:00 +0300
parents cb108f786fb4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22713
cb108f786fb4 Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 21390
diff changeset
1 /* Copyright (c) 2015-2018 Dovecot authors, see the included COPYING file */
18865
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "test-lib.h"
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "istream.h"
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 #include "istream-failure-at.h"
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 #define TEST_DATA_LENGTH 128
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 #define TEST_ERRMSG "test-istream-failure-at error triggered"
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 void test_istream_failure_at(void)
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 {
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12 struct istream *input, *data_input;
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 unsigned char test_data[TEST_DATA_LENGTH];
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 unsigned int i;
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15 ssize_t ret;
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 test_begin("istream failure at");
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18 for (i = 0; i < sizeof(test_data); i++)
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 test_data[i] = i;
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20 data_input = i_stream_create_from_data(test_data, sizeof(test_data));
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21 for (i = 0; i < TEST_DATA_LENGTH; i++) {
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22 i_stream_seek(data_input, 0);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 input = i_stream_create_failure_at(data_input, i, TEST_ERRMSG);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24 while ((ret = i_stream_read(input)) > 0)
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 i_stream_skip(input, ret);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26 test_assert_idx(ret == -1 && input->v_offset == i &&
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27 input->stream_errno == EIO &&
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28 strcmp(i_stream_get_error(input), TEST_ERRMSG) == 0, i);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 i_stream_destroy(&input);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30 }
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31 /* shouldn't fail */
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32 i_stream_seek(data_input, 0);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33 input = i_stream_create_failure_at(data_input, TEST_DATA_LENGTH, TEST_ERRMSG);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34 while ((ret = i_stream_read(input)) > 0)
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35 i_stream_skip(input, ret);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
36 test_assert(ret == -1 && input->stream_errno == 0);
19363
416399bf1643 lib: make test-istream-failure-at not leak memory
Phil Carmody <phil@dovecot.fi>
parents: 18865
diff changeset
37 i_stream_destroy(&input);
18865
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 /* fail at EOF */
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 i_stream_seek(data_input, 0);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40 input = i_stream_create_failure_at_eof(data_input, TEST_ERRMSG);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41 while ((ret = i_stream_read(input)) > 0)
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42 i_stream_skip(input, ret);
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43 test_assert_idx(ret == -1 && input->v_offset == TEST_DATA_LENGTH &&
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44 input->stream_errno == EIO &&
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
45 strcmp(i_stream_get_error(input), TEST_ERRMSG) == 0, i);
19363
416399bf1643 lib: make test-istream-failure-at not leak memory
Phil Carmody <phil@dovecot.fi>
parents: 18865
diff changeset
46 i_stream_destroy(&input);
416399bf1643 lib: make test-istream-failure-at not leak memory
Phil Carmody <phil@dovecot.fi>
parents: 18865
diff changeset
47 i_stream_destroy(&data_input);
18865
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 test_end();
99827acc1888 lib: Added i_stream_create_failure_at() to inject EIO at given offset in istream.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 }