5294e72024937d44e0e13e4f55ba408f351c2ac2 hiram Tue Apr 16 10:27:14 2019 -0700 updated error messages and error testing refs #18869 diff --git src/hg/hubApi/tests/jsonConsumer.pl src/hg/hubApi/tests/jsonConsumer.pl index 9611017..abaa789 100755 --- src/hg/hubApi/tests/jsonConsumer.pl +++ src/hg/hubApi/tests/jsonConsumer.pl @@ -208,131 +208,138 @@ } ############################################################################# 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() { + my $errReturn = 0; if (length($endpoint)) { my $json = JSON->new; my $jsonReturn = {}; if ($endpoint eq "/list/hubGenomes") { my %parameters; # allow no hubUrl argument to test error reports if (length($hubUrl)) { $parameters{"hubUrl"} = "$hubUrl"; } $jsonReturn = performJsonAction($endpoint, \%parameters); + $errReturn = 1 if (defined ($jsonReturn->{'error'})); printf "%s", $json->pretty->encode( $jsonReturn ); } elsif ($endpoint eq "/list/tracks") { # 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)) { $parameters{"db"} = "$db"; } # allow no hubUrl argument to test error reports if (length($hubUrl)) { $parameters{"hubUrl"} = "$hubUrl"; } # allow call to go through without a genome specified to test error if (length($genome)) { $parameters{"genome"} = "$genome"; } $jsonReturn = performJsonAction($endpoint, \%parameters); + $errReturn = 1 if (defined ($jsonReturn->{'error'})); printf "%s", $json->pretty->encode( $jsonReturn ); } elsif ($endpoint eq "/list/chromosomes") { my %parameters; 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"; } if (length($track)) { $parameters{"track"} = "$track"; } } } $jsonReturn = performJsonAction($endpoint, \%parameters); + $errReturn = 1 if (defined ($jsonReturn->{'error'})); printf "%s", $json->pretty->encode( $jsonReturn ); } elsif ($endpoint eq "/getData/sequence") { my %parameters; if (length($db)) { $parameters{"db"} = "$db"; } if (length($hubUrl)) { $parameters{"hubUrl"} = "$hubUrl"; } # allow call to go through without a genome specified to test error if (length($genome)) { $parameters{"genome"} = "$genome"; } if (length($chrom)) { $parameters{"chrom"} = "$chrom"; } if (length($start)) { $parameters{"start"} = "$start"; $parameters{"end"} = "$end"; } $jsonReturn = performJsonAction($endpoint, \%parameters); + $errReturn = 1 if (defined ($jsonReturn->{'error'})); printf "%s", $json->pretty->encode( $jsonReturn ); } elsif ($endpoint eq "/getData/track") { my %parameters; if (length($db)) { $parameters{"db"} = "$db"; } if (length($hubUrl)) { $parameters{"hubUrl"} = "$hubUrl"; } # allow call to go through without a genome specified to test error if (length($genome)) { $parameters{"genome"} = "$genome"; } if (length($track)) { $parameters{"track"} = "$track"; } if (length($chrom)) { $parameters{"chrom"} = "$chrom"; } if (length($start)) { $parameters{"start"} = "$start"; $parameters{"end"} = "$end"; } $jsonReturn = performJsonAction($endpoint, \%parameters); + $errReturn = 1 if (defined ($jsonReturn->{'error'})); printf "%s", $json->pretty->encode( $jsonReturn ); } else { printf STDERR "# TBD: '%s'\n", $endpoint; } } else { printf STDERR "ERROR: no endpoint given ?\n"; exit 255; } + return $errReturn; } # sub processEndPoint() ########################################################################### ### test /list/publicHubs and /list/ucscGenomes sub test0() { my $json = JSON->new; my $jsonReturn = {}; verifyCommandProcessing(); # check 'command' and 'subCommand' $jsonReturn = performJsonAction("/list/publicHubs", ""); # this prints everything out indented nicely: # printf "%s", $json->pretty->encode( $jsonReturn ); @@ -406,20 +413,23 @@ "chrom=s" => \$chrom, "start=s" => \$start, "end=s" => \$end, "test0" => \$test0, "debug" => \$debug, "trackLeavesOnly" => \$trackLeavesOnly, "maxItemsOutput=s" => \$maxItemsOutput) or die "Error in command line arguments\n"; if ($test0) { test0; exit 0; } if ($argc > 0) { - processEndPoint(); + if (processEndPoint()) { + exit 255; + } else { exit 0; } +} usage();