Mercurial > dovecot > core-2.2
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 |
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 } |