ef850e264ac840b515b825f34314c36d58ccbcbe markd Thu Jul 2 11:12:15 2020 -0700 added info command similar to status to support hgBlat diff --git src/gfServer/tests/dynTester src/gfServer/tests/dynTester index d6b2ab9..119b7e0 100755 --- src/gfServer/tests/dynTester +++ src/gfServer/tests/dynTester @@ -94,50 +94,66 @@ return subprocess.Popen(cmd, bufsize=0, stdin=subprocess.PIPE, stdout=subprocess.PIPE) def serverWait(gfServer): "wait for server process to exit" 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'trailerEnd': + if resp == b'end': break def makeQuery(gfServer, queryType, genome, seq, resultsFh): "make a query to the server" query = "{}{} {} {}\n".format(gfSignature, queryType, len(seq), genome) 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 queryServer(rootDir, queryType, genome, seq, resultsFh): +def serverQuery(rootDir, queryType, genome, seq, resultsFh): """on round of starting server, making a query, and stopping""" gfServer = serverStart(rootDir) makeQuery(gfServer, queryType, genome, seq, resultsFh) serverWait(gfServer) +def makeInfo(gfServer, infoType, genome, resultsFh): + "info request to the server" + query = "{}{} {}\n".format(gfSignature, infoType, genome) + print(query, file=resultsFh) + writeBytes(gfServer.stdin, query) + readResults(gfServer, resultsFh) + +def serverInfo(rootDir, infoType, genome, resultsFh): + """make an info request to the server""" + gfServer = serverStart(rootDir) + makeInfo(gfServer, infoType, genome, resultsFh) + serverWait(gfServer) + def dynTester(rootDir, queryType, genome, queryFa, resultsFh): "run tests" seqs = readFastaSeqs(queryFa) if len(seqs) == 0: raise Exception("no sequences found in {}".format(queryFa)) for seq in seqs: - queryServer(rootDir, queryType, genome, seq, resultsFh) + serverQuery(rootDir, queryType, genome, seq, resultsFh) + infoType = "untransInfo" if queryType == "query" else "transInfo" + serverInfo(rootDir, infoType, genome, resultsFh) def main(): args = parseArgs() with open(args.resultsOut, "w") as resultsFh: dynTester(args.rootDir, args.queryType, args.genome, args.queryFa, resultsFh) main()