12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/usr/bin/env perl
- use v5.36;
- use Data::Dumper;
- my $max_reqs = $ENV{MAX_REQS};
- my $test_name = $ENV{TEST_NAME};
- my $socket_file = $ENV{SOCKET_FILE};
- my $app_runner = 'app.psgi';
- my $max_workers = `nproc`;
- chomp $max_workers;
- my %runner_map = (
- gazelle => [
- 'start_server',
- '--path' => $socket_file,
- '--backlog' => 16384,
- '--',
- 'plackup',
- '-E' => 'production',
- '-s' => 'Gazelle',
- '--max-workers' => $max_workers,
- '--max-reqs-per-child' => $max_reqs,
- '-a' => $app_runner,
- ],
- starman => [
- 'start_server',
- '--backlog' => 16384,
- '--',
- 'plackup',
- '-E' => 'production',
- '-s' => 'Starman',
- '-l' => $socket_file,
- '--workers' => $max_workers,
- '--max-requests' => $max_reqs,
- '-a' => $app_runner,
- ],
- starlet => [
- 'start_server',
- '--path' => $socket_file,
- '--backlog' => 16384,
- '--',
- 'plackup',
- '-E' => 'production',
- '-s' => 'Starlet',
- '--max-workers' => $max_workers,
- '--max-reqs-per-child' => $max_reqs,
- '-a' => $app_runner,
- ],
- # NOTE: twiggy does not play well with Server::Starter
- # NOTE: twiggy couldn't pass update tests, so I disabled them
- twiggy => [
- 'plackup',
- '-E' => 'production',
- '-s' => 'Twiggy::Prefork',
- '-l' => $socket_file,
- '--backlog' => 16384,
- '--max-workers' => $max_workers,
- '--max-reqs-per-child' => $max_reqs,
- '-a' => $app_runner,
- ],
- );
- # default is gazelle-mysql (techempower will warn if there is no default)
- $test_name = 'kelp-gazelle-mysql'
- if $test_name eq 'kelp';
- die "invalid test name $test_name"
- unless $test_name =~ m{^kelp-(\w+)-(\w+)$};
- die 'database mismatch'
- unless $2 eq $ENV{DATABASE};
- my $command = $runner_map{$1};
- die "invalid server $1"
- unless $command;
- say 'Running command: ' . Dumper($command);
- exec @$command;
|