Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
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"
Beispiel #6
0
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
Beispiel #9
0
 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)
Beispiel #11
0
 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()
Beispiel #12
0
 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)
Beispiel #13
0
 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)
Beispiel #14
0
 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()
Beispiel #15
0
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)
Beispiel #16
0
    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)
Beispiel #18
0
 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
Beispiel #19
0
 def __init__(self):
     logging.Handler.__init__(self)
     self.mbox = spread.connect('4803@localhost', membership=False)
Beispiel #20
0
 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 _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
Beispiel #22
0
#! /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()
Beispiel #24
0
 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
Beispiel #25
0
 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()
Beispiel #26
0
#!/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()
Beispiel #27
0
 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
Beispiel #28
0
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
Beispiel #29
0
 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()
Beispiel #30
0
Datei: test2.py Projekt: lsm/zir
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)