summaryrefslogtreecommitdiff
path: root/gps
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2015-02-11 02:35:37 -0500
committerEric S. Raymond <esr@thyrsus.com>2015-02-11 02:35:37 -0500
commitc91368eb9de2232aae956b07b97a266c5c98a627 (patch)
tree2dc98a101d532aab305ced011c9db8d0239a49c6 /gps
parent373796b4462eab2665fbd0c8c1e163801030e016 (diff)
downloadgpsd-c91368eb9de2232aae956b07b97a266c5c98a627.tar.gz
Change the way EOF is injected in hopes of beating a *BSD timing problem.
All regression tests pass.
Diffstat (limited to 'gps')
-rw-r--r--gps/fake.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/gps/fake.py b/gps/fake.py
index a8cdcdb0..6da595df 100644
--- a/gps/fake.py
+++ b/gps/fake.py
@@ -112,7 +112,7 @@ class TestLoadError(exceptions.Exception):
class TestLoad:
"Digest a logfile into a list of sentences we can cycle through."
- def __init__(self, logfp, predump=False, slow=False):
+ def __init__(self, logfp, predump=False, slow=False, oneshot=False):
self.sentences = [] # This is the interesting part
if type(logfp) == type(""):
logfp = open(logfp, "r")
@@ -195,6 +195,9 @@ class TestLoad:
# Maybe this needs to be split on different delimiters?
if self.delimiter is not None:
self.sentences = text[commentlen:].split(self.delimiter)
+ # Do we want single-shot operation?
+ if oneshot:
+ self.sentences.append("# EOF\n")
class PacketError(exceptions.Exception):
def __init__(self, msg):
@@ -538,11 +541,11 @@ class TestSession:
def set_predicate(self, pred):
"Set a default go predicate for the session."
self.default_predicate = pred
- def gps_add(self, logfile, speed=19200, pred=None):
+ def gps_add(self, logfile, speed=19200, pred=None, oneshot=False):
"Add a simulated GPS being fed by the specified logfile."
self.progress("gpsfake: gps_add(%s, %d)\n" % (logfile, speed))
if logfile not in self.fakegpslist:
- testload = TestLoad(logfile, predump=self.predump, slow=self.slow)
+ testload = TestLoad(logfile, predump=self.predump, slow=self.slow, oneshot=oneshot)
if testload.sourcetype == "UDP" or self.udp:
newgps = FakeUDP(testload, ipaddr="127.0.0.1",
port=self.baseport,
@@ -624,7 +627,6 @@ class TestSession:
if chosen.exhausted == 0:
chosen.exhausted = time.time()
self.progress("gpsfake: GPS %s ran out of input\n" % chosen.byname)
- chosen.write("# EOF\n")
else:
chosen.feed()
elif isinstance(chosen, gps.gps):