Beispiel #1
0
#!/usr/bin/env python

from zio.util import guess_hostname, modlog

import zmq
from zio.port import Port
from zio.peer import Peer

log = modlog(__name__)


class Node:
    '''
    A vertex in a ported graph with ZIO edges
    '''
    def __init__(self, nick, origin=0, hostname='127.0.0.1'):
        '''
        Create a node.

        A node has a nickname.  It may assert a unique origin number.
        A hostname may be specified for default binds of its ports or
        one will attempt to be autodetected.
        '''
        self.nick = nick
        self.origin = origin
        self._hostname = hostname or guess_hostname()
        self.ports = dict()  # by name

    def __str__(self):
        sp = ' '.join([str(p) for p in self.ports.values()])
        return "[node %s]: origin:%d ports:[%s]" % (self.nick, self.origin, sp)
Beispiel #2
0
#!/usr/bin/env python3

import json
import zmq
import zio
from zio.flow import  Broker, Flow, TransmissionEnd

from pyre.zactor import ZActor

from zio.util import objectify, modlog, mainlog, DEBUG, INFO
log = modlog("test_flowbroker")


def client_actor(ctx, pipe, address):
    'An actor function talking to a broker on given address'
    pipe.signal()
    
    port = zio.Port("client", zmq.CLIENT,'')
    port.connect(address)
    port.online(None)       # peer not needed if port only direct connects
    log.debug ("made flow")

    direction='extract'
    credit=2
    cflow = Flow(port, direction, credit)

    bot = cflow.bot()
    log.debug (f'client did BOT: {bot}')
    assert(bot)
    cflow.begin()
Beispiel #3
0
#!/usr/bin/env python3
'''
test zio.flow
'''

import unittest
import zmq
from zio import Node, Message
from zio.flow import Flow
from zio.util import modlog, mainlog

log = modlog('test_flow')


class TestFlow(unittest.TestCase):

    origin = 42
    credit = 2

    def setUp(self):
        self.snode = Node("server", self.origin)
        sport = self.snode.port("sport", zmq.SERVER)
        sport.bind()
        self.snode.online()
        self.sflow = Flow(sport, "extract", TestFlow.credit)
        assert (self.sflow.sm.is_giver())

        self.cnode = Node("client")
        cport = self.cnode.port("cport", zmq.CLIENT)
        cport.connect("server", "sport")
        self.cnode.online()
Beispiel #4
0
#!/usr/bin/env python3
'''
test zio.port
'''

import time
import unittest
import zmq
from zio import Port, Node, Message
from zio.util import modlog, mainlog

log = modlog('test_port')


class TestPort(unittest.TestCase):

    origin = 42

    def setUp(self):
        self.snode = Node("server", self.origin)
        sport = self.snode.port("sport", zmq.SERVER)
        sport.bind()
        self.snode.online()

        self.cnode = Node("client")
        cport = self.cnode.port("cport", zmq.CLIENT)
        cport.connect("server", "sport")
        self.cnode.online()

    def tearDown(self):
        pass
Beispiel #5
0
#!/usr/bin/env python3
'''
test zio.Message
'''

import zmq
import unittest

import zio
from zio.util import modlog, mainlog

log = modlog('test_message')


class TestMessage(unittest.TestCase):
    def setUp(self):
        pass

    def test_ctor_default(self):
        m = zio.Message(form='FORM')
        log.debug(m.origin)
        assert (m.origin == 0)
        assert (m.seqno == 0)
        assert (m.level == zio.MessageLevel.undefined)
        assert (m.label == "")
        assert (m.form == "FORM")
        assert (m.routing_id == 0)

    def test_ctor_parts(self):
        ph = zio.PrefixHeader()
        assert (ph.form == '    ')