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