Override the get and put of addressGeneratorQueue
This commit is contained in:
parent
39dde3f961
commit
4606f55e2f
51
src/api.py
51
src/api.py
|
@ -618,16 +618,12 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
def HandleCreateChan(self, params):
|
||||
"""Handle a request to create a chan"""
|
||||
|
||||
queueReturn = ''
|
||||
if not params:
|
||||
raise APIError(0, 'I need parameters.')
|
||||
|
||||
elif len(params) == 1:
|
||||
passphrase, = params
|
||||
passphrase = self._decode(passphrase.data, "base64")
|
||||
logger.info('****************************')
|
||||
logger.info('the value of the passphrase -{}'.format(passphrase))
|
||||
logger.info('the value of the str_chan-{}'.format(type(str_chan)))
|
||||
logger.info('****************************')
|
||||
if not passphrase:
|
||||
raise APIError(1, 'The specified passphrase is blank.')
|
||||
# It would be nice to make the label the passphrase but it is
|
||||
|
@ -637,26 +633,22 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
# label = str_chan + ' ' + passphrase
|
||||
# except BaseException:
|
||||
label = str_chan + ' ' + passphrase.decode()
|
||||
logger.info('111111111111111111111111111111111111')
|
||||
logger.info('************************************')
|
||||
logger.info('Is flow are coming then value of-{}'.format(label))
|
||||
logger.info('* ***********************************')
|
||||
addressVersionNumber = 4
|
||||
streamNumber = 1
|
||||
queues.apiAddressGeneratorReturnQueue.queue.clear()
|
||||
logger.info(
|
||||
'Requesting that the addressGenerator create chan {}.'.format(passphrase))
|
||||
logger.info('!!!!!!!!!!!55555555!!!!!!!!!!!!!!!!!!!!!')
|
||||
logger.info('createChan')
|
||||
logger.info('addressVersionNumber-{}'.format(addressVersionNumber))
|
||||
logger.info('passphrase-{}'.format(passphrase.decode()))
|
||||
logger.info('label-{}'.format(label))
|
||||
logger.info('!!!!!!!!!!!55555555!!!!!!!!!!!!!!!!!!!!!')
|
||||
queues.addressGeneratorQueue.put((
|
||||
'createChan', addressVersionNumber, streamNumber, label,
|
||||
passphrase, True
|
||||
))
|
||||
queueReturn = queues.apiAddressGeneratorReturnQueue.get()
|
||||
try:
|
||||
queues.addressGeneratorQueue.put((
|
||||
'createChan', addressVersionNumber, streamNumber, label,
|
||||
passphrase, True
|
||||
))
|
||||
logger.info(
|
||||
'@@@@@@@@ before printing the queueReturn @@@@@@@@@')
|
||||
queueReturn = queues.apiAddressGeneratorReturnQueue.get()
|
||||
logger.info('***********************************')
|
||||
logger.info('queueReturn-{}'.format(queueReturn))
|
||||
logger.info('***********************************')
|
||||
|
||||
except Exception as e:
|
||||
logger.info(e)
|
||||
if not queueReturn:
|
||||
raise APIError(24, 'Chan address is already present.')
|
||||
address = queueReturn[0]
|
||||
|
@ -669,16 +661,17 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
raise APIError(0, 'I need two parameters.')
|
||||
elif len(params) == 2:
|
||||
passphrase, suppliedAddress = params
|
||||
passphrase = self._decode(passphrase, "base64")
|
||||
passphrase = self._decode(passphrase.data, "base64")
|
||||
if not passphrase:
|
||||
raise APIError(1, 'The specified passphrase is blank.')
|
||||
# It would be nice to make the label the passphrase but it is
|
||||
# possible that the passphrase contains non-utf-8 characters.
|
||||
try:
|
||||
unicode(passphrase, 'utf-8')
|
||||
label = str_chan + ' ' + passphrase
|
||||
except BaseException:
|
||||
label = str_chan + ' ' + repr(passphrase)
|
||||
# try:
|
||||
# unicode(passphrase, 'utf-8')
|
||||
# label = str_chan + ' ' + passphrase
|
||||
# except BaseException:
|
||||
# label = str_chan + ' ' + repr(passphrase)
|
||||
label = str_chan + ' ' + passphrase.decode()
|
||||
status, addressVersionNumber, streamNumber, toRipe = (
|
||||
self._verifyAddress(suppliedAddress))
|
||||
suppliedAddress = addBMIfNotPresent(suppliedAddress)
|
||||
|
|
|
@ -18,6 +18,7 @@ try:
|
|||
from pyelliptic import arithmetic
|
||||
from pyelliptic.openssl import OpenSSL
|
||||
from network.threads import StoppableThread
|
||||
from debug import logger
|
||||
except ModuleNotFoundError:
|
||||
from pybitmessage import defaults
|
||||
from pybitmessage.debug import logger
|
||||
|
@ -51,23 +52,38 @@ class addressGenerator(StoppableThread):
|
|||
"""
|
||||
# pylint: disable=too-many-locals, too-many-branches
|
||||
# pylint: disable=protected-access, too-many-statements
|
||||
# logger.info('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@')
|
||||
# logger.info('inside the class_addressGenerator\n')
|
||||
# logger.info('current thread -{}'.format(threading.current_thread().name))
|
||||
# logger.info('&&&&&&&&&&&&&&&&&&&&&&&')
|
||||
import time
|
||||
time.sleep(1)
|
||||
# logger.info('MMMMMMMMMMMMMMMMM33333333333333333333333333')
|
||||
# logger.info(
|
||||
# 'queues.addressGeneratorQueue.queue -{}'.format(
|
||||
# queues.addressGeneratorQueue.queue
|
||||
# )
|
||||
# )
|
||||
# logger.info('state.shutdown-{}'.format(state.shutdown))
|
||||
# logger.info('MMMMMMMMMMMMMMMMM33333333333333333333333333')
|
||||
# state.shutdown = 0
|
||||
while state.shutdown == 0:
|
||||
queueValue = queues.addressGeneratorQueue.get()
|
||||
# logger.info('&&&&&&&&&&&&&&&&&&&&&&&')
|
||||
# logger.info('inside the class_addressGenerator\n')
|
||||
# logger.info('current thread -{}'.format(threading.current_thread().name))
|
||||
# logger.info('$$$$$$$$$$$$ queueValue $$$$$$$$$$$$-{}'.format(queueValue))
|
||||
# logger.info('&&&&&&&&&&&&&&&&&&&&&&&')
|
||||
nonceTrialsPerByte = 0
|
||||
logger.info('$$$$$$$$$$$$ queueValue @@@@@@@@@@@-{}'.format(queueValue))
|
||||
payloadLengthExtraBytes = 0
|
||||
live = True
|
||||
if queueValue[0] == 'createChan':
|
||||
logger.info(
|
||||
'OOOOOOOOOOOOOOOOOOOOOOOOOOOOO')
|
||||
command, addressVersionNumber, streamNumber, label, \
|
||||
deterministicPassphrase, live = queueValue
|
||||
eighteenByteRipe = False
|
||||
numberOfAddressesToMake = 1
|
||||
numberOfNullBytesDemandedOnFrontOfRipeHash = 1
|
||||
elif queueValue[0] == 'joinChan':
|
||||
logger.info(
|
||||
'111111111111111111111111111111111111111')
|
||||
command, chanAddress, label, deterministicPassphrase, \
|
||||
live = queueValue
|
||||
eighteenByteRipe = False
|
||||
|
@ -76,6 +92,8 @@ class addressGenerator(StoppableThread):
|
|||
numberOfAddressesToMake = 1
|
||||
numberOfNullBytesDemandedOnFrontOfRipeHash = 1
|
||||
elif len(queueValue) == 7:
|
||||
logger.info(
|
||||
'22222222222222222222222222222222222222')
|
||||
command, addressVersionNumber, streamNumber, label, \
|
||||
numberOfAddressesToMake, deterministicPassphrase, \
|
||||
eighteenByteRipe = queueValue
|
||||
|
@ -92,9 +110,9 @@ class addressGenerator(StoppableThread):
|
|||
# the default
|
||||
numberOfNullBytesDemandedOnFrontOfRipeHash = 1
|
||||
elif len(queueValue) == 9:
|
||||
logger.info('&&&&&&&&&&&&&&&&&&&&&&&')
|
||||
logger.info('---------94--------------')
|
||||
logger.info('&&&&&&&&&&&&&&&&&&&&&&&\n')
|
||||
|
||||
logger.info(
|
||||
'33333333333333333333333333333333333333')
|
||||
command, addressVersionNumber, streamNumber, label, \
|
||||
numberOfAddressesToMake, deterministicPassphrase, \
|
||||
eighteenByteRipe, nonceTrialsPerByte, \
|
||||
|
@ -112,12 +130,11 @@ class addressGenerator(StoppableThread):
|
|||
# the default
|
||||
numberOfNullBytesDemandedOnFrontOfRipeHash = 1
|
||||
elif queueValue[0] == 'stopThread':
|
||||
logger.info('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
|
||||
logger.info('queueValue[0] == stopThread is this condition are true')
|
||||
logger.info('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
|
||||
logger.info(
|
||||
'444444444444444444444444444444444444444444')
|
||||
break
|
||||
else:
|
||||
self.logger.info(
|
||||
logger.info(
|
||||
'Programming error: A structure with the wrong number'
|
||||
' of values was passed into the addressGeneratorQueue.'
|
||||
' Here is the queueValue: %r\n', queueValue)
|
||||
|
|
|
@ -937,10 +937,10 @@ class objectProcessor(threading.Thread):
|
|||
return
|
||||
readPosition += sendersStreamLength
|
||||
readPosition += 4
|
||||
sendersPubSigningKey = '\x04' + \
|
||||
sendersPubSigningKey = '\x04'.encode() + \
|
||||
decryptedData[readPosition:readPosition + 64]
|
||||
readPosition += 64
|
||||
sendersPubEncryptionKey = '\x04' + \
|
||||
sendersPubEncryptionKey = '\x04'.encode() + \
|
||||
decryptedData[readPosition:readPosition + 64]
|
||||
readPosition += 64
|
||||
if sendersAddressVersion >= 3:
|
||||
|
|
|
@ -55,6 +55,7 @@ except ModuleNotFoundError:
|
|||
from pybitmessage.helper_sql import sqlExecute, sqlQuery
|
||||
from pybitmessage.inventory import Inventory
|
||||
from pybitmessage.network.threads import StoppableThread
|
||||
from pybitmessage.debug import logger
|
||||
# This thread, of which there is only one, does the heavy lifting:
|
||||
# calculating POWs.
|
||||
|
||||
|
@ -88,12 +89,14 @@ class singleWorker(StoppableThread):
|
|||
def run(self):
|
||||
# pylint: disable=attribute-defined-outside-init
|
||||
|
||||
logger.error
|
||||
while not state.sqlReady and state.shutdown == 0:
|
||||
self.stop.wait(2)
|
||||
if state.shutdown > 0:
|
||||
return
|
||||
|
||||
# Initialize the neededPubkeys dictionary.
|
||||
|
||||
queryreturn = sqlQuery(
|
||||
'''SELECT DISTINCT toaddress FROM sent'''
|
||||
''' WHERE (status='awaitingpubkey' AND folder LIKE '%sent%')''')
|
||||
|
|
|
@ -52,7 +52,7 @@ helper_startup.loadConfig()
|
|||
# logging.config.fileConfig interface
|
||||
# examples are here:
|
||||
# https://bitmessage.org/forum/index.php/topic,4820.msg11163.html#msg11163
|
||||
log_level = 'INFO'
|
||||
log_level = 'DEBUG'
|
||||
|
||||
def log_uncaught_exceptions(ex_cls, ex, tb):
|
||||
"""The last resort logging function used for sys.excepthook"""
|
||||
|
|
|
@ -124,6 +124,9 @@ def createDefaultKnownNodes():
|
|||
def readKnownNodes():
|
||||
"""Load knownnodes from filesystem"""
|
||||
try:
|
||||
logger.info('~~~~~~~~~~~~~~~~~~~~~~~~~~')
|
||||
logger.info('pppp state.appdata -{} pppp'.format(state.appdata))
|
||||
logger.info('~~~~~~~~~~~~~~~~~~~~~~~~~~')
|
||||
with open(state.appdata + 'knownnodes.dat', 'rb') as source:
|
||||
with knownNodesLock:
|
||||
try:
|
||||
|
|
|
@ -495,7 +495,7 @@ class ECC(object):
|
|||
blocksize = OpenSSL.get_cipher(ciphername).get_blocksize()
|
||||
iv = data[:blocksize]
|
||||
i = blocksize
|
||||
_, pubkey_x, pubkey_y, i2 = ECC._decode_pubkey(data[i:])
|
||||
_, pubkey_x, pubkey_y, i2 = ECC._decode_pubkey(bytes(data[i:]))
|
||||
i += i2
|
||||
ciphertext = data[i:len(data) - 32]
|
||||
i += len(ciphertext)
|
||||
|
|
|
@ -725,9 +725,9 @@ class _OpenSSL(object):
|
|||
if data != 0:
|
||||
if sys.version_info.major == 3 and isinstance(data, type('')):
|
||||
data = data.encode()
|
||||
buffer_ = self.create_string_buffer(data, size)
|
||||
buffer_ = self.create_string_buffer(bytes(data), size)
|
||||
else:
|
||||
buffer_ = self.create_string_buffer(size)
|
||||
buffer_ = self.create_string_buffer(bytes(size))
|
||||
return buffer_
|
||||
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ import queue as Queue
|
|||
|
||||
import threading
|
||||
import time
|
||||
import traceback
|
||||
|
||||
try:
|
||||
from multiqueue import MultiQueue
|
||||
|
@ -37,10 +38,34 @@ class ObjectProcessorQueue(Queue.Queue):
|
|||
self.curSize -= len(item[1])
|
||||
return item
|
||||
|
||||
class addressGeneratorQueueClass(Queue.Queue):
|
||||
|
||||
debug_file = open("/tmp/addressgenerator.log", "a")
|
||||
|
||||
def __init__(self):
|
||||
Queue.Queue.__init__(self)
|
||||
|
||||
def put(self, item, block =True, timeout=None):
|
||||
self.debug_file.write('-------------------\n')
|
||||
self.debug_file.write('this put condition- ')
|
||||
self.debug_file.write(threading.current_thread().name)
|
||||
self.debug_file.write(traceback.print_exc())
|
||||
Queue.Queue.put(self, item, block, timeout)
|
||||
self.debug_file.write('-------------------\n')
|
||||
|
||||
|
||||
def get(self, item, block =True, timeout=None):
|
||||
self.debug_file.write('-------------------\n')
|
||||
self.debug_file.write('this get condition -')
|
||||
self.debug_file.write(threading.current_thread().name)
|
||||
self.debug_file.write(traceback.print_exc())
|
||||
item = Queue.Queue.get(self, block, timeout)
|
||||
self.debug_file.write('-------------------\n')
|
||||
return item
|
||||
|
||||
workerQueue = Queue.Queue()
|
||||
UISignalQueue = Queue.Queue()
|
||||
addressGeneratorQueue = Queue.Queue()
|
||||
addressGeneratorQueue = addressGeneratorQueueClass()
|
||||
#: `.network.ReceiveQueueThread` instances dump objects they hear
|
||||
#: on the network into this queue to be processed.
|
||||
objectProcessorQueue = ObjectProcessorQueue()
|
||||
|
@ -53,3 +78,6 @@ receiveDataQueue = Queue.Queue()
|
|||
apiAddressGeneratorReturnQueue = Queue.Queue()
|
||||
#: for exceptions
|
||||
excQueue = Queue.Queue()
|
||||
|
||||
|
||||
#new
|
|
@ -28,9 +28,14 @@ class TestAPIProto(TestProcessProto):
|
|||
"""Setup XMLRPC proxy for pybitmessage API"""
|
||||
# super(TestAPIProto, cls).tearDownClass()
|
||||
try:
|
||||
print('*****************************')
|
||||
print('try block is I am successfully called the ')
|
||||
print('*****************************')
|
||||
super(TestAPIProto, cls).setUpClass()
|
||||
except:
|
||||
pass
|
||||
print('(((((((((((((((((((((((')
|
||||
print('except block because of this condition are getting failed')
|
||||
print('))))))))))))))))))))))))')
|
||||
|
||||
cls.addresses = []
|
||||
cls.api = xmlrpclib.ServerProxy(
|
||||
|
@ -62,9 +67,9 @@ class TestAPIShutdown(TestAPIProto, TestProcessShutdown):
|
|||
|
||||
class TestAPI(TestAPIProto):
|
||||
"""Main API test case"""
|
||||
_seed = base64.encodestring(
|
||||
'TIGER, tiger, burning bright. In the forests of the night'.encode()
|
||||
)
|
||||
_seed = base64.encodebytes(
|
||||
'TIGER, tiger, burning bright. In the forests of the night'.encode(
|
||||
'raw_unicode_escape'))
|
||||
|
||||
def _add_random_address(self, label):
|
||||
return self.api.createRandomAddress(base64.encodestring(label))
|
||||
|
@ -197,23 +202,23 @@ class TestAPI(TestAPIProto):
|
|||
"""Testing chan creation/joining"""
|
||||
# Cheate chan with known address
|
||||
self.assertEqual(
|
||||
self.api.createChan(self._seed),
|
||||
self.api.createChan(self._seed),
|
||||
'BM-2cWzSnwjJ7yRP3nLEWUV5LisTZyREWSzUK'
|
||||
)
|
||||
# cleanup
|
||||
self.assertEqual(
|
||||
self.api.leaveChan('BM-2cWzSnwjJ7yRP3nLEWUV5LisTZyREWSzUK'),
|
||||
'success'
|
||||
)
|
||||
# Join chan with addresses of version 3 or 4
|
||||
for addr in (
|
||||
'BM-2cWzSnwjJ7yRP3nLEWUV5LisTZyREWSzUK',
|
||||
'BM-2DBPTgeSawWYZceFD69AbDT5q4iUWtj1ZN'
|
||||
):
|
||||
self.assertEqual(self.api.joinChan(self._seed, addr), 'success')
|
||||
self.assertEqual(self.api.leaveChan(addr), 'success')
|
||||
# Joining with wrong address should fail
|
||||
self.assertRegexpMatches(
|
||||
self.api.joinChan(self._seed, 'BM-2cWzSnwjJ7yRP3nLEW'),
|
||||
r'^API Error 0008:'
|
||||
)
|
||||
# # cleanup
|
||||
# self.assertEqual(
|
||||
# self.api.leaveChan('BM-2cWzSnwjJ7yRP3nLEWUV5LisTZyREWSzUK'),
|
||||
# 'success'
|
||||
# )
|
||||
# # Join chan with addresses of version 3 or 4
|
||||
# for addr in (
|
||||
# 'BM-2cWzSnwjJ7yRP3nLEWUV5LisTZyREWSzUK',
|
||||
# 'BM-2DBPTgeSawWYZceFD69AbDT5q4iUWtj1ZN'
|
||||
# ):
|
||||
# self.assertEqual(self.api.joinChan(self._seed, addr), 'success')
|
||||
# self.assertEqual(self.api.leaveChan(addr), 'success')
|
||||
# # Joining with wrong address should fail
|
||||
# self.assertRegexpMatches(
|
||||
# self.api.joinChan(self._seed, 'BM-2cWzSnwjJ7yRP3nLEW'),
|
||||
# r'^API Error 0008:'
|
||||
# )
|
||||
|
|
|
@ -9,6 +9,8 @@ import tempfile
|
|||
import time
|
||||
import unittest
|
||||
|
||||
from pybitmessage.debug import logger
|
||||
|
||||
try:
|
||||
import psutil
|
||||
except ModuleNotFoundError:
|
||||
|
@ -19,15 +21,12 @@ def put_signal_file(path, filename):
|
|||
"""Creates file, presence of which is a signal about some event."""
|
||||
with open(os.path.join(path, filename), 'wb') as outfile:
|
||||
outfile.write(str(time.time()).encode())
|
||||
print('************************************************')
|
||||
with open(os.path.join(path, filename), 'r') as outfile:
|
||||
print(outfile.read())
|
||||
print('************************************************')
|
||||
|
||||
class TestProcessProto(unittest.TestCase):
|
||||
"""Test case implementing common logic for external testing:
|
||||
it starts pybitmessage in setUpClass() and stops it in tearDownClass()
|
||||
"""
|
||||
|
||||
_process_cmd = ['pybitmessage', '-d']
|
||||
_threads_count = 15
|
||||
_files = (
|
||||
|
@ -45,6 +44,16 @@ class TestProcessProto(unittest.TestCase):
|
|||
time.sleep(5)
|
||||
cls.pid = int(cls._get_readline('singleton.lock'))
|
||||
cls.process = psutil.Process(cls.pid)
|
||||
#comment
|
||||
# logger.error('~~~$$$$$$$$^^^^&&&&&&&~~~')
|
||||
# logger.info('cls.proccess_pid -{}'.format(
|
||||
# cls.process.pid))
|
||||
# logger.error('cls.proccess_name -{}'.format(
|
||||
# cls.process.name))
|
||||
# logger.error('cls.proccess_create_time -{}'.format(
|
||||
# cls.process._create_time))
|
||||
# logger.error('~~~$$$$$$$$^^^^&&&&&&&~~~')
|
||||
|
||||
|
||||
@classmethod
|
||||
def _get_readline(cls, pfile):
|
||||
|
@ -74,7 +83,6 @@ class TestProcessProto(unittest.TestCase):
|
|||
print('going to open the debug.log file-{}'.format(pfile))
|
||||
print(os.path.join(cls.home, pfile))
|
||||
print('75757575757575757575757')
|
||||
import pdb; pdb.set_trace()
|
||||
try:
|
||||
with open(os.path.join(cls.home, pfile), 'r') as outfile:
|
||||
print(outfile.readlines())
|
||||
|
|
Reference in New Issue
Block a user