c2d1cd482978db6bc12bafddc72e4131c3d15b9f hiram Thu Apr 11 13:57:56 2019 -0700 allow errors in parameters to pass thru to the call refs #18869 diff --git src/hg/hubApi/tests/jsonConsumer.pl src/hg/hubApi/tests/jsonConsumer.pl index 85cd5e9..9611017 100755 --- src/hg/hubApi/tests/jsonConsumer.pl +++ src/hg/hubApi/tests/jsonConsumer.pl @@ -134,30 +134,32 @@ # Quickly check for rate limit exceeded & Retry-After (lowercase due to our client) if($status == 429 && exists $response->{headers}->{'retry-after'}) { my ($status, $reason) = ($response->{status}, $response->{reason}); my $retry = $response->{headers}->{'retry-after'}; printf STDERR "Failed for $endpoint! Status code: ${status}. Reason: ${reason}, retry-after: $retry seconds\n"; # hashOutput($response->{headers}); Time::HiRes::sleep($retry); # After sleeping see that we re-request return performRestAction($endpoint, $parameters, $headers); } else { my ($status, $reason) = ($response->{status}, $response->{reason}); # die "Failed for $endpoint! Status code: ${status}. Reason: ${reason}\n"; printf STDERR "Failed for $endpoint! Status code: ${status}. Reason: ${reason}\n"; # hashOutput($response->{headers}); +# hashOutput($response->{content}); +# printf STDERR "'%s'\n", $response->{content}; # printf STDERR "'%s'\n", $response->{headers}; return return $response->{content}; } } $request_count++; if(length $response->{content}) { return $response->{content}; } return; } ############################################################################# sub columnNames($) { my ($nameArray) = @_; if (ref($nameArray) ne "ARRAY") { @@ -206,146 +208,122 @@ } ############################################################################# sub verifyCommandProcessing() { my $json = JSON->new; # verify command processing can detected bad input my $endpoint = "/list/noSubCommand"; my $expect = "do not recognize endpoint function:"; checkError($json, $endpoint,$expect); } # sub verifyCommandProcessing() ############################################################################# sub processEndPoint() { - if (length($endpoint) > 0) { + if (length($endpoint)) { my $json = JSON->new; my $jsonReturn = {}; if ($endpoint eq "/list/hubGenomes") { - if (length($hubUrl) > 0) { my %parameters; + # allow no hubUrl argument to test error reports + if (length($hubUrl)) { $parameters{"hubUrl"} = "$hubUrl"; + } $jsonReturn = performJsonAction($endpoint, \%parameters); printf "%s", $json->pretty->encode( $jsonReturn ); - } else { - printf STDERR "ERROR: need to specify a hubUrl for endpoint '%s'\n", $endpoint; - exit 255; - } } elsif ($endpoint eq "/list/tracks") { - my $failing = 0; + # no need to verify arguments here, pass them along, or not, + # so that error returns can be verified my %parameters; if ($trackLeavesOnly) { $parameters{"trackLeavesOnly"} = "1"; } - if (length($db) > 0) { + if (length($db)) { $parameters{"db"} = "$db"; - } elsif (length($hubUrl) < 1) { - printf STDERR "ERROR: need to specify a hubUrl for endpoint '%s'\n", $endpoint; - ++$failing; - } else { + } + # allow no hubUrl argument to test error reports + if (length($hubUrl)) { $parameters{"hubUrl"} = "$hubUrl"; - if (length($genome) < 1) { - printf STDERR "ERROR: need to specify a genome for endpoint '%s'\n", $endpoint; - ++$failing; - } else { - $parameters{"genome"} = "$genome"; } + # allow call to go through without a genome specified to test error + if (length($genome)) { + $parameters{"genome"} = "$genome"; } - if ($failing) { exit 255; } $jsonReturn = performJsonAction($endpoint, \%parameters); printf "%s", $json->pretty->encode( $jsonReturn ); } elsif ($endpoint eq "/list/chromosomes") { - my $failing = 0; my %parameters; - if (length($db) > 0) { + if (length($db)) { $parameters{"db"} = "$db"; } else { if (length($hubUrl)) { $parameters{"hubUrl"} = "$hubUrl"; + # allow call to go through without a genome specified to test error if (length($genome)) { $parameters{"genome"} = "$genome"; - } else { - printf STDERR "ERROR: need to specify a genome with hubUrl for endpoint '%s'\n", $endpoint; - ++$failing; } if (length($track)) { $parameters{"track"} = "$track"; } - } else { - printf STDERR "ERROR: need to specify a db or hubUrl for endpoint '%s'\n", $endpoint; - ++$failing; } } - if ($failing) { exit 255; } $jsonReturn = performJsonAction($endpoint, \%parameters); printf "%s", $json->pretty->encode( $jsonReturn ); } elsif ($endpoint eq "/getData/sequence") { - my $failing = 0; my %parameters; - if (length($db) > 0) { + if (length($db)) { $parameters{"db"} = "$db"; - } elsif (length($hubUrl) < 1) { - printf STDERR "ERROR: need to specify a hubUrl for endpoint '%s'\n", $endpoint; - ++$failing; - } else { + } + if (length($hubUrl)) { $parameters{"hubUrl"} = "$hubUrl"; - if (length($genome) < 1) { - printf STDERR "ERROR: need to specify a genome for endpoint '%s'\n", $endpoint; - ++$failing; - } else { - $parameters{"genome"} = "$genome"; } + # allow call to go through without a genome specified to test error + if (length($genome)) { + $parameters{"genome"} = "$genome"; } - if (length($chrom) > 0) { + if (length($chrom)) { $parameters{"chrom"} = "$chrom"; } - if (length($start) > 0) { + if (length($start)) { $parameters{"start"} = "$start"; $parameters{"end"} = "$end"; } - if ($failing) { exit 255; } $jsonReturn = performJsonAction($endpoint, \%parameters); printf "%s", $json->pretty->encode( $jsonReturn ); } elsif ($endpoint eq "/getData/track") { - my $failing = 0; my %parameters; - if (length($db) > 0) { + if (length($db)) { $parameters{"db"} = "$db"; - } elsif (length($hubUrl) < 1) { - printf STDERR "ERROR: need to specify a hubUrl for endpoint '%s'\n", $endpoint; - ++$failing; - } else { + } + if (length($hubUrl)) { $parameters{"hubUrl"} = "$hubUrl"; - if (length($genome) < 1) { - printf STDERR "ERROR: need to specify a genome for endpoint '%s'\n", $endpoint; - ++$failing; - } else { - $parameters{"genome"} = "$genome"; } + # allow call to go through without a genome specified to test error + if (length($genome)) { + $parameters{"genome"} = "$genome"; } - if (length($track) > 0) { + if (length($track)) { $parameters{"track"} = "$track"; } - if (length($chrom) > 0) { + if (length($chrom)) { $parameters{"chrom"} = "$chrom"; } - if (length($start) > 0) { + if (length($start)) { $parameters{"start"} = "$start"; $parameters{"end"} = "$end"; } - if ($failing) { exit 255; } $jsonReturn = performJsonAction($endpoint, \%parameters); printf "%s", $json->pretty->encode( $jsonReturn ); } else { printf STDERR "# TBD: '%s'\n", $endpoint; } } else { printf STDERR "ERROR: no endpoint given ?\n"; exit 255; } } # sub processEndPoint() ########################################################################### ### test /list/publicHubs and /list/ucscGenomes sub test0() {