Пример #1
0
from amiko.core import log, nodestate, messages
from amiko.utils import serializable

import largenetwork_setup

verbose = '-v' in sys.argv



class NodeState_IgnoreMakeRoute(nodestate.NodeState):
	def handleMessage(self, msg):
		if msg.__class__ == messages.MakeRoute:
			return []
		return nodestate.NodeState.handleMessage(self, msg)

serializable.registerClass(NodeState_IgnoreMakeRoute)



class Test(unittest.TestCase):
	def setUp(self):
		self.nodes = []


	def tearDown(self):
		for n in self.nodes:
			n.stop()


	def printNodeInfo(self, i, data):
		print
Пример #2
0
 def setUp(self):
     self.registeredClassesBackup = serializable.registeredClasses
     serializable.registeredClasses = {}
     serializable.registerClass(C)
Пример #3
0
    def haveRouteIncoming(self, msg):
        ret = self.object.haveRouteIncoming(msg)
        #Filter out the Lock message:
        return [r for r in ret if r.__class__ != messages.Lock]

    def haveRouteOutgoing(self, msg):
        ret = self.object.haveRouteOutgoing(msg)
        #Filter out the Lock message:
        return [r for r in ret if r.__class__ != messages.Lock]

    def __getattr__(self, name):
        #For all attributes not defined here, forward the object's attributes:
        return getattr(self.object, name)


serializable.registerClass(PayerLink_NoLock)


class NodeState_NoLock(nodestate.NodeState):
    def msg_makePayer(self, msg):
        ret = nodestate.NodeState.msg_makePayer(self, msg)

        #Insert proxy object:
        self.payerLink = PayerLink_NoLock(object=self.payerLink)

        return ret


serializable.registerClass(NodeState_NoLock)

Пример #4
0
            #Let us receive the same message again in 10 seconds from now
            return \
            [
            messages.TimeoutMessage(timestamp=time.time() + 10.0, message=msg)
            ]
        elif msg.__class__ == messages.HaveNoRoute and self.hasReceivedLock:
            return []  #ignore HaveNoRoute from our "victim"
        elif msg.__class__ == messages.NodeStateTimeout_Lock:
            return []  #don't have a time-out ourselves

        #else: fall-through; do normal handling of the Lock message
        return nodestate.NodeState.handleMessage(self, msg)


serializable.registerClass(NodeState_LockDelay)


class Test(unittest.TestCase):
    def setUp(self):
        self.nodes = []

    def tearDown(self):
        for n in self.nodes:
            n.stop()

    def printNodeInfo(self, i, data):
        print
        print '==========================='
        print 'Node %d:' % i
        print '==========================='
Пример #5
0
class PayeeLink_NoCommit(serializable.Serializable):
    serializableAttributes = {'object': None}

    def lockOutgoing(self, msg):
        #By raising an exception, Amiko Pay interprets the Lock message as
        #invalid, and turns it into a NOP. So, the entire payee node considers
        #this transaction as being still in a reserved state.
        raise Exception('Exception raised by test code (intended)')

    def __getattr__(self, name):
        #For all attributes not defined here, forward the object's attributes:
        return getattr(self.object, name)


serializable.registerClass(PayeeLink_NoCommit)


class NodeState_NoCommit(nodestate.NodeState):
    def msg_request(self, msg):
        ret = nodestate.NodeState.msg_request(self, msg)

        #Insert proxy object:
        payeeLinkID = ret[0].value
        self.payeeLinks[payeeLinkID] = PayeeLink_NoCommit(
            object=self.payeeLinks[payeeLinkID])

        return ret


serializable.registerClass(NodeState_NoCommit)
Пример #6
0
	def setUp(self):
		self.registeredClassesBackup = serializable.registeredClasses
		serializable.registeredClasses = {}
		serializable.registerClass(C)
Пример #7
0
        self.state.append(('getOutgoingCommitTimeout', routeID))
        return 2016

    def __getattr__(self, name):
        if name.startswith('__'):
            raise AttributeError(name)

        def generic_method(*args, **kwargs):
            #print self, (name, args, kwargs)
            self.state.append((name, args, kwargs))
            return [name], []

        return generic_method


