feat: initial release of the scripts collection
Assisted-by: GLM 5.3 Flash
This commit is contained in:
@@ -0,0 +1,220 @@
|
||||
#!/usr/bin/perl
|
||||
# Stub commands for the sglang-deploy.pl rig. One file, dispatched by $0's basename,
|
||||
# so every stubbed tool answers from the fixture under /rig/fixture and /rig/state.
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
|
||||
# Everything this stub reads and writes lives in the work directory the rig exports to
|
||||
# the script under test, which is why it is read from the environment: the stub is
|
||||
# reached through a link named after the command it stands in for.
|
||||
my $RIG = $ENV{STUB_WORK} // '/tmp/sglang-rig';
|
||||
my $FIX = "$RIG/fixture";
|
||||
my $ST = "$RIG/state";
|
||||
my $LOG = "$RIG/log/stubs.log";
|
||||
|
||||
my ($name) = $0 =~ m{([^/]+)$};
|
||||
my @args = @ARGV;
|
||||
|
||||
sub log_call {
|
||||
if (open(my $fh, '>>', $LOG)) {
|
||||
print {$fh} "$name @args\n";
|
||||
close($fh);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
sub fixture_text {
|
||||
my ($file, $default) = @_;
|
||||
my $path = "$FIX/$file";
|
||||
return $default unless -f $path;
|
||||
open(my $fh, '<', $path) or return $default;
|
||||
local $/ = undef;
|
||||
my $text = <$fh>;
|
||||
close($fh);
|
||||
return defined $text ? $text : $default;
|
||||
}
|
||||
|
||||
# Image names carry slashes and colons, which are not file names; the marker files keep
|
||||
# the image identity without them.
|
||||
sub state_name { my ($name) = @_; $name =~ s{[/:]}{_}g; return $name }
|
||||
sub state_exists { return -e "$ST/" . state_name($_[0]) ? 1 : 0 }
|
||||
sub touch_state {
|
||||
my $fh;
|
||||
open($fh, '>', "$ST/" . state_name($_[0])) and close($fh);
|
||||
return;
|
||||
}
|
||||
sub drop_state { unlink("$ST/" . state_name($_[0])); return }
|
||||
|
||||
log_call();
|
||||
|
||||
if ($name eq 'lspci') {
|
||||
print fixture_text('gpu.txt', '');
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'rpm') {
|
||||
my $joined = join(' ', @args);
|
||||
if ($joined =~ /%\{VERSION\}/ && $joined =~ /rocm-runtime/) {
|
||||
my $version = fixture_text('rocm.txt', '');
|
||||
$version =~ s/\s+$//;
|
||||
exit 1 unless length $version;
|
||||
print "$version\n";
|
||||
exit 0;
|
||||
}
|
||||
my $pkg = $args[-1];
|
||||
my $installed = fixture_text('rpm-installed', '');
|
||||
if ($installed =~ /^\Q$pkg\E$/m) {
|
||||
print "$pkg-1.0-1.x86_64\n";
|
||||
exit 0;
|
||||
}
|
||||
print STDERR "package $pkg is not installed\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
if ($name eq 'dnf') {
|
||||
my @pkgs = grep { !/^-/ && $_ ne 'install' } @args;
|
||||
my $installed = fixture_text('rpm-installed', '');
|
||||
for my $pkg (@pkgs) {
|
||||
$installed .= "$pkg\n" unless $installed =~ /^\Q$pkg\E$/m;
|
||||
}
|
||||
if (open(my $fh, '>', "$FIX/rpm-installed")) {
|
||||
print {$fh} $installed;
|
||||
close($fh);
|
||||
}
|
||||
print "Installing: @pkgs\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'podman') {
|
||||
my $sub = $args[0] // '';
|
||||
if ($sub eq '--version') { print "podman version 5.8.4\n"; exit 0 }
|
||||
if ($sub eq 'pull') {
|
||||
my $image = $args[-1];
|
||||
touch_state("image.$image");
|
||||
print "Pulled $image\n";
|
||||
exit 0;
|
||||
}
|
||||
if ($sub eq 'image' && ($args[1] // '') eq 'exists') {
|
||||
exit(state_exists("image.$args[2]") ? 0 : 1);
|
||||
}
|
||||
if ($sub eq 'container' && ($args[1] // '') eq 'exists') {
|
||||
exit(state_exists("container.$args[2]") ? 0 : 1);
|
||||
}
|
||||
if ($sub eq 'rm') {
|
||||
my $target = $args[-1];
|
||||
drop_state("container.$target");
|
||||
print "$target\n";
|
||||
exit 0;
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'systemctl') {
|
||||
my @rest = grep { $_ !~ /^--/ } @args;
|
||||
my $verb = shift @rest // '';
|
||||
my $svc = $rest[0] // '';
|
||||
$svc =~ s/\.service$//;
|
||||
if ($verb eq 'is-active') { exit(state_exists("active.$svc") ? 0 : 1) }
|
||||
if ($verb eq 'is-enabled') { exit(state_exists("enabled.$svc") ? 0 : 1) }
|
||||
if ($verb eq 'start') { touch_state("active.$svc"); exit 0 }
|
||||
if ($verb eq 'stop') { drop_state("active.$svc"); exit 0 }
|
||||
if ($verb eq 'enable') { touch_state("enabled.$svc"); touch_state("active.$svc") if grep { $_ eq q{--now} } @args; exit 0 }
|
||||
if ($verb eq 'disable') { drop_state("enabled.$svc"); exit 0 }
|
||||
if ($verb eq 'try-restart') { exit(state_exists("active.$svc") ? 0 : 1) }
|
||||
if ($verb eq 'reload' || $verb eq 'daemon-reload') { exit 0 }
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'curl') {
|
||||
my ($url) = grep { /^https?:\/\// } @args;
|
||||
my $joined = join(' ', @args);
|
||||
$url //= '';
|
||||
if ($url =~ m{modelscope\.cn/api/v1/models/}) {
|
||||
my $code = fixture_text('ms.code', '200');
|
||||
$code =~ s/\s+$//;
|
||||
my $body = $joined =~ /__HTTP__/ ? fixture_text('ms.json', '{"Data":{"Name":"GLM-5.3"}}') : '';
|
||||
print $body;
|
||||
print "\n__HTTP__$code\n" if $joined =~ /__HTTP__/;
|
||||
exit 0;
|
||||
}
|
||||
if ($url =~ m{api\.github\.com}) {
|
||||
print fixture_text('releases.json', qq({"tag_name":"v0.5.19"}\n));
|
||||
exit 0;
|
||||
}
|
||||
if ($url =~ m{hub\.docker\.com}) {
|
||||
if (-f "$FIX/image-missing") {
|
||||
print STDERR "curl: (22) The requested URL returned error: 404\n";
|
||||
exit 22;
|
||||
}
|
||||
if ($url =~ /tags\?/) {
|
||||
# A tag listing, newest first: the rig's AMD development build.
|
||||
print qq({"results":[{"name":"v0.5.19-rocm724-gfx1151-20260916"}]}\n);
|
||||
exit 0;
|
||||
}
|
||||
print qq({"name":"ok"}\n);
|
||||
exit 0;
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'openssl') {
|
||||
my %want;
|
||||
for my $i (0 .. $#args) {
|
||||
if ($args[$i] eq '-keyout') { $want{key} = $args[$i + 1] }
|
||||
if ($args[$i] eq '-out') { $want{crt} = $args[$i + 1] }
|
||||
if ($args[$i] eq '-subj') { $want{subj} = $args[$i + 1] }
|
||||
if ($args[$i] eq '-addext') { $want{san} = $args[$i + 1] }
|
||||
}
|
||||
for my $kind (qw(key crt)) {
|
||||
my $path = $want{$kind};
|
||||
next unless defined $path;
|
||||
if (open(my $fh, '>', $path)) {
|
||||
print {$fh} "stub $kind $want{subj} $want{san}\n";
|
||||
close($fh);
|
||||
}
|
||||
else {
|
||||
print STDERR "can't open $path\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'nginx') {
|
||||
print "nginx: configuration file /etc/nginx/nginx.conf test is successful\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'firewall-cmd') {
|
||||
my $joined = join(' ', @args);
|
||||
if ($joined =~ /--list-services/) {
|
||||
print fixture_text('fw-services', "\n");
|
||||
exit 0;
|
||||
}
|
||||
if ($joined =~ /--add-service=https/) {
|
||||
my $fh;
|
||||
open($fh, q{>>}, "$FIX/fw-services") and print {$fh} "https\n" and close($fh);
|
||||
exit 0;
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'getenforce') {
|
||||
my $mode = $ENV{STUB_SELINUX} // 'Enforcing';
|
||||
print "$mode\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'getsebool') {
|
||||
my $value = state_exists('sebool') ? 'on' : 'off';
|
||||
print "httpd_can_network_connect --> $value\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($name eq 'setsebool') {
|
||||
touch_state('sebool');
|
||||
exit 0;
|
||||
}
|
||||
|
||||
exit 0;
|
||||
Reference in New Issue
Block a user