unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
* [PATCH 01/11] xt/solver: test with public-inbox-httpd, too
  2020-09-09  6:26 [PATCH 00/11] httpd: further reduce event loop monopolization Eric Wong
@ 2020-09-09  6:26 ` Eric Wong
  0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2020-09-09  6:26 UTC (permalink / raw)
  To: meta

We'll be making changes to solver to make it even fairer
to slow clients on slow storage.  Ensure we test with
public-inbox-httpd-specific codepaths, since the generic
PSGI code paths are rare in production use.
---
 xt/solver.t | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/xt/solver.t b/xt/solver.t
index d2206b28..99fca0d3 100644
--- a/xt/solver.t
+++ b/xt/solver.t
@@ -33,11 +33,11 @@ my $todo = {
 	],
 };
 
-my ($ibx, $urls);
+my ($ibx_name, $urls, @gone);
 my $client = sub {
 	my ($cb) = @_;
 	for (@$urls) {
-		my $url = "/$ibx/$_";
+		my $url = "/$ibx_name/$_";
 		my $res = $cb->(GET($url));
 		is($res->code, 200, $url);
 		next if $res->code == 200;
@@ -46,14 +46,33 @@ my $client = sub {
 	}
 };
 
-while (($ibx, $urls) = each %$todo) {
+my $nr = 0;
+while (($ibx_name, $urls) = each %$todo) {
 	SKIP: {
-		if (!$cfg->lookup_name($ibx)) {
-			skip("$ibx not configured", scalar(@$urls));
+		if (!$cfg->lookup_name($ibx_name)) {
+			push @gone, $ibx_name;
+			skip("$ibx_name not configured", scalar(@$urls));
 		}
 		test_psgi($app, $client);
+		$nr++;
+	}
+}
+
+SKIP: {
+	require_mods(qw(Plack::Test::ExternalServer), $nr);
+	delete @$todo{@gone};
+
+	my $sock = tcp_server() or BAIL_OUT $!;
+	my ($tmpdir, $for_destroy) = tmpdir();
+	my ($out, $err) = map { "$tmpdir/std$_.log" } qw(out err);
+	my $cmd = [ qw(-httpd -W0), "--stdout=$out", "--stderr=$err" ];
+	my $td = start_script($cmd, undef, { 3 => $sock });
+	my ($h, $p) = ($sock->sockhost, $sock->sockport);
+
+	local $ENV{PLACK_TEST_EXTERNALSERVER_URI} = "http://$h:$p";
+	while (($ibx_name, $urls) = each %$todo) {
+		Plack::Test::ExternalServer::test_psgi(client => $client);
 	}
 }
 
 done_testing();
-1;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-09-09  6:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-09  6:26 [PATCH 00/11] httpd: further reduce event loop monopolization Eric Wong
2020-09-09  6:26 ` [PATCH 01/11] xt/solver: test with public-inbox-httpd, too Eric Wong

unofficial mirror of meta@public-inbox.org

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhetil.org/meta

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 meta meta/ https://yhetil.org/meta \
		meta@public-inbox.org
	public-inbox-index meta

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.mail.public-inbox.meta
	nntp://news.public-inbox.org/inbox.mail.public-inbox.meta
	nntp://news.gmane.io/gmane.mail.public-inbox.general


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git