Привет. Пишу маленькую утилитку, которая должна:
1) Ставится на каждый из узлов кластера
2) Посылать сообщения на другие узлы кластера. Нагрузку можно менять.
3) Принимать сообщения с других узлов кластера.
Выбрал Twisted. Вот что получилось:
Multicast.py:
from twisted.internet.protocol import DatagramProtocol, Factory
from twisted.internet import defer
from time import time
class MulticastServerUDP(DatagramProtocol):
def __init__(self, adress, changefunction):
self.adress = adress
self.changefunction = changefunction
def startProtocol(self):
print ‘Started Listening’
# Join a specific multicast group
self.transport.joinGroup(self.adress)
def datagramReceived(self, datagram, address):
if datagram == “System”:
print " ' + repr(datagram) + “ from ” + repr(address)
self.changefunction(datagram)
class MulticastClient(DatagramProtocol):
def __init__(self, data, adress):
self.data = data
self.adress = adress
def SendPacket(self):
self.transport.write(self.data, self.adress)
main.py
from twisted.internet import reactor, task
from twisted.application.internet import MulticastServer
from twisted.internet.protocol import DatagramProtocol
import LoadingProgram.Multicast
SendPacketLoopTime = 1
MulticastGroupAdress = ('224.0.0.1', 8005)
MulticastListeningInterface = ‘0.0.0.0’
def ChangeFunction(data):
SendPacketLoopTime = float(data)
loopSendPacket.stop()
loopSendPacket.start(SendPacketLoopTime)
# Listen for multicast on MulticastGroupAdress
serverprotocol = LoadingProgram.Multicast.MulticastServerUDP(MulticastGroupAdress, ChangeFunction)
reactor.listenMulticast(8005, serverprotocol, MulticastListeningInterface)
# Send multicast on MulticastGroupAdress from our dynamically allocated port
clientprotocol = LoadingProgram.Multicast.MulticastClient(u'UIR', MulticastGroupAdress)
reactor.listenUDP(0, clientprotocol)
loopSendPacket = task.LoopingCall(clientprotocol.SendPacket)
loopSendPacket.start(SendPacketLoopTime)
reactor.run()
Программа замечательно выполняет свои ф-ии, однако, вдохновившись XP программированием и статьёй pythy (http://gorod-omsk.ru/blog/pythy/2006/07/30/from-perl-script-to-twisted-app-writing-unit-tests/) решил написать для неё тесты.
Однако никак не могу понять что тут нужно проверять и как проверять?
Может быть, гуру, посоветуете что-то?