1. 26 Oct, 2015 1 commit
  2. 21 Oct, 2015 3 commits
  3. 20 Oct, 2015 1 commit
  4. 19 Oct, 2015 4 commits
  5. 16 Oct, 2015 1 commit
  6. 13 Oct, 2015 1 commit
  7. 12 Oct, 2015 1 commit
  8. 05 Oct, 2015 3 commits
  9. 02 Oct, 2015 2 commits
  10. 01 Oct, 2015 1 commit
    • Julien Muchembled's avatar
      Review API betweeen connections and connectors · 57481c35
      Julien Muchembled authored
      - Review error handling. Only 2 exceptions remain in connector.py:
      
        - Drop useless exception handling for EAGAIN since it should not happen
          if the kernel says the socket is ready.
        - Do not distinguish other socket errors. Just close and log in a generic way.
        - No need to raise a specific exception for EOF.
        - Make 'connect' return a boolean instead of raising an exception.
        - Raise appropriate exception when answer/ask/notify is called on a closed
          non-MT connection.
      
      - Add support for more complex connectors, which may need to write for a read
        operation, or to read when there's pending data to send. This will be
        required for SSL support (more exactly, the handshake will be done in
        a transparent way):
      
        - Move write buffer to connector.
        - Make 'receive' fill the read buffer, instead of returning the read data.
        - Make 'receive' & 'send' return a boolean to switch polling for writing.
        - Tolerate that sockets return 0 as number of bytes sent.
      
      - In testConnection, simply delete all failing tests, as announced
        in commit 71e30fb9.
      57481c35
  11. 30 Sep, 2015 1 commit
  12. 24 Sep, 2015 4 commits
  13. 23 Sep, 2015 3 commits
  14. 15 Sep, 2015 8 commits
  15. 14 Sep, 2015 1 commit
  16. 07 Sep, 2015 1 commit
  17. 28 Aug, 2015 4 commits
    • Julien Muchembled's avatar
      client: drop now useless wrapper to log safely in poll thread during shutdown · 9531c9cb
      Julien Muchembled authored
      Recent Python already catches exceptions due to garbage collection on exit.
      9531c9cb
    • Julien Muchembled's avatar
      storage: fix history() not waiting oid to be unlocked · e27358d1
      Julien Muchembled authored
      This fixes a random failure in testClientReconnection:
      
      Traceback (most recent call last):
        File "neo/tests/threaded/test.py", line 754, in testClientReconnection
          self.assertTrue(cluster.client.history(x1._p_oid))
      failureException: None is not true
      e27358d1
    • Julien Muchembled's avatar
      Fix random failure in testRecycledClientUUID · 79be7787
      Julien Muchembled authored
      Traceback (most recent call last):
        File "neo/tests/threaded/test.py", line 838, in testRecycledClientUUID
          x = client.load(ZERO_TID)
        [...]
        File "neo/tests/threaded/test.py", line 822, in notReady
          m2s.remove(delayNotifyInformation)
        File "neo/tests/threaded/__init__.py", line 482, in remove
          del self.filter_dict[filter]
      KeyError: <function delayNotifyInformation at 0x7f511063a578>
      79be7787
    • Julien Muchembled's avatar
      Fix several random failures in tests that didn't wait for transaction to be unlocked · c4ac45a8
      Julien Muchembled authored
      NEOCluster.tic() gets a new 'slave' parameter that must be True when a client
      node is in 'master' mode (i.e. setPoll(True)). In this case, tic() will wait
      that all nodes finish their work and the client polls with a non-zero timeout.
      
      Here, tic(slave=1) is used to wait for the storage to process
      NotifyUnlockInformation notification from the master.
      
      Traceback (most recent call last):
        File "neo/tests/threaded/test.py", line 80, in testBasicStore
          self.assertEqual(data_info, cluster.storage.getDataLockInfo())
        File "neo/tests/__init__.py", line 170, in assertEqual
          return super(NeoTestBase, self).assertEqual(first, second, msg=msg)
      failureException: {('\x0b\xee\xc7\xb5\xea?\x0f\xdb\xc9]\r\xd4\x7f<[\xc2u\xda\x8a3', 0): 0} != {('\x0b\xee\xc7\xb5\xea?\x0f\xdb\xc9]\r\xd4\x7f<[\xc2u\xda\x8a3', 0): 1}
      c4ac45a8