diff --git a/setup.py b/setup.py index b16f4459..8f6c6ce5 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,7 @@ setup( name='hio', - version='0.7.14', # also change in src/hio/__init__.py + version='0.7.16', # also change in src/hio/__init__.py license='Apache Software License 2.0', description='Hierarchical Concurrency with Async IO', long_description=("HIO Hierarchical Concurrency and Asynchronous IO Library. " @@ -86,13 +86,13 @@ "structured concurrency", # eg: 'keyword1', 'keyword2', 'keyword3', ], - python_requires='>=3.13.2', + python_requires='>=3.13.7', install_requires=[ - 'lmdb>=1.6.2', - 'msgpack>=1.1.0', - 'cbor2>=5.6.5', - 'multidict>=6.4.3', - 'falcon>=4.0.2', + 'lmdb>=1.7.5', + 'msgpack>=1.1.2', + 'cbor2>=5.7.1', + 'multidict>=6.7.0', + 'falcon>=4.2.0', 'ordered-set>=4.1.0', ], extras_require={ @@ -101,8 +101,8 @@ # ':python_version=="2.6"': ['argparse'], }, tests_require=[ - 'coverage>=7.8.0', - 'pytest>=8.3.5', + 'coverage>=7.12.0', + 'pytest>=9.0.1', ], setup_requires=[ ], diff --git a/src/hio/__init__.py b/src/hio/__init__.py index 49b1beba..f90a5335 100644 --- a/src/hio/__init__.py +++ b/src/hio/__init__.py @@ -3,7 +3,7 @@ hio package """ -__version__ = '0.7.14' # also change in setup.py +__version__ = '0.7.16' # also change in setup.py from .hioing import (Mixin, HioError, SizeError, ValidationError, VersionError, HierError) diff --git a/src/hio/base/hier/hogging.py b/src/hio/base/hier/hogging.py index 9da394f2..72bfa52e 100644 --- a/src/hio/base/hier/hogging.py +++ b/src/hio/base/hier/hogging.py @@ -324,7 +324,8 @@ def act(self, **iops): # hog id uuid for this run (not iteration) # create B64 version of uuid with stripped trailing pad bytes uid = encodeB64(bytes.fromhex(uuid.uuid1().hex))[:-2].decode() - self.rid = self.name + "_" + uid + #self.rid = self.name + "_" + uid + self.rid = "0A" + uid # same as CESR salt self.stamp = timing.nowIso8601() # current real datetime as ISO8601 string metaLine = (f"rid\tbase\tname\tstamp\trule\tcount\n") diff --git a/tests/base/hier/test_hogging.py b/tests/base/hier/test_hogging.py index 9f7c4ba4..2ac15750 100644 --- a/tests/base/hier/test_hogging.py +++ b/tests/base/hier/test_hogging.py @@ -57,7 +57,8 @@ def test_hog_basic(): assert not hog.hold.subery assert hog.hits == {} assert hog.header.startswith('rid') - assert hog.rid.startswith(hog.name) # 'Hog0_KQzSlod5EfC1TvKsr0VvkQ' + assert hog.rid.startswith('0A') # '0AKQzSlod5EfC1TvKsr0VvkQ' + assert len(hog.rid) == 24 assert list(hog.hold.keys()) == ['_hold_subery'] @@ -226,7 +227,8 @@ def __hash__(self): iops = dict(_boxer=boxerName, _box=boxName) uid = 'KQzSlod5EfC1TvKsr0VvkQ' # for test - rid = f"{boxerName}_{uid}" + rid = f"0A{uid}" + assert rid == '0AKQzSlod5EfC1TvKsr0VvkQ' hold = Hold() @@ -301,7 +303,7 @@ def __hash__(self): assert hog.stamp == dts assert hog.header.startswith('rid') assert hog.header == ('rid\tbase\tname\tstamp\trule\tcount\n' - 'BoxerTest_KQzSlod5EfC1TvKsr0VvkQ\tBoxerTest\tpig\t2021-06-27T21:26:21.233257+00:00\tevery\t0\n' + '0AKQzSlod5EfC1TvKsr0VvkQ\tBoxerTest\tpig\t2021-06-27T21:26:21.233257+00:00\tevery\t0\n' 'tyme.key\tactive.key\ttock.key\n' '_boxer_BoxerTest_tyme\t_boxer_BoxerTest_active\t_boxer_BoxerTest_tock\n' 'tyme.value\tactive.value\ttock.value\n') @@ -311,7 +313,7 @@ def __hash__(self): assert lines == \ [ 'rid\tbase\tname\tstamp\trule\tcount\n', - 'BoxerTest_KQzSlod5EfC1TvKsr0VvkQ\tBoxerTest\tpig\t' + '0AKQzSlod5EfC1TvKsr0VvkQ\tBoxerTest\tpig\t' '2021-06-27T21:26:21.233257+00:00\tevery\t0\n', 'tyme.key\tactive.key\ttock.key\n', '_boxer_BoxerTest_tyme\t_boxer_BoxerTest_active\t_boxer_BoxerTest_tock\n', @@ -323,7 +325,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','pig','2021-06-27T21:26:21.233257+00:00','every','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','pig','2021-06-27T21:26:21.233257+00:00','every','0'), ('tyme.key', 'active.key', 'tock.key'), ('_boxer_BoxerTest_tyme', '_boxer_BoxerTest_active', '_boxer_BoxerTest_tock'), ('tyme.value', 'active.value', 'tock.value'), @@ -350,7 +352,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest','pig','2021-06-27T21:26:21.233257+00:00','every','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest','pig','2021-06-27T21:26:21.233257+00:00','every','0'), ('tyme.key', 'active.key', 'tock.key'), ('_boxer_BoxerTest_tyme', '_boxer_BoxerTest_active', '_boxer_BoxerTest_tock'), ('tyme.value', 'active.value', 'tock.value'), @@ -401,7 +403,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest','dog','2021-06-27T21:26:21.233257+00:00','once','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest','dog','2021-06-27T21:26:21.233257+00:00','once','0'), ('tyme.key', 'active.key', 'tock.key'), ('_boxer_BoxerTest_tyme', '_boxer_BoxerTest_active', '_boxer_BoxerTest_tock'), ('tyme.value', 'active.value', 'tock.value'), @@ -420,7 +422,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest','dog','2021-06-27T21:26:21.233257+00:00','once','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest','dog','2021-06-27T21:26:21.233257+00:00','once','0'), ('tyme.key', 'active.key', 'tock.key'), ('_boxer_BoxerTest_tyme', '_boxer_BoxerTest_active', '_boxer_BoxerTest_tock'), ('tyme.value', 'active.value', 'tock.value'), @@ -486,7 +488,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cat','2021-06-27T21:26:21.233257+00:00','every','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cat','2021-06-27T21:26:21.233257+00:00','every','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -508,7 +510,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest', 'cat', '2021-06-27T21:26:21.233257+00:00', 'every', '0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest', 'cat', '2021-06-27T21:26:21.233257+00:00', 'every', '0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -569,7 +571,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','fox','2021-06-27T21:26:21.233257+00:00','update','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','fox','2021-06-27T21:26:21.233257+00:00','update','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -591,7 +593,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','fox','2021-06-27T21:26:21.233257+00:00','update','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','fox','2021-06-27T21:26:21.233257+00:00','update','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -615,7 +617,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ', + ('0AKQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest','fox','2021-06-27T21:26:21.233257+00:00','update','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), @@ -638,7 +640,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ', + ('0AKQzSlod5EfC1TvKsr0VvkQ', 'BoxerTest','fox','2021-06-27T21:26:21.233257+00:00','update','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), @@ -662,7 +664,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','fox','2021-06-27T21:26:21.233257+00:00','update','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','fox','2021-06-27T21:26:21.233257+00:00','update','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -729,7 +731,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -751,7 +753,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -780,7 +782,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -801,7 +803,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -828,7 +830,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','owl','2021-06-27T21:26:21.233257+00:00','change','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -891,7 +893,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -915,7 +917,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -936,7 +938,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -959,7 +961,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -982,7 +984,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','cow','2021-06-27T21:26:21.233257+00:00','span','0'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1035,7 +1037,7 @@ def __hash__(self): iops = dict(_boxer=boxerName, _box=boxName) uid = 'KQzSlod5EfC1TvKsr0VvkQ' # for test - rid = f"{boxerName}_{uid}" + rid = f"0A{uid}" hold = Hold() @@ -1066,7 +1068,7 @@ def __hash__(self): name = "rat" count = 2 period = tymist.tock * 2 - size = 300 + size = 292 # vector locations as hits with default rule every hog = Hog(name=name, iops=iops, hold=hold, temp=True, rid=rid, flushForce=True, @@ -1102,7 +1104,7 @@ def __hash__(self): assert hog.rid == rid assert hog.stamp == dts - assert os.path.getsize(hog.path) == 272 + assert os.path.getsize(hog.path) == 264 for path in hog.cyclePaths: assert os.path.getsize(path) == 0 @@ -1113,7 +1115,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1132,8 +1134,8 @@ def __hash__(self): assert hog.flushLast == tymist.tyme assert hog.cycleLast == tymist.tyme # cycled due to size - assert os.path.getsize(hog.path) == 247 # only header - assert os.path.getsize(hog.cyclePaths[0]) == 301 # over cycleSize + assert os.path.getsize(hog.path) == 239 # only header + assert os.path.getsize(hog.cyclePaths[0]) == 293 # over cycleSize assert os.path.getsize(hog.cyclePaths[1]) == 0 hog.file.seek(0, os.SEEK_SET) # seek to beginning of file @@ -1142,7 +1144,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE') @@ -1154,7 +1156,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1174,8 +1176,8 @@ def __hash__(self): assert hog.flushLast == tymist.tyme == 0.0625 assert hog.cycleLast == 0.03125 - assert os.path.getsize(hog.path) == 275 - assert os.path.getsize(hog.cyclePaths[0]) == 301 # over cycleSize + assert os.path.getsize(hog.path) == 267 + assert os.path.getsize(hog.cyclePaths[0]) == 293 # over cycleSize assert os.path.getsize(hog.cyclePaths[1]) == 0 hog.file.seek(0, os.SEEK_SET) # seek to beginning of file @@ -1184,7 +1186,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1203,9 +1205,9 @@ def __hash__(self): assert hog.flushLast == tymist.tyme == 0.09375 assert hog.cycleLast == 0.09375 - assert os.path.getsize(hog.path) == 247 - assert os.path.getsize(hog.cyclePaths[0]) == 304 # over cycleSize - assert os.path.getsize(hog.cyclePaths[1]) == 301 + assert os.path.getsize(hog.path) == 239 + assert os.path.getsize(hog.cyclePaths[0]) == 296 # over cycleSize + assert os.path.getsize(hog.cyclePaths[1]) == 293 hog.file.seek(0, os.SEEK_SET) # seek to beginning of file lines = hog.file.readlines() @@ -1213,7 +1215,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE') @@ -1225,7 +1227,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1240,7 +1242,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','rat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1291,7 +1293,7 @@ def __hash__(self): iops = dict(_boxer=boxerName, _box=boxName) uid = 'KQzSlod5EfC1TvKsr0VvkQ' # for test - rid = f"{boxerName}_{uid}" + rid = f"0A{uid}" hold = Hold() @@ -1358,7 +1360,7 @@ def __hash__(self): assert hog.rid == rid assert hog.stamp == dts - assert os.path.getsize(hog.path) == 272 + assert os.path.getsize(hog.path) == 264 for path in hog.cyclePaths: assert os.path.getsize(path) == 0 @@ -1369,7 +1371,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1388,7 +1390,7 @@ def __hash__(self): assert hog.flushLast == tymist.tyme assert hog.cycleLast == None # not cycled yet - assert os.path.getsize(hog.path) == 301 + assert os.path.getsize(hog.path) == 293 assert os.path.getsize(hog.cyclePaths[0]) == 0 assert os.path.getsize(hog.cyclePaths[1]) == 0 @@ -1398,7 +1400,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1418,8 +1420,8 @@ def __hash__(self): assert hog.flushLast == tymist.tyme == 0.0625 assert hog.cycleLast == 0.0625 == hog.cycleSpan # cycled due to time - assert os.path.getsize(hog.path) == 247 # just header - assert os.path.getsize(hog.cyclePaths[0]) == 329 + assert os.path.getsize(hog.path) == 239 # just header + assert os.path.getsize(hog.cyclePaths[0]) == 321 assert os.path.getsize(hog.cyclePaths[1]) == 0 hog.file.seek(0, os.SEEK_SET) # seek to beginning of file @@ -1428,7 +1430,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE') @@ -1440,7 +1442,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1461,8 +1463,8 @@ def __hash__(self): assert hog.flushLast == tymist.tyme == 0.09375 assert hog.cycleLast == 0.0625 - assert os.path.getsize(hog.path) == 276 - assert os.path.getsize(hog.cyclePaths[0]) == 329 + assert os.path.getsize(hog.path) == 268 + assert os.path.getsize(hog.cyclePaths[0]) == 321 assert os.path.getsize(hog.cyclePaths[1]) == 0 hog.file.seek(0, os.SEEK_SET) # seek to beginning of file @@ -1471,7 +1473,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1491,9 +1493,9 @@ def __hash__(self): assert hog.cycleLast == 0.125 - assert os.path.getsize(hog.path) == 247 - assert os.path.getsize(hog.cyclePaths[0]) == 303 - assert os.path.getsize(hog.cyclePaths[1]) == 329 + assert os.path.getsize(hog.path) == 239 + assert os.path.getsize(hog.cyclePaths[0]) == 295 + assert os.path.getsize(hog.cyclePaths[1]) == 321 hog.file.seek(0, os.SEEK_SET) # seek to beginning of file lines = hog.file.readlines() @@ -1501,7 +1503,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE') @@ -1513,7 +1515,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), @@ -1528,7 +1530,7 @@ def __hash__(self): assert lines == \ [ ('rid', 'base', 'name', 'stamp', 'rule', 'count'), - ('BoxerTest_KQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), + ('0AKQzSlod5EfC1TvKsr0VvkQ','BoxerTest','bat','2021-06-27T21:26:21.233257+00:00','every','2'), ('tyme.key', 'home.key', 'away.key'), ('_boxer_BoxerTest_tyme', 'location_home', 'location_away'), ('tyme.value', 'home.latN', 'home.lonE', 'away.latN', 'away.lonE'), diff --git a/tests/core/udp/test_udp.py b/tests/core/udp/test_udp.py index bfa774b6..cf246626 100644 --- a/tests/core/udp/test_udp.py +++ b/tests/core/udp/test_udp.py @@ -21,30 +21,30 @@ def test_udp_basic(): tymist = tyming.Tymist() with (wiring.openWL(samed=True, filed=True) as wl): - alpha = udping.Peer(port = 6101, wl=wl) # any interface on port 6101 - if platform.system() == 'Windows': - alpha = udping.Peer(ha=('127.0.0.1', 6101), wl=wl) + # can't use '0.0.0.0' on macos without getting local network access permissions + # for python, but does not trigger automatically and no way to force trigger + # unless create application bundle etc. + + #host = socket.gethostbyname(socket.gethostname()) # get host interface + host = '127.0.0.1' + alphaPort = 6101 + betaPort = 6102 + alphaHa = (host, alphaPort) + betaHa = (host, betaPort) + + alpha = udping.Peer(host=host, port = alphaPort, wl=wl) # host on port 6101 assert not alpha.opened assert alpha.name == 'main' # default assert alpha.reopen() assert alpha.opened - if platform.system() == 'Windows': - assert alpha.ha == ('127.0.0.1', 6101) - else: - assert alpha.ha == ('0.0.0.0', 6101) - - beta = udping.Peer(name='beta',port = 6102, wl=wl) # any interface on port 6102 - if platform.system() == 'Windows': - beta = udping.Peer(name='beta', ha=('127.0.0.1', 6102), wl=wl) + assert alpha.ha == alphaHa + beta = udping.Peer(name='beta',host=host, port = betaPort, wl=wl) # host on port 6102 assert not beta.opened assert beta.name == 'beta' assert beta.reopen() assert beta.opened - if platform.system() == 'Windows': - assert beta.ha == ('127.0.0.1', 6102) - else: - assert beta.ha == ('0.0.0.0', 6102) + assert beta.ha == betaHa msgOut = b"alpha sends to beta" alpha.send(msgOut, beta.ha) @@ -86,18 +86,19 @@ def test_udp_basic(): def addrBytes(ha): return f"('{ha[0]}', {ha[1]})".encode("ascii") - assert wl.readRx() == (b"\nTx "+addrBytes(beta.ha)+b":\nalpha sends to beta\n\nRx ('127.0.0.1', 6101):\n" - b"alpha sends to beta\n\nTx "+addrBytes(alpha.ha)+b":\nalpha sends to alpha\n\nRx " - b"('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx "+addrBytes(alpha.ha)+b":\nbeta se" - b"nds to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n\nTx "+addrBytes(beta.ha)+ - b":\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):\nbeta sends to b" - b'eta\n') - assert wl.readTx() == (b"\nTx "+addrBytes(beta.ha)+b":\nalpha sends to beta\n\nRx ('127.0.0.1', 6101):\n" - b"alpha sends to beta\n\nTx "+addrBytes(alpha.ha)+b":\nalpha sends to alpha\n\nRx " - b"('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx "+addrBytes(alpha.ha)+b":\nbeta se" - b"nds to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n\nTx "+addrBytes(beta.ha)+ - b":\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):\nbeta sends to b" - b'eta\n') + assert wl.readRx() == (b"\nTx ('127.0.0.1', 6102):\nalpha sends to beta\n\nRx ('127.0.0.1', 6101)" + b":\nalpha sends to beta\n\nTx ('127.0.0.1', 6101):\nalpha sends to alpha\n" + b"\nRx ('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx ('127.0.0.1', 6101" + b"):\nbeta sends to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n" + b"\nTx ('127.0.0.1', 6102):\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):" + b'\nbeta sends to beta\n') + assert wl.readTx() == (b"\nTx ('127.0.0.1', 6102):\nalpha sends to beta\n\nRx ('127.0.0.1', 6101)" + b":\nalpha sends to beta\n\nTx ('127.0.0.1', 6101):\nalpha sends to alpha\n" + b"\nRx ('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx ('127.0.0.1', 6101" + b"):\nbeta sends to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n" + b"\nTx ('127.0.0.1', 6102):\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):" + b'\nbeta sends to beta\n') + assert wl.readTx() == wl.readRx() @@ -110,25 +111,26 @@ def test_open_peer(): """ tymist = tyming.Tymist() - alphaHa = ('127.0.0.1', 6101) if platform.system() == 'Windows' else ('0.0.0.0', 6101) - betaHa = ('127.0.0.1', 6102) if platform.system() == 'Windows' else ('0.0.0.0', 6102) + # can't use '0.0.0.0' on macos without getting local network access permissions + # for python, but does not trigger automatically and no way to force trigger + # unless create application bundle etc. - with (wiring.openWL(samed=True, filed=True) as wl, + #host = socket.gethostbyname(socket.gethostname()) # get host interface + host = '127.0.0.1' + alphaPort = 6101 + betaPort = 6102 + alphaHa = (host, alphaPort) + betaHa = (host, betaPort) - udping.openPeer(ha=alphaHa, wl=wl) as alpha, # any interface on port 6101 - udping.openPeer(ha=betaHa, wl=wl) as beta): # any interface on port 6102 + with (wiring.openWL(samed=True, filed=True) as wl, + udping.openPeer(ha=alphaHa, wl=wl) as alpha, # host on port 6101 + udping.openPeer(ha=betaHa, wl=wl) as beta): # host on port 6102 assert alpha.opened - if platform.system() == 'Windows': - assert alpha.ha == ('127.0.0.1', 6101) - else: - assert alpha.ha == ('0.0.0.0', 6101) + assert alpha.ha == (host, alphaPort) assert beta.opened - if platform.system() == 'Windows': - assert beta.ha == ('127.0.0.1', 6102) - else: - assert beta.ha == ('0.0.0.0', 6102) + assert beta.ha == (host, betaPort) msgOut = b"alpha sends to beta" alpha.send(msgOut, beta.ha) @@ -159,27 +161,25 @@ def test_open_peer(): assert src[1] == beta.port # ports equal - - - wl.flush() # just to test assert wl.samed # rx and tx same buffer def addrBytes(ha): return f"('{ha[0]}', {ha[1]})".encode("ascii") - assert wl.readRx() == (b"\nTx "+addrBytes(beta.ha)+b":\nalpha sends to beta\n\nRx ('127.0.0.1', 6101):\n" - b"alpha sends to beta\n\nTx "+addrBytes(alpha.ha)+b":\nalpha sends to alpha\n\nRx " - b"('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx "+addrBytes(alpha.ha)+b":\nbeta se" - b"nds to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n\nTx "+addrBytes(beta.ha)+ - b":\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):\nbeta sends to b" - b'eta\n') - assert wl.readTx() == (b"\nTx "+addrBytes(beta.ha)+b":\nalpha sends to beta\n\nRx ('127.0.0.1', 6101):\n" - b"alpha sends to beta\n\nTx "+addrBytes(alpha.ha)+b":\nalpha sends to alpha\n\nRx " - b"('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx "+addrBytes(alpha.ha)+b":\nbeta se" - b"nds to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n\nTx "+addrBytes(beta.ha)+ - b":\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):\nbeta sends to b" - b'eta\n') + assert wl.readRx() == (b"\nTx ('127.0.0.1', 6102):\nalpha sends to beta\n\nRx ('127.0.0.1', 6101)" + b":\nalpha sends to beta\n\nTx ('127.0.0.1', 6101):\nalpha sends to alpha\n" + b"\nRx ('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx ('127.0.0.1', 6101" + b"):\nbeta sends to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n" + b"\nTx ('127.0.0.1', 6102):\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):" + b'\nbeta sends to beta\n') + + assert wl.readTx() == (b"\nTx ('127.0.0.1', 6102):\nalpha sends to beta\n\nRx ('127.0.0.1', 6101)" + b":\nalpha sends to beta\n\nTx ('127.0.0.1', 6101):\nalpha sends to alpha\n" + b"\nRx ('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx ('127.0.0.1', 6101" + b"):\nbeta sends to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n" + b"\nTx ('127.0.0.1', 6102):\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):" + b'\nbeta sends to beta\n') assert wl.readTx() == wl.readRx() @@ -238,11 +238,11 @@ def test_peer_doer(): #with (wiring.openWL(samed=True, filed=True) as wl): #unicast = socket.gethostbyname(socket.gethostname()) - #assert unicast == "127.0.0.1" + ##assert unicast == "127.0.0.1" #parts = unicast.split('.') #parts[3] = '255' #broadcast = ".".join(parts) # make broadcast send address - #assert broadcast == "127.0.0.255" + ##assert broadcast == "127.0.0.255" #bha = (broadcast, 6104) #alpha = udping.Peer(host=unicast, @@ -260,7 +260,7 @@ def test_peer_doer(): #assert beta.reopen() #assert not beta.bcast ##assert beta.ha == ("0.0.0.0", 6104) - #assert beta.ha == ("127.0.0.1", 6104) + ##assert beta.ha == ("127.0.0.1", 6104) #assert beta.ha[1] == bha[1] # same port #msgOut = b"alpha broadcasts to beta" @@ -309,7 +309,95 @@ def test_peer_doer(): #"""Done Test""" +#def test_udp_basic_old(): + #""" Test the udp connection between two peers + + #""" + #tymist = tyming.Tymist() + #with (wiring.openWL(samed=True, filed=True) as wl): + + #alpha = udping.Peer(port = 6101, wl=wl) # any interface on port 6101 + #if platform.system() == 'Windows': + #alpha = udping.Peer(ha=('127.0.0.1', 6101), wl=wl) + #assert not alpha.opened + #assert alpha.name == 'main' # default + #assert alpha.reopen() + #assert alpha.opened + #if platform.system() == 'Windows': + #assert alpha.ha == ('127.0.0.1', 6101) + #else: + #assert alpha.ha == ('0.0.0.0', 6101) + + #beta = udping.Peer(name='beta',port = 6102, wl=wl) # any interface on port 6102 + #if platform.system() == 'Windows': + #beta = udping.Peer(name='beta', ha=('127.0.0.1', 6102), wl=wl) + + #assert not beta.opened + #assert beta.name == 'beta' + #assert beta.reopen() + #assert beta.opened + #if platform.system() == 'Windows': + #assert beta.ha == ('127.0.0.1', 6102) + #else: + #assert beta.ha == ('0.0.0.0', 6102) + + #msgOut = b"alpha sends to beta" + #alpha.send(msgOut, beta.ha) + #time.sleep(0.05) + #msgIn, src = beta.receive() + #assert msgOut == msgIn + #assert src[1] == alpha.port # ports equal + + #msgOut = b"alpha sends to alpha" + #alpha.send(msgOut, alpha.ha) + #time.sleep(0.05) + #msgIn, src = alpha.receive() + #assert msgOut == msgIn + #assert src[1] == alpha.port # ports equal + + #msgOut = b"beta sends to alpha" + #beta.send(msgOut, alpha.ha) + #time.sleep(0.05) + #msgIn, src = alpha.receive() + #assert msgOut == msgIn + #assert src[1] == beta.port # ports equal + + #msgOut = b"beta sends to beta" + #beta.send(msgOut, beta.ha) + #time.sleep(0.05) + #msgIn, src = beta.receive() + #assert msgOut == msgIn + #assert src[1] == beta.port # ports equal + + #alpha.close() + #beta.close() + + #assert not alpha.opened + #assert not beta.opened + #wl.flush() # just to test + #assert wl.samed # rx and tx same buffer + + #def addrBytes(ha): + #return f"('{ha[0]}', {ha[1]})".encode("ascii") + + #assert wl.readRx() == (b"\nTx "+addrBytes(beta.ha)+b":\nalpha sends to beta\n\nRx ('127.0.0.1', 6101):\n" + #b"alpha sends to beta\n\nTx "+addrBytes(alpha.ha)+b":\nalpha sends to alpha\n\nRx " + #b"('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx "+addrBytes(alpha.ha)+b":\nbeta se" + #b"nds to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n\nTx "+addrBytes(beta.ha)+ + #b":\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):\nbeta sends to b" + #b'eta\n') + #assert wl.readTx() == (b"\nTx "+addrBytes(beta.ha)+b":\nalpha sends to beta\n\nRx ('127.0.0.1', 6101):\n" + #b"alpha sends to beta\n\nTx "+addrBytes(alpha.ha)+b":\nalpha sends to alpha\n\nRx " + #b"('127.0.0.1', 6101):\nalpha sends to alpha\n\nTx "+addrBytes(alpha.ha)+b":\nbeta se" + #b"nds to alpha\n\nRx ('127.0.0.1', 6102):\nbeta sends to alpha\n\nTx "+addrBytes(beta.ha)+ + #b":\nbeta sends to beta\n\nRx ('127.0.0.1', 6102):\nbeta sends to b" + #b'eta\n') + + #assert wl.readTx() == wl.readRx() + + #assert not wl.opened + #"""Done Test""" if __name__ == "__main__":