95030f73f067d8e8f9221a09c1811784607e4e72 markd Fri Jul 10 17:51:29 2020 -0700 split dynamic server genomeDataPrefix into genome and genomeDataDir. More verbose, but clearer diff --git src/gfServer/tests/dynTester src/gfServer/tests/dynTester index bd76cb5..5862686 100755 --- src/gfServer/tests/dynTester +++ src/gfServer/tests/dynTester @@ -5,39 +5,41 @@ import sys import argparse import subprocess 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('rootDir', type=str, + parser.add_argument('rootDir', help="data root directory") - parser.add_argument('queryType', type=str, choices=("query", "protQuery", "transQuery"), + parser.add_argument('queryType', choices=("query", "protQuery", "transQuery"), help="query request: query, protQuery, or transQuery") - parser.add_argument('genome', type=str, - help="genome name, can include containing dirs") - parser.add_argument('queryFa', type=str, + parser.add_argument('genome', + help="genome name") + parser.add_argument('genomeDataDir', + help="directory for genome files") + parser.add_argument('queryFa', help="query fasta") - parser.add_argument('resultsOut', type=str, + parser.add_argument('resultsOut', help="out is saved here for checking ") args = parser.parse_args() global debug, valgrind debug = args.debug valgrind = args.valgrind return args gfSignature = "0ddf270562684f29" def readFastaSeqsFh(faFh): """read from one sequence from fasta""" seqs = [] seq = "" for line in faFh: line = line.strip() @@ -104,63 +106,63 @@ 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'end': break -def makeQuery(gfServer, queryType, genome, seq, resultsFh): +def makeQuery(gfServer, queryType, genome, genomeDataDir, seq, resultsFh): "make a query to the server" - query = "{}{} {} {}\n".format(gfSignature, queryType, len(seq), genome) + query = "{}{} {} {} {}\n".format(gfSignature, queryType, len(seq), genome, genomeDataDir) 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, seq, 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, seq, resultsFh) + makeQuery(gfServer, queryType, genome, genomeDataDir, seq, resultsFh) serverWait(gfServer) -def makeInfo(gfServer, infoType, genome, resultsFh): +def makeInfo(gfServer, infoType, genome, genomeDataDir, resultsFh): "info request to the server" - query = "{}{} {}\n".format(gfSignature, infoType, genome) + query = "{}{} {} {}\n".format(gfSignature, infoType, genome, genomeDataDir) print(query, file=resultsFh) writeBytes(gfServer.stdin, query) readResults(gfServer, resultsFh) -def serverInfo(rootDir, infoType, genome, resultsFh): +def serverInfo(rootDir, infoType, genome, genomeDataDir, resultsFh): """make an info request to the server""" gfServer = serverStart(rootDir) - makeInfo(gfServer, infoType, genome, resultsFh) + makeInfo(gfServer, infoType, genome, genomeDataDir, resultsFh) serverWait(gfServer) -def dynTester(rootDir, queryType, genome, queryFa, resultsFh): +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)) for seq in seqs: - serverQuery(rootDir, queryType, genome, seq, resultsFh) + serverQuery(rootDir, queryType, genome, genomeDataDir, seq, resultsFh) infoType = "untransInfo" if queryType == "query" else "transInfo" - serverInfo(rootDir, infoType, genome, resultsFh) + serverInfo(rootDir, infoType, genome, genomeDataDir, resultsFh) def main(): args = parseArgs() with open(args.resultsOut, "w") as resultsFh: - dynTester(args.rootDir, args.queryType, args.genome, args.queryFa, resultsFh) + dynTester(args.rootDir, args.queryType, args.genome, args.genomeDataDir, args.queryFa, resultsFh) main()