b31907d700c1fe956e4e4c20e64d91de027d7c84
markd
  Tue May 14 02:03:33 2024 -0700
merge blatHuge implementation

diff --git src/gfServer/tests/dynTester src/gfServer/tests/dynTester
index 8f507bc..2a7b523 100755
--- src/gfServer/tests/dynTester
+++ src/gfServer/tests/dynTester
@@ -7,30 +7,32 @@
 import argparse
 import subprocess
 import re
 from collections import namedtuple
 
 debug = False
 valGrind = False
 
 def parseArgs():
     usage = """Run a test of qfServer dynserver"""
     parser = argparse.ArgumentParser(description=usage)
     parser.add_argument('--debug', action="store_true", default=False,
                         help="enable debug tracing")
     parser.add_argument('--valgrind', action="store_true", default=False,
                         help="run valgrind on gfServer without to valgrind.out")
+    parser.add_argument('--gfServer', default="gfServer",
+                        help="gfServer command to use")
     parser.add_argument('rootDir',
                         help="data root directory")
     parser.add_argument('queryType', choices=("query", "protQuery", "transQuery", "pcr"),
                         help="query type to run")
     parser.add_argument('genome',
                         help="genome name")
     parser.add_argument('genomeDataDir',
                         help="directory for genome files")
     parser.add_argument('queryFa',
                         help="query fasta, for PCR, each data line should contain the two primers, separated by a '/'")
     parser.add_argument('resultsOut',
                         help="out is saved here for checking ")
     args = parser.parse_args()
     global debug, valgrind
     debug = args.debug
@@ -92,37 +94,37 @@
         buf = bytes(buf, encoding="utf8")
     if debug:
         print("debug: write:", str(buf, encoding="latin-1"), file=sys.stderr)
     fh.write(buf)
 
 def netSendString(fh, data):
     "Send a string down a socket - length byte first. (matches net.c)"
     fh.write(fh, bytes(len(data)))
     fh.write(data)
 
 def netRecieveString(fd):
     "Read string return it (matches net.c)"
     buf = readBytes(fd, 1)
     return readBytes(fd, buf[0])
 
-def serverStart(rootDir):
+def serverStart(gfServerCmd, rootDir):
     "start server process"
     # unbuffered is required, as protocol is not line-terminate
     cmd = []
     if valgrind:
         cmd += ["valgrind", "--log-file=valgrind.out"]
-    cmd += ["gfServer"]
+    cmd += [gfServerCmd]
     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))
@@ -154,35 +156,35 @@
     maxDistance = 4 * 1024
     query = "{}{} {} {} {} {} {}\n".format(gfSignature, "pcr", genome, genomeDataDir, seq.data, seq.revPrimer, maxDistance)
     print(query, file=resultsFh)
     writeBytes(gfServer.stdin, query)
 
     readResults(gfServer, resultsFh)
 
 def infoRequest(gfServer, queryType, genome, genomeDataDir, resultsFh):
     "info request to the server"
     infoType = "untransInfo" if queryType in  ("query", "pcr") else "transInfo"
     query = "{}{} {} {}\n".format(gfSignature, infoType, genome, genomeDataDir)
     print(query, file=resultsFh)
     writeBytes(gfServer.stdin, query)
     readResults(gfServer, resultsFh)
 
-def dynTester(rootDir, queryType, genome, genomeDataDir, queryFa, resultsFh):
+def dynTester(gfServerCmd, 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)
+    gfServer = serverStart(gfServerCmd, rootDir)
     for seq in seqs:
         if queryType == "pcr":
             pcrRequest(gfServer, genome, genomeDataDir, seq, resultsFh)
         else:
             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)
+        dynTester(args.gfServer, args.rootDir, args.queryType, args.genome, args.genomeDataDir, args.queryFa, resultsFh)
 
 main()