This commit is contained in:
emdee 2023-12-07 19:38:26 +00:00
parent 48b4555a04
commit 8ab22f32bd
4 changed files with 109 additions and 101 deletions

View File

@ -6,7 +6,7 @@ wrapping of [Tox](https://tox.chat/)
Taken from the ```wrapper``` directory of the now abandoned
<https://github.com/toxygen-project/toxygen> ```next_gen``` branch
by Ingvar.
The basics of NGC groups are supported, as well as AV and toxencryptsave.
There is no coverage of conferences as they are not used in ```toxygen```
and the list of still unwrapped calls as of Sept. 2022 can be found in
@ -77,7 +77,7 @@ Others include:
forked from https://github.com/aitjcize/PyTox
by Wei-Ning Huang <aitjcize@gmail.com>.
Hardcore C wrapping which is not easy to keep up to date.
No support for NGC or toxencryptsave. Abandonned.
No support for NGC or toxencryptsave. Abandonned.
This was the basis for the TokTok/py-toxcore-c code until recently.
To our point of view, the ability of CTYPEs to follow code in the

View File

@ -493,7 +493,8 @@ class Tox:
:return: True on success.
"""
tox_err_set_info = c_int()
name = bytes(name, 'utf-8')
if type(name) != bytes:
name = bytes(name, 'utf-8')
LOG_DEBUG(f"tox_self_set_name")
result = Tox.libtoxcore.tox_self_set_name(self._tox_pointer,
c_char_p(name),

View File

@ -803,7 +803,7 @@ def bootstrap_tcp(lelts, lToxes, oArgs=None):
port,
key)
except Exception as e:
# The address could not be resolved to an IP address, or the IP address passed was invalid.
# The address could not be resolved to an IP address, or the IP address passed was invalid.
LOG.warn(f'bootstrap_tcp to {host} : ' +str(e))
continue
if not oRet:
@ -814,14 +814,13 @@ def bootstrap_tcp(lelts, lToxes, oArgs=None):
LOG.info(f'bootstrap_tcp to {host} not True' \
+f" last={int(oTox.mycon_time)}" )
elif oTox.self_get_connection_status() != TOX_CONNECTION['NONE']:
LOG.info(f'bootstrap_tcp to {host} connected' \
+f" last={int(oTox.mycon_time)}" )
LOG.info(f'bootstrap_tcp to {host} connected' )
break
else:
# LOG.debug(f'bootstrap_tcp to {host} but not connected'
# LOG.debug(f'bootstrap_tcp to {host} but not connected'
# +f" last={int(oTox.mycon_time)}" )
pass
def iNmapInfoNmap(sProt, sHost, sPort, key=None, environ=None, cmd=''):
if sHost in ['-', 'NONE']: return 0
if not nmap: return 0
@ -872,7 +871,7 @@ def bootstrap_iNmapInfo(lElts, oArgs, protocol="tcp4", bIS_LOCAL=False, iNODES=i
if os.environ['USER'] != 'root':
LOG.warn(f"bootstrap_iNmapInfo not ROOT USER={os.environ['USER']}")
cmd = 'sudo ' +cmd
lRetval = []
LOG.info(f"bootstrap_iNmapInfo testing nmap={nmap} len={len(lElts[:iNODES])}")
for elts in lElts[:iNODES]:

View File

@ -101,7 +101,7 @@ if False:
def LOG_DEBUG(l): LOG.debug('+ '+l)
def LOG_TRACE(l): pass # print('+ '+l)
else:
# just print to stdout so there is no complications from logging.
# just print to stdout so there is NO complications from logging.
def LOG_ERROR(l): print('EROR+ '+l)
def LOG_WARN(l): print('WARN+ '+l)
def LOG_INFO(l): print('INFO+ '+l)
@ -110,7 +110,8 @@ else:
ADDR_SIZE = 38 * 2
CLIENT_ID_SIZE = 32 * 2
THRESHOLD = 20
THRESHOLD = 30 # >25
iN = 6
global oTOX_OPTIONS
oTOX_OPTIONS = {}
@ -313,20 +314,31 @@ class ToxSuite(unittest.TestCase):
del cls.bob
del cls.alice
def setUp(self):
def bBobSetUp(self):
"""
"""
if hasattr(self, 'baid') and self.baid >= 0 and \
self.baid in self.bob.self_get_friend_list():
LOG.warn(f"setUp ALICE IS ALREADY IN BOBS FRIEND LIST")
return False
elif self.bob.self_get_friend_list_size() >= 1:
LOG.warn(f"setUp BOB STILL HAS A FRIEND LIST")
return False
return True
def bAliceSetUp(self):
if hasattr(self, 'abid') and self.abid >= 0 and \
self.abid in self.alice.self_get_friend_list():
LOG.warn(f"setUp BOB IS ALREADY IN ALICES FRIEND LIST")
return False
elif self.alice.self_get_friend_list_size() >= 1:
LOG.warn(f"setUp ALICE STILL HAS A FRIEND LIST")
return False
return True
def setUp(self):
self.bBobSetUp()
self.bAliceSetUp()
def tearDown(self):
"""
@ -344,7 +356,7 @@ class ToxSuite(unittest.TestCase):
super(ToxSuite, self).run(result)
def get_connection_status(self):
if self.bob.mycon_time == -1 or self.alice.mycon_time == -1:
if self.bob.mycon_time <= 1 or self.alice.mycon_time <= 1:
pass
# drop through
elif self.bob.dht_connected == TOX_CONNECTION['NONE']:
@ -372,9 +384,11 @@ class ToxSuite(unittest.TestCase):
def call_bootstrap(self, num=None, lToxes=None, i=0):
if num == None: num=ts.iNODES
if lToxes is None:
lToxes = [self.alice, self.bob]
# LOG.debug(f"call_bootstrap network={oTOX_OARGS.network}")
if oTOX_OARGS.network in ['new', 'newlocal', 'localnew']:
ts.bootstrap_local(self.lUdp, [self.alice, self.bob])
ts.bootstrap_local(self.lUdp, lToxes)
elif not ts.bAreWeConnected():
LOG.warning('we are NOT CONNECTED')
else:
@ -384,8 +398,6 @@ class ToxSuite(unittest.TestCase):
else:
lElts = self.lUdp[:num+i]
LOG.debug(f"call_bootstrap ts.bootstrap_udp {len(lElts)}")
if lToxes is None:
lToxes = [self.alice, self.bob]
ts.bootstrap_udp(lElts, lToxes)
random.shuffle(self.lTcp)
lElts = self.lTcp[:num+i]
@ -519,13 +531,7 @@ class ToxSuite(unittest.TestCase):
return oRet
def bob_add_alice_as_friend_norequest(self):
if hasattr(self, 'baid') and self.baid >= 0 and \
self.baid in self.bob.self_get_friend_list():
LOG.warn('Alice is already in bobs friend list')
return True
if self.bob.self_get_friend_list_size() >= 1:
LOG.warn(f'Bob has a friend list {self.bob.self_get_friend_list()}')
return True
if not self.bBobSetUp(): return True
MSG = 'Hi, this is Bob.'
iRet = self.bob.friend_add_norequest(self.alice._address)
@ -540,12 +546,7 @@ class ToxSuite(unittest.TestCase):
return True
def alice_add_bob_as_friend_norequest(self):
if hasattr(self, 'abid') and self.abid >= 0 and \
self.abid in self.alice.self_get_friend_list():
LOG.warn('Alice is already in Bobs friend list')
return True
if self.alice.self_get_friend_list_size() >= 1:
LOG.warn(f'Alice has a friend list {self.alice.self_get_friend_list()}')
if not self.bAliceSetUp(): return True
iRet = self.alice.friend_add_norequest(self.bob._address)
if iRet < 0:
@ -559,23 +560,18 @@ class ToxSuite(unittest.TestCase):
return True
def both_add_as_friend_norequest(self):
if not hasattr(self, 'abid') or self.abid < 0:
assert self.alice_add_bob_as_friend_norequest()
else:
LOG.warn('Bobs is already in Alices friend list')
if not hasattr(self, 'abid') or self.abid < 0:
raise AssertionError("both_add_as_friend_norequest alice, 'abid'")
if not hasattr(self, 'baid') or self.baid < 0:
if self.bBobSetUp():
assert self.bob_add_alice_as_friend_norequest()
else:
LOG.warn('Alice is already in Bobs friend list')
if self.bAliceSetUp():
assert self.alice_add_bob_as_friend_norequest()
if not hasattr(self, 'baid') or self.baid < 0:
raise AssertionError("both_add_as_friend_norequest bob, 'baid'")
LOG.warn("both_add_as_friend_norequest no bob, baid")
if not hasattr(self, 'abid') or self.abid < 0:
LOG.warn("both_add_as_friend_norequest no alice, abid")
#: Test last online
assert self.alice.friend_get_last_online(self.abid) is not None
assert self.bob.friend_get_last_online(self.baid) is not None
#? assert self.alice.friend_get_last_online(self.abid) is not None
#? assert self.bob.friend_get_last_online(self.baid) is not None
return True
def bob_add_alice_as_friend(self):
@ -586,6 +582,7 @@ class ToxSuite(unittest.TestCase):
"""
MSG = 'Alice, this is Bob.'
sSlot = 'friend_request'
if not self.bBobSetUp(): return True
def alices_on_friend_request(iTox,
public_key,
@ -609,7 +606,7 @@ class ToxSuite(unittest.TestCase):
if inum < 0:
LOG.warning('bob.friend_add !>= 0 ' +repr(inum))
if not self.wait_otox_attrs(self.bob, [sSlot]):
LOG_WARN(f"bob.friend_add no {sSlot}")
LOG_WARN(f"bob.friend_add NO {sSlot}")
# return False
self.baid = self.bob.friend_by_public_key(self.alice._address)
assert self.baid >= 0, self.baid
@ -633,6 +630,7 @@ class ToxSuite(unittest.TestCase):
"""
MSG = 'Bob, this is Alice.'
sSlot = 'friend_request'
if not self.bAliceSetUp(): return True
try:
abid = self.alice.friend_by_public_key(self.bob._address)
@ -644,7 +642,7 @@ class ToxSuite(unittest.TestCase):
abid in self.alice.self_get_friend_list():
LOG.warning('alice friend exists ' +repr(abid))
return True
def bobs_on_friend_request(iTox,
public_key,
message_data,
@ -667,7 +665,7 @@ class ToxSuite(unittest.TestCase):
if not inum >= 0:
LOG.warning('alice.friend_add !>= 0 ' +repr(inum))
if not self.wait_otox_attrs(self.alice, [sSlot]):
LOG.error(f"alice.friend_add FAILED wait {sSlot}")
LOG_WARN(f"alice.friend_add NO wait {sSlot}")
#? return False
self.abid = self.alice.friend_by_public_key(self.bob._address)
assert self.abid >= 0, self.abid
@ -684,7 +682,8 @@ class ToxSuite(unittest.TestCase):
def both_add_as_friend(self):
assert self.bob_add_alice_as_friend()
assert self.alice_add_bob_as_friend()
assert self.alice_add_bob_as_friend_norequest()
return True
def bob_add_alice_as_friend_and_status(self):
if bUSE_NOREQUEST:
@ -734,7 +733,8 @@ class ToxSuite(unittest.TestCase):
if not self.wait_otox_attrs(self.bob,
['friend_conn_status',
'friend_status']):
return False
LOG_WARN('bob_add_alice_as_friend_and_status NO')
# return False
except Exception as e:
LOG.error(f"bob_add_alice_as_friend_and_status ERROR {e}")
return False
@ -841,19 +841,19 @@ class ToxSuite(unittest.TestCase):
# tox.callback_group_peer_join
return iGrp
def wait_friend_get_connection_status(self, otox, fid, n=4):
def wait_friend_get_connection_status(self, otox, fid, n=iN):
i = 0
while i < n:
iRet = otox.friend_get_connection_status(fid)
if not self.get_connection_status() or iRet == TOX_CONNECTION['NONE']:
LOG.warning(f"wait_friend_get_connection_status NOT CONNECTED {i}")
if iRet == TOX_CONNECTION['NONE']:
LOG.warning(f"wait_friend_get_connection_status NOT CONNECTED i={i} {iRet}")
self.loop_until_connected()
else:
LOG.info("wait_friend_get_connection_status")
LOG.info("wait_friend_get_connection_status {iRet}")
return True
i += 1
else:
LOG.error("wait_friend_get_connection_status")
LOG.error("wait_friend_get_connection_status n={n}")
return False
def warn_if_no_cb(self, alice, sSlot):
@ -935,7 +935,7 @@ class ToxSuite(unittest.TestCase):
else:
LOG.warning(f"bootstrap_local_netstat NOT {port} iStatus={iStatus}")
@unittest.skipIf(not bIS_LOCAL, "local test")
#?? @unittest.skipIf(not bIS_LOCAL, "local test")
def test_bootstrap_local(self): # works
"""
t:call_bootstrap
@ -1120,6 +1120,7 @@ class ToxSuite(unittest.TestCase):
if hasattr(self, 'baid') and self.baid >= 0:
self.bob.friend_delete(self.baid)
def test_alice_add_bob_as_friend_norequest(self): # works - intermittent failures
"""
t:friend_delete
@ -1146,6 +1147,14 @@ class ToxSuite(unittest.TestCase):
"""
try:
self.both_add_as_friend_norequest()
assert len(self.bob.self_get_friend_list()) > 0
assert len(self.alice.self_get_friend_list()) > 0
except AssertionError as e:
LOG.error(f"Failed test {e}")
raise
except Exception as e:
LOG.error(f"Failed test {e}")
raise
finally:
if hasattr(self, 'baid') and self.baid >= 0:
self.bob.friend_delete(self.baid)
@ -1219,20 +1228,20 @@ class ToxSuite(unittest.TestCase):
raise
except Exception as e:
#WTF?
if hasattr(self, 'abid') and self.abid >= 0:
self.alice.friend_delete(self.abid)
LOG.error(f"test_alice_add_bob_as_friend EXCEPTION {e}")
raise
finally:
if hasattr(self, 'baid') and self.baid >= 0:
self.bob.friend_delete(self.baid)
if hasattr(self, 'abid') and self.abid >= 0:
self.alice.friend_delete(self.abid)
if len(self.alice.self_get_friend_list()) > 0:
LOG.warn(f"WTF alice.self_get_friend_list() {alice.self_get_friend_list()}")
# @unittest.skip('crashes double free or corruption (fasttop)') on update
# @unittest.skip('fails')
# @expectedFailure # fails
@unittest.skip('malloc(): unaligned tcache chunk detected')
# @expectedFailure # fails
#? @unittest.skip('malloc(): unaligned tcache chunk detected')
#?? @unittest.skip('segv')
def test_both_add_as_friend(self): # works
try:
assert self.both_add_as_friend()
@ -1243,9 +1252,9 @@ class ToxSuite(unittest.TestCase):
LOG.error(f"test_both_add_as_friend EXCEPTION {e}")
raise
finally:
if hasattr(self,'baid') and self.baid:
if hasattr(self,'baid') and self.baid >= 0:
self.bob.friend_delete(self.baid)
if hasattr(self,'abid') and self.abid:
if hasattr(self,'abid') and self.abid >= 0:
self.alice.friend_delete(self.abid)
def test_groups(self):
@ -1293,7 +1302,6 @@ class ToxSuite(unittest.TestCase):
if hasattr(self, 'baid') and self.baid >= 0:
self.bob.friend_delete(self.baid)
@expectedFail('dunno fails')
def test_on_friend_status_message(self): # fails
"""
t:self_set_status_message
@ -1329,7 +1337,7 @@ class ToxSuite(unittest.TestCase):
status_message = bytes(MSG, 'utf-8')
self.alice.self_set_status_message(status_message)
if not self.wait_otox_attrs(self.bob, [sSlot]):
LOG_WARN(f"on_friend_status_message FAILED {sSlot}")
LOG_WARN(f"on_friend_status_message NO {sSlot}")
assert self.bob.friend_get_status_message(self.baid) == MSG, \
f"message={self.bob.friend_get_status_message(self.baid)}"
@ -1337,7 +1345,7 @@ class ToxSuite(unittest.TestCase):
f"message_len={self.bob.friend_get_status_message_size(self.baid)}"
except AssertionError as e:
LOG.error(f"Failed test {e}")
LOG.error(f"test_on_friend_status_message FAILED {e}")
raise
except Exception as e:
LOG.error(f"test_on_friend_status_message EXCEPTION {e}")
@ -1347,13 +1355,13 @@ class ToxSuite(unittest.TestCase):
if hasattr(self, 'baid') and self.baid >= 0:
self.bob.friend_delete(self.baid)
if hasattr(self, 'abid') and self.abid >= 0:
self.bob.friend_delete(self.abid)
self.alice.friend_delete(self.abid)
#? @unittest.skip('malloc(): unaligned tcache chunk detected')
#? @unittest.skip('double free or corruption (fasttop)')
#?segv after TestS DEBUG wait_otox_attrs alice for ['friend_request'] 0 last=1701822930
@unittest.skip('segv')
def test_friend(self): # works? sometimes
#?? @unittest.skip('segv')
def test_friend(self): # works! sometimes
"""
t:friend_get_name
t:friend_get_name_size
@ -1370,14 +1378,14 @@ class ToxSuite(unittest.TestCase):
assert self.alice_add_bob_as_friend()
try:
a = self.alice.self_get_address()[:CLIENT_ID_SIZE]
assert self.bob.friend_get_public_key(self.baid) == a
LOG.error(f"test_friend BAID {a}")
assert self.bob.friend_get_public_key(self.baid) == a, \
LOG.error(f"test_friend BAID {a}")
del a
#: Test friend_get_public_key
b = self.bob.self_get_address()[:CLIENT_ID_SIZE]
assert self.alice.friend_get_public_key(self.abid) == b
LOG.error(f"test_friend ABID {b}")
assert self.alice.friend_get_public_key(self.abid) == b, \
LOG.error(f"test_friend ABID {b}")
del b
except AssertionError as e:
LOG.error(f"Failed test {e}")
@ -1391,10 +1399,8 @@ class ToxSuite(unittest.TestCase):
if hasattr(self, 'abid') and self.abid >= 0:
self.alice.friend_delete(self.abid)
# @unittest.skip('fails unaligned tcache chunk detected')
# @unittest.skip('double free or corruption (fasttop)') # orig
# @expectedFail('fails') # DEBUG wait_otox_attrs bob for ['friend_status'] 50
@unittest.skip('segv')
#! @expectedFail('fails') # assert self.bob.friend_get_status(self.baid) == TOX_USER_STATUS['BUSY']
@unittest.skip('malloc(): unaligned tcache chunk detected')
def test_user_status(self): # fails
"""
t:self_get_status
@ -1429,6 +1435,7 @@ class ToxSuite(unittest.TestCase):
sSTATUS = TOX_USER_STATUS['BUSY']
self.alice.self_set_status(sSTATUS)
if not self.wait_otox_attrs(self.bob, [sSlot]):
# malloc(): unaligned tcache chunk detected
LOG_WARN(f' NO {sSlot}')
assert self.bob.friend_get_status(self.baid) == TOX_USER_STATUS['BUSY'], \
@ -1452,24 +1459,23 @@ class ToxSuite(unittest.TestCase):
t:friend_get_connection_status
t:on_friend_connection_status
"""
LOG.info("test_connection_status ")
if bUSE_NOREQUEST:
assert self.bob_add_alice_as_friend_norequest()
else:
assert self.bob_add_alice_as_friend()
sSlot = 'friend_connection_status'
setattr(self.bob, sSlot, None)
def bobs_on_friend_connection_status(iTox, friend_id, iStatus, *largs):
setattr(self.bob, sSlot, True)
LOG_INFO(f"bobs_on_friend_connection_status " +repr(iStatus))
try:
assert friend_id == self.baid
except Exception as e:
LOG_ERROR(f"bobs_on_friend_connection_status ERROR {e}")
setattr(self.bob, sSlot, True)
opts = oToxygenToxOptions(oTOX_OARGS)
try:
if bUSE_NOREQUEST:
assert self.bob_add_alice_as_friend_norequest()
else:
assert self.bob_add_alice_as_friend()
setattr(self.bob, sSlot, True)
self.bob.callback_friend_connection_status(bobs_on_friend_connection_status)
@ -1479,7 +1485,8 @@ class ToxSuite(unittest.TestCase):
self.alice = Tox(opts, app=oAPP)
LOG.info("test_connection_status maked alice")
assert self.wait_otox_attrs(self.bob, [sSlot])
if not self.wait_otox_attrs(self.bob, [sSlot]):
LOG_WARN(f' NO {sSlot}')
except AssertionError as e:
LOG.error(f"test_connection_status Failed test {e}")
raise
@ -1488,13 +1495,12 @@ class ToxSuite(unittest.TestCase):
raise
finally:
self.bob.callback_friend_connection_status(None)
#? assert self.bob.friend_get_connection_status(self.aid) is False
if hasattr(self, 'baid') and self.baid >= 0:
self.bob.friend_delete(self.baid)
# TestS DEBUG wait_otox_attrs bob for ['friend_name'] 5 last=1701826540
# @unittest.skip('crashes')
@expectedFail('fails') # new name if empty
def test_friend_name(self): # works! or crashes!
"""
t:self_set_name
@ -1530,11 +1536,13 @@ class ToxSuite(unittest.TestCase):
self.warn_if_no_cb(self.bob, sSlot)
self.alice.self_set_name(NEWNAME)
if not self.wait_otox_attrs(self.bob, [sSlot]):
LOG_WARN(f"bobs_on_friend_name FAILED {sSlot}")
LOG_WARN(f"bobs_on_friend_name NO {sSlot}")
# name=None
assert self.bob.friend_get_name(self.baid) == NEWNAME
assert self.bob.friend_get_name_size(self.baid) == len(NEWNAME)
assert self.bob.friend_get_name(self.baid) == NEWNAME, \
f"{self.bob.friend_get_name(self.baid)} != {NEWNAME}"
assert self.bob.friend_get_name_size(self.baid) == len(NEWNAME), \
f"{self.bob.friend_get_name_size(self.baid)} != {len(NEWNAME)}"
except AssertionError as e:
LOG.error(f"test_friend_name Failed test {e}")
@ -1582,7 +1590,7 @@ class ToxSuite(unittest.TestCase):
assert self.both_add_as_friend_norequest()
else:
assert self.both_add_as_friend()
if not self.wait_friend_get_connection_status(self.alice, self.abid, n=4):
if not self.wait_friend_get_connection_status(self.alice, self.abid, n=iN):
LOG.warn('abid not connected')
self.alice.callback_friend_message(alices_on_friend_message)
self.warn_if_no_cb(self.alice, sSlot)
@ -1600,7 +1608,7 @@ class ToxSuite(unittest.TestCase):
bytes(MSG, 'UTF-8')])
assert iMesId >= 0
if not self.wait_otox_attrs(self.alice, [sSlot]):
LOG_WARN(f"alices_on_friend_message FAILED {sSlot}")
LOG_WARN(f"alices_on_friend_message NO {sSlot}")
except ArgumentError as e:
# ArgumentError('This client is currently NOT CONNECTED to the friend.')
# dunno
@ -1621,7 +1629,6 @@ class ToxSuite(unittest.TestCase):
self.alice.friend_delete(self.abid)
# This client is currently not connected to the friend.
@expectedFail('fails')
def test_friend_action(self): # works! sometimes?
"""
t:on_friend_action
@ -1633,7 +1640,7 @@ class ToxSuite(unittest.TestCase):
ACTION = 'Kick'
sSlot = 'friend_read_action'
setattr(self.bob, sSlot, None)
def their_on_friend_action(iTox, fid, msg_type, action, *largs):
def UNUSEDtheir_on_friend_action(iTox, fid, msg_type, action, *largs):
LOG_DEBUG(f"their_on_friend_action {fid} {msg_type} {action}")
try:
assert msg_type == TOX_MESSAGE_TYPE['ACTION']
@ -1665,9 +1672,9 @@ class ToxSuite(unittest.TestCase):
else:
assert self.both_add_as_friend()
if not self.wait_friend_get_connection_status(self.bob, self.baid, n=4):
if not self.wait_friend_get_connection_status(self.bob, self.baid, n=iN):
LOG.warn('baid not connected')
if not self.wait_friend_get_connection_status(self.alice, self.abid, n=4):
if not self.wait_friend_get_connection_status(self.alice, self.abid, n=iN):
LOG.warn('abid not connected')
self.bob.callback_friend_read_receipt(their_on_read_reciept) #was their_on_friend_action
@ -1684,7 +1691,8 @@ class ToxSuite(unittest.TestCase):
[self.baid,
TOX_MESSAGE_TYPE['ACTION'],
bytes(ACTION, 'UTF-8')])
assert self.wait_otox_attrs(self.alice, [sSlot])
if not self.wait_otox_attrs(self.alice, [sSlot]):
LOG_WARN(f"alice test_friend_action NO {sSlot}")
except AssertionError as e:
LOG.error(f"Failed test {e}")
raise
@ -1739,7 +1747,7 @@ class ToxSuite(unittest.TestCase):
self.warn_if_no_cb(self.bob, sSlot)
self.alice.self_set_typing(self.abid, False)
if not self.wait_otox_attrs(self.bob, [sSlot]):
LOG_WARN(f"bobs_on_friend_typing FAILED {sSlot}")
LOG_WARN(f"bobs_on_friend_typing NO {sSlot}")
if not hasattr(self.bob, sSlot+'_cb') or \
not getattr(self.bob, sSlot+'_cb'):
LOG.warning(f"self.bob.{sSlot}_cb NOT EXIST")
@ -1878,8 +1886,8 @@ class ToxSuite(unittest.TestCase):
FILE_ID = 32*'1' #
# required
assert self.wait_friend_get_connection_status(self.bob, self.baid, n=4)
assert self.wait_friend_get_connection_status(self.alice, self.abid, n=4)
assert self.wait_friend_get_connection_status(self.bob, self.baid, n=iN)
assert self.wait_friend_get_connection_status(self.alice, self.abid, n=iN)
i = 0
iKind = 0
@ -1910,10 +1918,10 @@ class ToxSuite(unittest.TestCase):
LOG.debug('\n' + traceback.format_exc())
if not self.wait_otox_attrs(self.bob, ['completed']):
LOG.warning(f"test_file_transfer Bob not completed")
LOG_WARN(f"test_file_transfer Bob NO completed")
return False
if not self.wait_otox_attrs(self.alice, ['completed']):
LOG.warning(f"test_file_transfer Alice not completed")
LOG_WARN(f"test_file_transfer Alice NO completed")
return False
return True