Skip to content

Commit 6c1470b

Browse files
committed
upipe_http_src_test: add parallel request support
1 parent f565435 commit 6c1470b

File tree

1 file changed

+35
-24
lines changed

1 file changed

+35
-24
lines changed

tests/upipe_http_src_test.c

Lines changed: 35 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ enum opt {
9393
OPT_HELP = 'h',
9494
OPT_VERBOSE = 'v',
9595
OPT_QUIET = 'q',
96+
OPT_PARALLEL = 'p',
9697
OPT_USE_BEARSSL = 0x100,
9798
OPT_USE_OPENSSL,
9899
};
@@ -101,6 +102,7 @@ static struct option options[] = {
101102
{ "help", no_argument, NULL, OPT_HELP },
102103
{ "verbose", no_argument, NULL, OPT_VERBOSE },
103104
{ "quiet", no_argument, NULL, OPT_QUIET },
105+
{ "parallel", required_argument, NULL, OPT_PARALLEL },
104106
{ "use-bearssl", no_argument, NULL, OPT_USE_BEARSSL },
105107
{ "use-openssl", no_argument, NULL, OPT_USE_OPENSSL },
106108
{ 0, 0, 0, 0 },
@@ -121,9 +123,9 @@ static int usage(const char *name)
121123

122124
int main(int argc, char *argv[])
123125
{
124-
const char *url;
125126
int opt;
126127
int index;
128+
int parallel = 1;
127129
#ifdef UPIPE_HAVE_BEARSSL_H
128130
bool use_bearssl = true;
129131
#endif
@@ -134,7 +136,7 @@ int main(int argc, char *argv[])
134136
/*
135137
* parse options
136138
*/
137-
while ((opt = getopt_long(argc, argv, "hvq", options, &index)) != -1) {
139+
while ((opt = getopt_long(argc, argv, "hvqp:", options, &index)) != -1) {
138140
switch (opt) {
139141
case OPT_HELP:
140142
usage(argv[0]);
@@ -151,6 +153,10 @@ int main(int argc, char *argv[])
151153
log_level++;
152154
break;
153155

156+
case OPT_PARALLEL:
157+
parallel = atoi(optarg);
158+
break;
159+
154160
#ifdef UPIPE_HAVE_BEARSSL_H
155161
case OPT_USE_BEARSSL:
156162
use_bearssl = true;
@@ -185,7 +191,6 @@ int main(int argc, char *argv[])
185191
exit(EXIT_FAILURE);
186192
return -1;
187193
}
188-
url = argv[optind];
189194

190195
struct umem_mgr *umem_mgr = umem_alloc_mgr_alloc();
191196
assert(umem_mgr != NULL);
@@ -208,6 +213,9 @@ int main(int argc, char *argv[])
208213
assert(logger != NULL);
209214
logger = uprobe_upump_mgr_alloc(logger, upump_mgr);
210215
assert(logger != NULL);
216+
logger = uprobe_ubuf_mem_alloc(logger, umem_mgr, UBUF_POOL_DEPTH,
217+
UBUF_POOL_DEPTH);
218+
assert(logger != NULL);
211219
logger = uprobe_http_redir_alloc(logger);
212220
assert(logger);
213221
#ifdef UPIPE_HAVE_BEARSSL_H
@@ -224,31 +232,34 @@ int main(int argc, char *argv[])
224232
}
225233
#endif
226234

227-
logger = uprobe_ubuf_mem_alloc(logger, umem_mgr, UBUF_POOL_DEPTH,
228-
UBUF_POOL_DEPTH);
229-
assert(logger != NULL);
230-
231-
struct upipe_mgr *upipe_fsink_mgr = upipe_fsink_mgr_alloc();
232-
struct upipe *upipe_fsink = upipe_void_alloc(
233-
upipe_fsink_mgr,
234-
uprobe_pfx_alloc(uprobe_use(logger), log_level, "fsink"));
235-
upipe_mgr_release(upipe_fsink_mgr);
236-
ubase_assert(upipe_fsink_set_path(
237-
upipe_fsink, "/dev/stdout", UPIPE_FSINK_OVERWRITE));
235+
struct upipe *sources[parallel];
236+
for (int i = 0; i < parallel; i++) {
237+
for (int j = optind; j < argc; j++) {
238+
struct upipe_mgr *upipe_fsink_mgr = upipe_fsink_mgr_alloc();
239+
struct upipe *upipe_fsink = upipe_void_alloc(
240+
upipe_fsink_mgr,
241+
uprobe_pfx_alloc(uprobe_use(logger), log_level, "fsink"));
242+
upipe_mgr_release(upipe_fsink_mgr);
243+
ubase_assert(upipe_fsink_set_path(
244+
upipe_fsink, "/dev/stdout", UPIPE_FSINK_OVERWRITE));
238245

239-
struct upipe_mgr *upipe_http_src_mgr = upipe_http_src_mgr_alloc();
240-
struct upipe *upipe_http_src = upipe_void_alloc(upipe_http_src_mgr,
241-
uprobe_pfx_alloc(uprobe_use(logger), log_level, "http"));
242-
upipe_mgr_release(upipe_http_src_mgr); // nop
243-
assert(upipe_http_src != NULL);
244-
ubase_assert(upipe_set_output_size(upipe_http_src, READ_SIZE));
245-
ubase_assert(upipe_set_uri(upipe_http_src, url));
246-
ubase_assert(upipe_set_output(upipe_http_src, upipe_fsink));
247-
upipe_release(upipe_fsink);
246+
struct upipe_mgr *upipe_http_src_mgr = upipe_http_src_mgr_alloc();
247+
sources[i] = upipe_void_alloc(
248+
upipe_http_src_mgr,
249+
uprobe_pfx_alloc(uprobe_use(logger), log_level, "http"));
250+
upipe_mgr_release(upipe_http_src_mgr); // nop
251+
assert(sources[i] != NULL);
252+
ubase_assert(upipe_set_output_size(sources[i], READ_SIZE));
253+
ubase_assert(upipe_set_uri(sources[i], argv[j]));
254+
ubase_assert(upipe_set_output(sources[i], upipe_fsink));
255+
upipe_release(upipe_fsink);
256+
}
257+
}
248258

249259
upump_mgr_run(upump_mgr, NULL);
250260

251-
upipe_release(upipe_http_src);
261+
for (int i = 0; i < parallel; i++)
262+
upipe_release(sources[i]);
252263

253264
upump_mgr_release(upump_mgr);
254265
uref_mgr_release(uref_mgr);

0 commit comments

Comments
 (0)