36f8f6fb024b20cc523cdf9ebde7491eca84fd7c
markd
  Sun Dec 6 20:33:20 2020 -0800
multiple request per connect works except hgBlat

diff --git src/gfServer/tests/dynTester src/gfServer/tests/dynTester
index 5862686..b1427e2 100755
--- src/gfServer/tests/dynTester
+++ src/gfServer/tests/dynTester
@@ -93,76 +93,68 @@
     # unbuffered is required, as protocol is not line-terminate
     cmd = []
     if valgrind:
         cmd += ["valgrind", "--log-file=valgrind.out"]
     cmd += ["gfServer"]
     if debug:
         cmd += ["-log=/dev/stderr", "-debugLog"]
     cmd += ["dynserver", rootDir]
     if debug:
         print("debug: start:", " ".join(cmd), file=sys.stderr)
     return subprocess.Popen(cmd, bufsize=0,
                             stdin=subprocess.PIPE, stdout=subprocess.PIPE)
 
 def serverWait(gfServer):
     "wait for server process to exit"
+    gfServer.stdin.close()
+    gfServer.stdout.close()
     gfServer.wait()
     if gfServer.returncode != 0:
         raise Exception("gfServer process exited with {}".format(gfServer.returncode))
 
 def readResults(gfServer, resultsFh):
     "read the results, which come back using the net string stuff"
     while True:
         resp = netRecieveString(gfServer.stdout)
         if len(resp) > 0:
             print(str(resp, encoding="latin-1"), file=resultsFh)
         if resp == b'end':
             break
 
-def makeQuery(gfServer, queryType, genome, genomeDataDir, seq, resultsFh):
+def queryRequest(gfServer, queryType, genome, genomeDataDir, seq, resultsFh):
     "make a query to the server"
-    query = "{}{} {} {} {}\n".format(gfSignature, queryType, len(seq), genome, genomeDataDir)
+    query = "{}{} {} {} {}\n".format(gfSignature, queryType, genome, genomeDataDir, len(seq))
     print(query, file=resultsFh)
     writeBytes(gfServer.stdin, query)
 
     resp = readBytes(gfServer.stdout, 1)
     if resp != b"Y":
         resp += gfServer.stdout.read()
         raise Exception("expected 'Y' from gfServer, got '{}'".format(resp))
     writeBytes(gfServer.stdin, seq)
     readResults(gfServer, resultsFh)
 
-def serverQuery(rootDir, queryType, genome, genomeDataDir, seq, resultsFh):
-    """on round of starting server, making a query, and stopping"""
-    gfServer = serverStart(rootDir)
-    makeQuery(gfServer, queryType, genome, genomeDataDir, seq, resultsFh)
-    serverWait(gfServer)
-
-def makeInfo(gfServer, infoType, genome, genomeDataDir, resultsFh):
+def infoRequest(gfServer, queryType, genome, genomeDataDir, resultsFh):
     "info request to the server"
+    infoType = "untransInfo" if queryType == "query" else "transInfo"
     query = "{}{} {} {}\n".format(gfSignature, infoType, genome, genomeDataDir)
     print(query, file=resultsFh)
     writeBytes(gfServer.stdin, query)
     readResults(gfServer, resultsFh)
 
-def serverInfo(rootDir, infoType, genome, genomeDataDir, resultsFh):
-    """make an info request to the server"""
-    gfServer = serverStart(rootDir)
-    makeInfo(gfServer, infoType, genome, genomeDataDir, resultsFh)
-    serverWait(gfServer)
-
 def dynTester(rootDir, queryType, genome, genomeDataDir, queryFa, resultsFh):
     "run tests"
     seqs = readFastaSeqs(queryFa)
     if len(seqs) == 0:
         raise Exception("no sequences found in {}".format(queryFa))
+    gfServer = serverStart(rootDir)
     for seq in seqs:
-        serverQuery(rootDir, queryType, genome, genomeDataDir, seq, resultsFh)
-    infoType = "untransInfo" if queryType == "query" else "transInfo"
-    serverInfo(rootDir, infoType, genome, genomeDataDir, resultsFh)
+        queryRequest(gfServer, queryType, genome, genomeDataDir, seq, resultsFh)
+    infoRequest(gfServer, queryType, genome, genomeDataDir, resultsFh)
+    serverWait(gfServer)
 
 def main():
     args = parseArgs()
     with open(args.resultsOut, "w") as resultsFh:
         dynTester(args.rootDir, args.queryType, args.genome, args.genomeDataDir, args.queryFa, resultsFh)
 
 main()