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() {