Пример #1
0
    def setUp(self):
        self.queue = Queue()
        self.running = True
        started = Event()

        def run():
            ts = TestServer(self.queue)
            for s in listen("0.0.0.0", PORT, lambda: self.running,
                            lambda: started.set()):
                conn = Connection(s, delegate=ts.connection)
                try:
                    conn.start(5)
                except Closed:
                    pass

        self.server = Thread(target=run)
        self.server.setDaemon(True)
        self.server.start()

        started.wait(3)
        assert started.isSet()
Пример #2
0
  def setUp(self):
    self.queue = Queue()
    self.running = True
    started = Event()

    def run():
      ts = TestServer(self.queue)
      for s in listen("0.0.0.0", PORT, lambda: self.running, lambda: started.set()):
        conn = Connection(s, delegate=ts.connection)
        try:
          conn.start(5)
        except Closed:
          pass

    self.server = Thread(target=run)
    self.server.setDaemon(True)
    self.server.start()

    started.wait(3)
    assert started.isSet()
Пример #3
0
class ConnectionTest(TestCase):

  def setUp(self):
    self.queue = Queue()
    self.running = True
    started = Event()

    def run():
      ts = TestServer(self.queue)
      for s in listen("0.0.0.0", PORT, lambda: self.running, lambda: started.set()):
        conn = Connection(s, delegate=ts.connection)
        try:
          conn.start(5)
        except Closed:
          pass

    self.server = Thread(target=run)
    self.server.setDaemon(True)
    self.server.start()

    started.wait(3)
    assert started.isSet()

  def tearDown(self):
    self.running = False
    connect("127.0.0.1", PORT).close()
    self.server.join(3)

  def connect(self, **kwargs):
    return Connection(connect("127.0.0.1", PORT), **kwargs)

  def test(self):
    c = self.connect()
    c.start(10)

    ssn1 = c.session("test1", timeout=10)
    ssn2 = c.session("test2", timeout=10)

    assert ssn1 == c.sessions["test1"]
    assert ssn2 == c.sessions["test2"]
    assert ssn1.channel != None
    assert ssn2.channel != None
    assert ssn1 in c.attached.values()
    assert ssn2 in c.attached.values()

    ssn1.close(5)

    assert ssn1.channel == None
    assert ssn1 not in c.attached.values()
    assert ssn2 in c.sessions.values()

    ssn2.close(5)

    assert ssn2.channel == None
    assert ssn2 not in c.attached.values()
    assert ssn2 not in c.sessions.values()

    ssn = c.session("session", timeout=10)

    assert ssn.channel != None
    assert ssn in c.sessions.values()

    destinations = ("one", "two", "three")

    for d in destinations:
      ssn.message_transfer(d)

    for d in destinations:
      cmd = self.queue.get(10)
      assert cmd.destination == d
      assert cmd.headers == None
      assert cmd.payload == None

    msg = Message("this is a test")
    ssn.message_transfer("four", message=msg)
    cmd = self.queue.get(10)
    assert cmd.destination == "four"
    assert cmd.headers == None
    assert cmd.payload == msg.body

    qq = ssn.queue_query("asdf")
    assert qq.queue == "asdf"
    c.close(5)

  def testCloseGet(self):
    c = self.connect()
    c.start(10)
    ssn = c.session("test", timeout=10)
    echos = ssn.incoming("echo")

    for i in range(10):
      ssn.message_transfer("echo", message=Message("test%d" % i))

    ssn.auto_sync=False
    ssn.message_transfer("abort")

    for i in range(10):
      m = echos.get(timeout=10)
      assert m.body == "test%d" % i

    try:
      m = echos.get(timeout=10)
      assert False
    except Closed, e:
      pass
Пример #4
0
 def test_close(self):
     q = Queue(0)
     q.put(1)
     q.put(2)
     q.put(3)
     q.close()
     assert q.get() == 1
     assert q.get() == 2
     assert q.get() == 3
     for i in range(10):
         try:
             q.get()
             raise AssertionError("expected Closed")
         except Closed:
             pass
