def testConnectBadKeywords(self): for silly in 'demon', 'prior', 'member', 'xyz': try: spread.connect(**{silly: 1}) except TypeError: pass else: self.fail("expected spread.connect to complain about bad " "keyword argument %r" % silly)
def testConnectBadDaemon(self): silly = b' _._._42' try: spread.connect(silly) except spread.error: pass else: self.fail("expected spread.connect(%r) to complain" % silly) try: spread.connect(daemon=silly) except spread.error: pass else: self.fail("expected spread.connect(daemon=%r) to complain" % silly)
def testConnectBadDaemon(self): silly = ' _._._42' try: spread.connect(silly) except spread.error: pass else: self.fail("expected spread.connect(%r) to complain" % silly) try: spread.connect(daemon=silly) except spread.error: pass else: self.fail("expected spread.connect(daemon=%r) to complain" % silly)
def spread_send(elvinrrd, rrditems, spread_host='127.0.0.1', spread_port=spread.DEFAULT_SPREAD_PORT): msg = { 'ELVINRRD': elvinrrd, 'timestamp': time.time(), } msg.update(rrditems) print "Connecting to Spread server: %s:%d" % (spread_host, spread_port) server = "%d@%s" % (spread_port, spread_host) name = "test@%s" % (platform.node()) s = spread.connect(server, name) #s.join('elvinrrd') # don't need to join to send to group print "Sending message:" pprint(msg) sio = StringIO() p = cPickle.Pickler(sio) p.dump(msg) r = s.multicast(spread.RELIABLE_MESS, 'elvinrrd', sio.getvalue()) if r > 0: print "message sent OK" else: print "message send failed"
def run(group, messages): m = spread.connect('4803@localhost','_%s' % (os.getpid(),), 1, 1) m.join(group) count = 0 while True: count += 1 message = struct.pack('L', count) + random.choice(messages) message_type = random.randint(0, len(messages) % 10) try: m.multicast(spread.SAFE_MESS, group, message, message_type) except: pass msg = m.receive() if type(msg) is spread.MembershipMsgType: print "Membership message:" print " members (%s) group (%s) extra(%s)" % \ (msg.members, msg.group, msg.extra) else: print "Regular Message:" print " from (%s), to groups (%s) message (type=%d len=%d content=%s)" % \ (msg.sender, msg.groups, msg.msg_type, len(msg.message), msg.message) if 'quit' in msg.message: break m.leave(group)
def spread_send(elvinrrd, rrditems, spread_host='127.0.0.1', spread_port=spread.DEFAULT_SPREAD_PORT): msg = { 'ELVINRRD' : elvinrrd, 'timestamp' : time.time(), } msg.update(rrditems) print "Connecting to Spread server: %s:%d" %(spread_host, spread_port) server = "%d@%s" % (spread_port, spread_host) name = "test@%s" % (platform.node()) s = spread.connect(server, name) #s.join('elvinrrd') # don't need to join to send to group print "Sending message:" pprint(msg) sio = StringIO() p = cPickle.Pickler(sio) p.dump(msg) r = s.multicast(spread.RELIABLE_MESS, 'elvinrrd', sio.getvalue()) if r > 0: print "message sent OK" else: print "message send failed"
def connect(self): """Create a Spread connection. """ waittime = 1 # time to wait before re-connecting while not self.connected: # Create Spread connection log.log( "<eddieSpread>Spread.connect(): Opening connection to Spread, '%s'" % (self.server), 6) try: self.connection = spread.connect(self.server, '', 0, 0) except spread.error, msg: log.log( "<eddieSpread>Spread.connect(): Spread could not connect, '%s'. Waiting %d secs for retry" % (msg, waittime), 5) time.sleep(waittime) waittime = min(waittime * 2, 60 * 10) # inc wait time but max 10 minutes else: log.log( "<eddieSpread>Spread.connect(): Connected to Spread, '%s'" % (self.server), 6) self.connected = True
def testConnectDefaults(self): m = spread.connect(name=b'good') if not m.private_group.startswith(b'#good#'): self.fail(m.private_group) # The rest of the private_group name comes from whatever name was # given to the local daemon in the spread.conf file, and we don't # know what that is, so can't check it. m.disconnect()
def _real_connect(self): self._mbox=spread.connect(self.spread_name, self.private_name, self.priority, self.membership) if self.groups: for g in self.groups: self._mbox.join(g)
def testConnectDefaults(self): m = spread.connect(name='good') if not m.private_group.startswith('#good#'): self.fail(m.private_group) # The rest of the private_group name comes from whatever name was # given to the local daemon in the spread.conf file, and we don't # know what that is, so can't check it. m.disconnect()
def __init__(self, spreadd=SPREADD, group=GROUP, user=UNAME, level=logging.NOTSET, ): logging.Handler.__init__(self, level) self.spreadd = spreadd self.group = group self.user = user self.mb = spread.connect(spreadd, user) self.mb.join(GROUP)
def __init__( self, spreadd=SPREADD, group=GROUP, user=UNAME, level=logging.NOTSET, ): logging.Handler.__init__(self, level) self.spreadd = spreadd self.group = group self.user = user self.mb = spread.connect(spreadd, user) self.mb.join(GROUP)
def connect(self): waittime = 1 # time to wait before re-connecting server = "%d@%s" % (self.spread_port, self.spread_server) while not self.connected: try: log("Connecting to Spread server: %s" % server) self._connection = spread.connect(server) self.connected = True log("Connected to Spread server: %s" % server) except spread.error as err: log("Spread connection failed: %s - waiting %s seconds before retry" % (err,waittime)) time.sleep(waittime) waittime = min( waittime * 2, 60*10 ) # inc wait time but max 10 minutes self.register()
def spread_watch(spread_host='127.0.0.1', spread_port=spread.DEFAULT_SPREAD_PORT): print "Connecting to Spread server: %s:%d" % (spread_host, spread_port) server = "%d@%s" % (spread_port, spread_host) s = spread.connect(server) s.join('elvinrrd') while True: m = s.receive() if m: print print time.ctime(time.time()) if hasattr(m, 'message'): # RegularMsgType mio = StringIO(m.message) up = cPickle.Unpickler(mio) j = up.load() pprint(j) tstamp = j.get('timestamp', None) if tstamp: print " timestamp = %s" % str( datetime.fromtimestamp(tstamp)) else: # MembershipMsgType print "* Membership change for group: %s" % m.group if m.reason == spread.CAUSED_BY_JOIN: reason = "Members joined" elif m.reason == spread.CAUSED_BY_LEAVE: reason = "Members left" elif m.reason == spread.CAUSED_BY_DISCONNECT: reason = "Members disconnected" elif m.reason == spread.CAUSED_BY_NETWORK: reason = "Members dropped (network problem?)" elif m.reason == 0: reason = "transitional membership message: " else: reason = "Unknown" print " %s: %s" % (reason, ', '.join(m.extra)) print " Members in group now: ", ', '.join(m.members)
def connect(self): """Create a Spread connection. """ waittime = 1 # time to wait before re-connecting while not self.connected: # Create Spread connection log.log("<borisSpread>Spread.connect(): Opening connection to Spread, '%s'" % (self.server), 6) try: self.connection = spread.connect(self.server, '', 0, 0) except spread.error as msg: log.log("<borisSpread>Spread.connect(): Spread could not connect, '%s'. Waiting %d secs for retry" % (msg, waittime), 5) time.sleep(waittime) waittime = min(waittime * 2, 60*10) # inc wait time but max 10 minutes else: log.log("<borisSpread>Spread.connect(): Connected to Spread, '%s'" % (self.server), 6) self.connected = True
def spread_watch(spread_host='127.0.0.1', spread_port=spread.DEFAULT_SPREAD_PORT): print "Connecting to Spread server: %s:%d" %(spread_host, spread_port) server = "%d@%s" % (spread_port, spread_host) s = spread.connect(server) s.join('elvinrrd') while True: m = s.receive() if m: print print time.ctime(time.time()) if hasattr(m, 'message'): # RegularMsgType mio = StringIO(m.message) up = cPickle.Unpickler(mio) j = up.load() pprint(j) tstamp = j.get('timestamp', None) if tstamp: print " timestamp = %s" %str(datetime.fromtimestamp(tstamp)) else: # MembershipMsgType print "* Membership change for group: %s" % m.group if m.reason == spread.CAUSED_BY_JOIN: reason = "Members joined" elif m.reason == spread.CAUSED_BY_LEAVE: reason = "Members left" elif m.reason == spread.CAUSED_BY_DISCONNECT: reason = "Members disconnected" elif m.reason == spread.CAUSED_BY_NETWORK: reason = "Members dropped (network problem?)" elif m.reason == 0: reason = "transitional membership message: " else: reason = "Unknown" print " %s: %s" % (reason, ', '.join(m.extra)) print " Members in group now: ", ', '.join(m.members)
def _regular_operations(self): if self.is_mailbox_ok() == False: self._mailbox = spread.connect(self.connectString, self.clientId, 0, 0) self._privateGroup = self._mailbox.private_group
def __init__(self): logging.Handler.__init__(self) self.mbox = spread.connect('4803@localhost', membership=False)
def _real_connect(self): self._mbox = spread.connect(self.spread_name, self.private_name, self.priority, self.membership) if self.groups: for g in self.groups: self._mbox.join(g)
#! /usr/bin/python import popen2 import spread from spreadutils import * import tempfile c = spread.connect('4804', 'uploadp', 0, 0) c.join('uploadfiles') while True: smsg = c.receive() print 'received %s ' % smsg recmsg = Message(parse_msg = smsg.message) print 'Received message with id #%s' % recmsg['f_id'] # write the message content to a temporary file fname = tempfile.mktemp() fout = file(fname, 'w') fout.write(recmsg.content) fout.close() # convert to text using antiword r, w, e = popen2.popen3('antiword %s' % fname) text = r.readlines() for line in text: print line, # return the message response resmsg = Message({ 'f_id' : recmsg['f_id'], 'size' : len(recmsg.content), 'lines' : len(text) })
#!/usr/bin/python # -*- coding: utf-8 -*- import spread PORT = '4803' conn = spread.connect(PORT) conn.join('test') conn.multicast(spread.RELIABLE_MESS, 'test', 'hello, this is message sent from python') conn.disconnect()
def _connect(self, membership=1): """Return a new connection""" c = SpreadTest.conn_counter SpreadTest.conn_counter += 1 mb = spread.connect(self.spread_name, "conn%d" % c, 0, membership) return mb
def startListening(self): self.mbox = spread.connect(self.spread_name, self.private_name) self.connected = 1 if self.protocol: self.protocol.makeConnection(self) self.startReading()
def _connect(self, membership=1): """Return a new connection""" c = SpreadTest.conn_counter SpreadTest.conn_counter += 1 mb = spread.connect(self.spread_name, bytes("conn%d" % c, "ascii"), 0, membership) return mb
import spread import types sprconn = spread.connect('4803') sprconn.join('replication') while 1: msg = sprconn.receive() t = type(msg) if t.__name__!="MembershipMsg": print msg.message
import spread from spreadutils import * c = spread.connect('4804', 'mytest', 0, 0) c.join('testgroup') smsg = c.receive() recmsg = Message(parse_msg = smsg.message) print str(recmsg)