annotate src/lib/test-multiplex.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: 22596
diff changeset
1 /* Copyright (c) 2017-2018 Dovecot authors, see the included COPYING file */
22553
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
2
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
3 #include "test-lib.h"
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
4 #include "ioloop.h"
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
5 #include "str.h"
22577
c6c9c24d6182 lib: iostream-multiplex tests - Fix hangs by setting the pipe fds non-blocking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22553
diff changeset
6 #include "fd-set-nonblock.h"
22553
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
7 #include "istream.h"
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
8 #include "istream-multiplex.h"
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
9 #include "ostream.h"
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
10 #include "ostream-multiplex.h"
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
11 #include "ostream.h"
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
12 #include "randgen.h"
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
13
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
14 #include <unistd.h>
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
15
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
16 struct test_channel {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
17 int fds[2];
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
18 unsigned int cid;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
19
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
20 struct istream *in;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
21 struct ostream *out;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
22 struct io *io;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
23
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
24 struct istream *in_alt;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
25 struct ostream *out_alt;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
26 struct io *io_alt;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
27
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
28 buffer_t *received;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
29 buffer_t *received_alt;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
30
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
31 unsigned int counter;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
32 };
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
33
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
34 static struct test_channel test_channel[2];
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
35
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
36 static void test_multiplex_channel_write(struct test_channel *channel)
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
37 {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
38 unsigned char buf[128];
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
39 size_t len = rand() % sizeof(buf);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
40 random_fill(buf, len);
22596
1a7bbda6284b iostream-multiplex: Check return values in tests
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22577
diff changeset
41 o_stream_nsend(channel->out, buf, len);
1a7bbda6284b iostream-multiplex: Check return values in tests
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22577
diff changeset
42 o_stream_nsend(channel->out_alt, buf, len);
22553
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
43 }
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
44
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
45 static void test_multiplex_stream_write(struct ostream *channel ATTR_UNUSED)
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
46 {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
47 if (test_channel[0].received->used > 1000 &&
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
48 test_channel[1].received->used > 1000)
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
49 io_loop_stop(current_ioloop);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
50 else
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
51 test_multiplex_channel_write(&test_channel[rand() % 2]);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
52 }
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
53
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
54 static void test_istream_multiplex_stream_read(struct test_channel *channel)
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
55 {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
56 const unsigned char *data = NULL;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
57 size_t siz = 0;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
58
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
59 if (i_stream_read(channel->in) > 0) {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
60 data = i_stream_get_data(channel->in, &siz);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
61 buffer_append(channel->received, data, siz);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
62 i_stream_skip(channel->in, siz);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
63 }
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
64 }
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
65
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
66 static void test_istream_read_alt(struct test_channel *channel)
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
67 {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
68 const unsigned char *data = NULL;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
69 size_t siz = 0;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
70
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
71 if (i_stream_read(channel->in_alt) > 0) {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
72 data = i_stream_get_data(channel->in_alt, &siz);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
73 buffer_append(channel->received_alt, data, siz);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
74 i_stream_skip(channel->in_alt, siz);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
75 }
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
76 }
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
77
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
78 static void setup_channel(struct test_channel *channel,
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
79 struct istream *is, struct ostream *os)
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
80 {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
81 /* setup first channel */
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
82 channel->in = is;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
83 channel->out = os;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
84 channel->io = io_add_istream(is, test_istream_multiplex_stream_read,
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
85 channel);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
86 test_assert(pipe(channel->fds) == 0);
22577
c6c9c24d6182 lib: iostream-multiplex tests - Fix hangs by setting the pipe fds non-blocking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22553
diff changeset
87 fd_set_nonblock(channel->fds[0], TRUE);
c6c9c24d6182 lib: iostream-multiplex tests - Fix hangs by setting the pipe fds non-blocking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22553
diff changeset
88 fd_set_nonblock(channel->fds[1], TRUE);
22553
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
89 channel->in_alt = i_stream_create_fd(channel->fds[0], (size_t)-1, FALSE);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
90 channel->out_alt = o_stream_create_fd(channel->fds[1], IO_BLOCK_SIZE, FALSE);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
91 channel->io_alt = io_add_istream(channel->in_alt, test_istream_read_alt,
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
92 channel);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
93 channel->received = buffer_create_dynamic(default_pool, 32768);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
94 channel->received_alt = buffer_create_dynamic(default_pool, 32768);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
95 }
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
96
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
97 static void teardown_channel(struct test_channel *channel)
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
98 {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
99 test_assert(memcmp(channel->received->data,
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
100 channel->received_alt->data,
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
101 channel->received->used) == 0);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
102 test_assert(channel->received->used == channel->received_alt->used);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
103
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
104 buffer_free(&channel->received);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
105 buffer_free(&channel->received_alt);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
106
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
107 io_remove(&channel->io);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
108 io_remove(&channel->io_alt);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
109 i_stream_unref(&channel->in);
22596
1a7bbda6284b iostream-multiplex: Check return values in tests
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22577
diff changeset
110 test_assert(o_stream_nfinish(channel->out) == 0);
22553
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
111 o_stream_unref(&channel->out);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
112 i_stream_unref(&channel->in_alt);
22596
1a7bbda6284b iostream-multiplex: Check return values in tests
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 22577
diff changeset
113 test_assert(o_stream_nfinish(channel->out_alt) == 0);
22553
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
114 o_stream_unref(&channel->out_alt);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
115 i_close_fd(&channel->fds[0]);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
116 i_close_fd(&channel->fds[1]);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
117 }
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
118
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
119 static void test_multiplex_stream(void) {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
120 test_begin("test multiplex (stream)");
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
121
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
122 struct ioloop *ioloop = io_loop_create();
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
123 io_loop_set_current(ioloop);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
124
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
125 int fds[2];
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
126 test_assert(pipe(fds) == 0);
22577
c6c9c24d6182 lib: iostream-multiplex tests - Fix hangs by setting the pipe fds non-blocking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22553
diff changeset
127 fd_set_nonblock(fds[0], TRUE);
c6c9c24d6182 lib: iostream-multiplex tests - Fix hangs by setting the pipe fds non-blocking
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22553
diff changeset
128 fd_set_nonblock(fds[1], TRUE);
22553
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
129 struct ostream *os = o_stream_create_fd(fds[1], (size_t)-1, FALSE);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
130 struct istream *is = i_stream_create_fd(fds[0], (size_t)-1, FALSE);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
131
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
132 struct istream *ichan0 = i_stream_create_multiplex(is, (size_t)-1);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
133 struct istream *ichan1 = i_stream_multiplex_add_channel(ichan0, 1);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
134 i_stream_unref(&is);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
135
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
136 struct ostream *ochan0 = o_stream_create_multiplex(os, 1024);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
137 struct ostream *ochan1 = o_stream_multiplex_add_channel(ochan0, 1);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
138 o_stream_unref(&os);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
139
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
140 struct io *io = io_add(fds[1], IO_WRITE, test_multiplex_stream_write, os);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
141
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
142 setup_channel(&test_channel[0], ichan0, ochan0);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
143 setup_channel(&test_channel[1], ichan1, ochan1);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
144
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
145 test_channel[0].cid = 0;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
146 test_channel[1].cid = 1;
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
147
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
148 io_loop_run(current_ioloop);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
149
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
150 io_remove(&io);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
151
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
152 teardown_channel(&test_channel[0]);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
153 teardown_channel(&test_channel[1]);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
154
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
155 io_loop_destroy(&ioloop);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
156
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
157 i_close_fd(&fds[0]);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
158 i_close_fd(&fds[1]);
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
159
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
160 test_end();
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
161 }
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
162
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
163 void test_multiplex(void) {
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
164 random_init();
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
165 test_multiplex_stream();
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
166 random_deinit();
7db517071db5 lib: Add multiplex stream support
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
167 }