mirror of
https://github.com/hoytech/strfry.git
synced 2025-06-18 17:27:11 +00:00
testing for scans with limits
This commit is contained in:
@ -8,8 +8,6 @@ use IPC::Open2;
|
|||||||
|
|
||||||
# ./strfry export|perl -MJSON::XS -nE '$z=decode_json($_); for my $t (@{$z->{tags}}) { say $t->[1] if $t->[0] eq "e"}'|sort|uniq -c|sort -rn|head -50|perl -nE '/\d+\s+(\w+)/ && say $1'
|
# ./strfry export|perl -MJSON::XS -nE '$z=decode_json($_); for my $t (@{$z->{tags}}) { say $t->[1] if $t->[0] eq "e"}'|sort|uniq -c|sort -rn|head -50|perl -nE '/\d+\s+(\w+)/ && say $1'
|
||||||
|
|
||||||
# Don't forget to set 'maxFilterLimit = 1000000000000' in config
|
|
||||||
|
|
||||||
|
|
||||||
my $kinds = [qw/1 7 4 42 0 30 3 6/];
|
my $kinds = [qw/1 7 4 42 0 30 3 6/];
|
||||||
|
|
||||||
@ -90,7 +88,9 @@ c1e5e04d92d9bd20701bff4cbdac1cdc317d405035883b7adcf9a6a5308d0f54
|
|||||||
}];
|
}];
|
||||||
|
|
||||||
sub genRandomFilterGroup {
|
sub genRandomFilterGroup {
|
||||||
my $numFilters = (rand()*10)+1;
|
my $useLimit = shift;
|
||||||
|
|
||||||
|
my $numFilters = $useLimit ? 1 : (rand()*10)+1;
|
||||||
|
|
||||||
my @filters;
|
my @filters;
|
||||||
for (1..$numFilters) {
|
for (1..$numFilters) {
|
||||||
@ -100,14 +100,14 @@ sub genRandomFilterGroup {
|
|||||||
if (rand() < .15) {
|
if (rand() < .15) {
|
||||||
$f->{ids} = [];
|
$f->{ids} = [];
|
||||||
for (1..(rand()*10)) {
|
for (1..(rand()*10)) {
|
||||||
push @{$f->{ids}}, randPrefix($ids->[int(rand() * @$ids)]);
|
push @{$f->{ids}}, randPrefix($ids->[int(rand() * @$ids)], $useLimit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rand() < .3) {
|
if (rand() < .3) {
|
||||||
$f->{authors} = [];
|
$f->{authors} = [];
|
||||||
for (1..(rand()*5)) {
|
for (1..(rand()*5)) {
|
||||||
push @{$f->{authors}}, randPrefix($pubkeys->[int(rand() * @$pubkeys)]);
|
push @{$f->{authors}}, randPrefix($pubkeys->[int(rand() * @$pubkeys)], $useLimit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,6 +141,10 @@ sub genRandomFilterGroup {
|
|||||||
$f->{until} = 1640300802 + int(rand() * 86400*365);
|
$f->{until} = 1640300802 + int(rand() * 86400*365);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($useLimit) {
|
||||||
|
$f->{limit} = 1 + int(rand() * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
if ($f->{since} && $f->{until} && $f->{since} > $f->{until}) {
|
if ($f->{since} && $f->{until} && $f->{since} > $f->{until}) {
|
||||||
delete $f->{since};
|
delete $f->{since};
|
||||||
delete $f->{until};
|
delete $f->{until};
|
||||||
@ -154,7 +158,8 @@ sub genRandomFilterGroup {
|
|||||||
|
|
||||||
sub randPrefix {
|
sub randPrefix {
|
||||||
my $v = shift;
|
my $v = shift;
|
||||||
return $v if rand() < .5;
|
my $noPrefix = shift;
|
||||||
|
return $v if $noPrefix || rand() < .5;
|
||||||
return substr($v, 0, (int(rand() * 20) + 1) * 2);
|
return substr($v, 0, (int(rand() * 20) + 1) * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,8 +195,10 @@ sub testScan {
|
|||||||
#print JSON::XS->new->pretty(1)->encode($fg);
|
#print JSON::XS->new->pretty(1)->encode($fg);
|
||||||
print "$fge\n";
|
print "$fge\n";
|
||||||
|
|
||||||
my $resA = `./strfry export 2>/dev/null | perl test/dumbFilter.pl '$fge' | jq -r .pubkey | sort | sha256sum`;
|
my $headCmd = @$fg == 1 && $fg->[0]->{limit} ? "| head -n $fg->[0]->{limit}" : "";
|
||||||
my $resB = `./strfry scan '$fge' | jq -r .pubkey | sort | sha256sum`;
|
|
||||||
|
my $resA = `./strfry export --reverse 2>/dev/null | perl test/dumbFilter.pl '$fge' $headCmd | jq -r .id | sort | sha256sum`;
|
||||||
|
my $resB = `./strfry scan --metrics '$fge' | jq -r .id | sort | sha256sum`;
|
||||||
|
|
||||||
print "$resA\n$resB\n";
|
print "$resA\n$resB\n";
|
||||||
|
|
||||||
@ -212,7 +219,7 @@ sub testMonitor {
|
|||||||
print "filt: $fge\n\n";
|
print "filt: $fge\n\n";
|
||||||
|
|
||||||
print "DOING MONS\n";
|
print "DOING MONS\n";
|
||||||
my $pid = open2(my $outfile, my $infile, './strfry monitor | jq -r .pubkey | sort | sha256sum');
|
my $pid = open2(my $outfile, my $infile, './strfry monitor | jq -r .id | sort | sha256sum');
|
||||||
for my $c (@$monCmds) { print $infile encode_json($c), "\n"; }
|
for my $c (@$monCmds) { print $infile encode_json($c), "\n"; }
|
||||||
close($infile);
|
close($infile);
|
||||||
|
|
||||||
@ -223,7 +230,7 @@ sub testMonitor {
|
|||||||
die "monitor cmd died" if $child_exit_status;
|
die "monitor cmd died" if $child_exit_status;
|
||||||
|
|
||||||
print "DOING SCAN\n";
|
print "DOING SCAN\n";
|
||||||
my $resB = `./strfry scan '$fge' 2>/dev/null | jq -r .pubkey | sort | sha256sum`;
|
my $resB = `./strfry scan '$fge' 2>/dev/null | jq -r .id | sort | sha256sum`;
|
||||||
|
|
||||||
print "$resA\n$resB\n";
|
print "$resA\n$resB\n";
|
||||||
|
|
||||||
@ -246,6 +253,11 @@ if ($cmd eq 'scan') {
|
|||||||
my $fg = genRandomFilterGroup();
|
my $fg = genRandomFilterGroup();
|
||||||
testScan($fg);
|
testScan($fg);
|
||||||
}
|
}
|
||||||
|
} elsif ($cmd eq 'scan-limit') {
|
||||||
|
while (1) {
|
||||||
|
my $fg = genRandomFilterGroup(1);
|
||||||
|
testScan($fg);
|
||||||
|
}
|
||||||
} elsif ($cmd eq 'monitor') {
|
} elsif ($cmd eq 'monitor') {
|
||||||
while (1) {
|
while (1) {
|
||||||
my ($monCmds, $interestFg) = genRandomMonitorCmds();
|
my ($monCmds, $interestFg) = genRandomMonitorCmds();
|
||||||
|
Reference in New Issue
Block a user