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
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 */
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 }