serializable.registerClass(DummyChannel)


class Test(unittest.TestCase):
    def setUp(self):
        self.link = link.Link(remoteID='remote', localID='local', channels=[])

    def test_defaultAttributes(self):
        'Test default attributes'

        self.assertEqual(self.link.remoteID, 'remote')
        self.assertEqual(self.link.localID, 'local')
        self.assertEqual(self.link.channels, [])

    def test_msg_ownDeposit(self):
        'test msg_ownDeposit'
class PayeeLink_NoCommit(serializable.Serializable):
	serializableAttributes = {'object': None}

	def lockOutgoing(self, msg):
		#By raising an exception, Amiko Pay interprets the Lock message as
		#invalid, and turns it into a NOP. So, the entire payee node considers
		#this transaction as being still in a reserved state.
		raise Exception('Exception raised by test code (intended)')


	def __getattr__(self, name):
		#For all attributes not defined here, forward the object's attributes:
		return getattr(self.object, name)

serializable.registerClass(PayeeLink_NoCommit)



class NodeState_NoCommit(nodestate.NodeState):
	def msg_request(self, msg):
		ret = nodestate.NodeState.msg_request(self, msg)

		#Insert proxy object:
		payeeLinkID = ret[0].value
		self.payeeLinks[payeeLinkID] = PayeeLink_NoCommit(object=self.payeeLinks[payeeLinkID])

		return ret

serializable.registerClass(NodeState_NoCommit)
Пример #9
0
		ret = self.object.haveRouteIncoming(msg)
		#Filter out the Lock message:
		return [r for r in ret if r.__class__ != messages.Lock]


	def haveRouteOutgoing(self, msg):
		ret = self.object.haveRouteOutgoing(msg)
		#Filter out the Lock message:
		return [r for r in ret if r.__class__ != messages.Lock]


	def __getattr__(self, name):
		#For all attributes not defined here, forward the object's attributes:
		return getattr(self.object, name)

serializable.registerClass(PayerLink_NoLock)



class NodeState_NoLock(nodestate.NodeState):
	def msg_makePayer(self, msg):
		ret = nodestate.NodeState.msg_makePayer(self, msg)

		#Insert proxy object:
		self.payerLink = PayerLink_NoLock(object=self.payerLink)

		return ret

serializable.registerClass(NodeState_NoLock)

			self.hasReceivedLock = True

			#Let us receive the same message again in 10 seconds from now
			return \
			[
			messages.TimeoutMessage(timestamp=time.time() + 10.0, message=msg)
			]
		elif msg.__class__ == messages.HaveNoRoute and self.hasReceivedLock:
			return [] #ignore HaveNoRoute from our "victim"
		elif msg.__class__ == messages.NodeStateTimeout_Lock:
			return [] #don't have a time-out ourselves

		#else: fall-through; do normal handling of the Lock message
		return nodestate.NodeState.handleMessage(self, msg)

serializable.registerClass(NodeState_LockDelay)



class Test(unittest.TestCase):
	def setUp(self):
		self.nodes = []


	def tearDown(self):
		for n in self.nodes:
			n.stop()


	def printNodeInfo(self, i, data):
		print
Пример #11
0
		return 2016


	def __getattr__(self, name):
		if name.startswith('__'):
			raise AttributeError(name)

		def generic_method(*args, **kwargs):
			#print self, (name, args, kwargs)
			self.state.append((name, args, kwargs))
			return [name], []

		return generic_method


serializable.registerClass(DummyChannel)



class Test(unittest.TestCase):
	def setUp(self):
		self.link = link.Link(remoteID='remote', localID='local', channels=[])


	def test_defaultAttributes(self):
		'Test default attributes'

		self.assertEqual(self.link.remoteID, 'remote')
		self.assertEqual(self.link.localID, 'local')
		self.assertEqual(self.link.channels, [])