Mercurial > dovecot > core-2.2
annotate src/lib/test-ostream-failure-at.c @ 23007:36e01285b5b8
lib: buffer - Improve header comment for buffer_insert() and buffer_delete().
author | Stephan Bosch <stephan.bosch@dovecot.fi> |
---|---|
date | Mon, 18 Mar 2019 00:52:37 +0100 |
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 */ |
18866
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "test-lib.h" |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "buffer.h" |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 #include "ostream.h" |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 #include "ostream-failure-at.h" |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 #define TEST_DATA_LENGTH 128 |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 #define TEST_ERRMSG "test-ostream-failure-at error triggered" |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 void test_ostream_failure_at(void) |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 { |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 unsigned char test_data[TEST_DATA_LENGTH]; |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 struct ostream *output, *buf_output; |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 buffer_t *buf = buffer_create_dynamic(pool_datastack_create(), 256); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 unsigned int i; |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 test_begin("ostream failure at"); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 for (i = 0; i < sizeof(test_data); i++) |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 test_data[i] = i; |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 for (i = 0; i < TEST_DATA_LENGTH; i++) { |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 buf_output = o_stream_create_buffer(buf); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
23 output = o_stream_create_failure_at(buf_output, i, TEST_ERRMSG); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 if (i > 0) |
18868
8076318a7b0e
lib: Compiler warning fix for test-ostream-failure-at.
Timo Sirainen <tss@iki.fi>
parents:
18866
diff
changeset
|
25 test_assert(o_stream_send(output, test_data, sizeof(test_data)) == (int)i); |
18866
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 test_assert_idx(o_stream_send(output, test_data, sizeof(test_data)) == -1 && |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 output->offset == i && |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 output->stream_errno == EIO && |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 strcmp(o_stream_get_error(output), TEST_ERRMSG) == 0, i); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 o_stream_destroy(&output); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 o_stream_destroy(&buf_output); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 } |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 /* shouldn't fail */ |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 buf_output = o_stream_create_buffer(buf); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 output = o_stream_create_failure_at(buf_output, TEST_DATA_LENGTH, TEST_ERRMSG); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 test_assert(o_stream_send(output, test_data, sizeof(test_data)) == TEST_DATA_LENGTH); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
37 test_assert(o_stream_flush(output) > 0 && |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 output->offset == TEST_DATA_LENGTH && |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
39 output->stream_errno == 0); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 o_stream_destroy(&output); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 o_stream_destroy(&buf_output); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 /* fail at flush */ |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 buf_output = o_stream_create_buffer(buf); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 output = o_stream_create_failure_at_flush(buf_output, TEST_ERRMSG); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 test_assert(o_stream_send(output, test_data, sizeof(test_data)) == TEST_DATA_LENGTH); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
47 test_assert(o_stream_flush(output) < 0 && output->stream_errno == EIO && |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
48 strcmp(o_stream_get_error(output), TEST_ERRMSG) == 0); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
49 o_stream_destroy(&output); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
50 o_stream_destroy(&buf_output); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
51 test_end(); |
1c7288c054b1
lib: Added o_stream_create_failure_at() to inject EIO at given offset in ostream
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
52 } |