Пример #5
0
    def test_listen(self):
        values = []
        heard = threading.Event()

        def listener(x):
            values.append(x)
            heard.set()

        q = Queue(0)
        q.listen(listener)
        heard.clear()
        q.put(1)
        heard.wait()
        assert values[-1] == 1
        heard.clear()
        q.put(2)
        heard.wait()
        assert values[-1] == 2

        q.listen(None)
        q.put(3)
        assert q.get(3) == 3
        q.listen(listener)

        heard.clear()
        q.put(4)
        heard.wait()
        assert values[-1] == 4
Пример #6
0
 def test_close(self):
   q = Queue(0)
   q.put(1); q.put(2); q.put(3); q.close()
   assert q.get() == 1
   assert q.get() == 2
   assert q.get() == 3
   for i in range(10):
     try:
       q.get()
       raise AssertionError("expected Closed")
     except Closed:
       pass
Пример #7
0
  def test_listen(self):
    values = []
    heard = threading.Event()
    def listener(x):
      values.append(x)
      heard.set()

    q = Queue(0)
    q.listen(listener)
    heard.clear()
    q.put(1)
    heard.wait()
    assert values[-1] == 1
    heard.clear()
    q.put(2)
    heard.wait()
    assert values[-1] == 2

    q.listen(None)
    q.put(3)
    assert q.get(3) == 3
    q.listen(listener)

    heard.clear()
    q.put(4)
    heard.wait()
    assert values[-1] == 4
Пример #8
0
class ConnectionTest(TestCase):
    def setUp(self):
        self.queue = Queue()
        self.running = True
        started = Event()

        def run():
            ts = TestServer(self.queue)
            for s in listen("0.0.0.0", PORT, lambda: self.running,
                            lambda: started.set()):
                conn = Connection(s, delegate=ts.connection)
                try:
                    conn.start(5)
                except Closed:
                    pass

        self.server = Thread(target=run)
        self.server.setDaemon(True)
        self.server.start()

        started.wait(3)
        assert started.isSet()

    def tearDown(self):
        self.running = False
        connect("127.0.0.1", PORT).close()
        self.server.join(3)

    def connect(self, **kwargs):
        return Connection(connect("127.0.0.1", PORT), **kwargs)

    def test(self):
        c = self.connect()
        c.start(10)

        ssn1 = c.session("test1", timeout=10)
        ssn2 = c.session("test2", timeout=10)

        assert ssn1 == c.sessions["test1"]
        assert ssn2 == c.sessions["test2"]
        assert ssn1.channel != None
        assert ssn2.channel != None
        assert ssn1 in c.attached.values()
        assert ssn2 in c.attached.values()

        ssn1.close(5)

        assert ssn1.channel == None
        assert ssn1 not in c.attached.values()
        assert ssn2 in c.sessions.values()

        ssn2.close(5)

        assert ssn2.channel == None
        assert ssn2 not in c.attached.values()
        assert ssn2 not in c.sessions.values()

        ssn = c.session("session", timeout=10)

        assert ssn.channel != None
        assert ssn in c.sessions.values()

        destinations = ("one", "two", "three")

        for d in destinations:
            ssn.message_transfer(d)

        for d in destinations:
            cmd = self.queue.get(10)
            assert cmd.destination == d
            assert cmd.headers == None
            assert cmd.payload == None

        msg = Message("this is a test")
        ssn.message_transfer("four", message=msg)
        cmd = self.queue.get(10)
        assert cmd.destination == "four"
        assert cmd.headers == None
        assert cmd.payload == msg.body

        qq = ssn.queue_query("asdf")
        assert qq.queue == "asdf"
        c.close(5)

    def testCloseGet(self):
        c = self.connect()
        c.start(10)
        ssn = c.session("test", timeout=10)
        echos = ssn.incoming("echo")

        for i in range(10):
            ssn.message_transfer("echo", message=Message("test%d" % i))

        ssn.auto_sync = False
        ssn.message_transfer("abort")

        for i in range(10):
            m = echos.get(timeout=10)
            assert m.body == "test%d" % i

        try:
            m = echos.get(timeout=10)
            assert False
        except Closed, e:
            pass