ZooKeeper
  1. ZooKeeper
  2. ZOOKEEPER-473

cleanup junit tests to eliminate false positives due to "socket reuse" and failure to close client

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.2.0
    • Fix Version/s: 3.3.0
    • Component/s: tests
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      The junit tests will occasionally fail on hudson due to a few problems:

      1) socket in use - sometimes the code/testcode will fail to close a socket, either that or tcp wait
      kicks in and the kernel holds onto the socket, either way subsequent tests that use this same
      port will fail

      2) sometimes the tests fail to close clients, this results in clients attempting to re-connect to
      the server started as part of a subsequent test (the timeout is very long). this causes a few
      problems, typically extra load on the server or more likely unusual changes to the server that the
      next test(s) don't expect. also causes problems when trying to debug the test as the old clients
      spew messages into the log.

      we see this on hudson, occasionally failures. We also saw this when working on ZOOKEEPER-397, the testng
      port. testng does not support "fork mode" for running the tests. as a result all the tests (all) run in a single
      vm instance, start to finish. so this problem is exacerbated significantly in that case. this patch only
      fixes the problem in junit btw, it does not move to testng

      1. ZOOKEEPER-473.patch
        110 kB
        Patrick Hunt
      2. ZOOKEEPER-473.patch
        108 kB
        Patrick Hunt

        Issue Links

          Activity

          Transition Time In Source Status Execution Times Last Executer Last Execution Date
          Patch Available Patch Available Open Open
          1d 1h 2m 1 Patrick Hunt 16/Jul/09 18:21
          Open Open Patch Available Patch Available
          33m 28s 2 Patrick Hunt 16/Jul/09 18:22
          Patch Available Patch Available Resolved Resolved
          3h 47m 1 Mahadev konar 16/Jul/09 22:10
          Resolved Resolved Closed Closed
          252d 19h 14m 1 Patrick Hunt 26/Mar/10 17:24
          Patrick Hunt made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Hide
          Hudson added a comment -

          Integrated in ZooKeeper-trunk #393 (See http://hudson.zones.apache.org/hudson/job/ZooKeeper-trunk/393/)

          Show
          Hudson added a comment - Integrated in ZooKeeper-trunk #393 (See http://hudson.zones.apache.org/hudson/job/ZooKeeper-trunk/393/ )
          Mahadev konar made changes -
          Status Patch Available [ 10002 ] Resolved [ 5 ]
          Hadoop Flags [Reviewed]
          Resolution Fixed [ 1 ]
          Hide
          Mahadev konar added a comment -

          I just committed this. thanks pat.

          Show
          Mahadev konar added a comment - I just committed this. thanks pat.
          Hide
          Patrick Hunt added a comment -

          btw – @Test is fine with 1.5 - we had that in most places already, this patch just adds to a few tests that were missing.

          Show
          Patrick Hunt added a comment - btw – @Test is fine with 1.5 - we had that in most places already, this patch just adds to a few tests that were missing.
          Patrick Hunt made changes -
          Status Open [ 1 ] Patch Available [ 10002 ]
          Patrick Hunt made changes -
          Attachment ZOOKEEPER-473.patch [ 12413716 ]
          Hide
          Patrick Hunt added a comment -

          latest patch moves back to console for test log4j output

          Show
          Patrick Hunt added a comment - latest patch moves back to console for test log4j output
          Patrick Hunt made changes -
          Status Patch Available [ 10002 ] Open [ 1 ]
          Hide
          Mahadev konar added a comment -

          the patch looks good... this should finally get the tests running on my mac (it used to fail because of the bind exceptions, mac isnt that good at releasing ports). I had 2 comments -

          • I think we should still keep the systemoutput/log in the same file and let hudson have the output as a huge file, the only reason being that it allows the system otuputs to match with the logging using log4j. I would be useful to see all the logging and sys output/ error in a single file for a given test. what do you think?
          • also, another check does @Test tags work with javac 1.5? I am not sure if we still want to support 1.5.
          Show
          Mahadev konar added a comment - the patch looks good... this should finally get the tests running on my mac (it used to fail because of the bind exceptions, mac isnt that good at releasing ports). I had 2 comments - I think we should still keep the systemoutput/log in the same file and let hudson have the output as a huge file, the only reason being that it allows the system otuputs to match with the logging using log4j. I would be useful to see all the logging and sys output/ error in a single file for a given test. what do you think? also, another check does @Test tags work with javac 1.5? I am not sure if we still want to support 1.5.
          Patrick Hunt made changes -
          Status Open [ 1 ] Patch Available [ 10002 ]
          Patrick Hunt made changes -
          Attachment ZOOKEEPER-473.patch [ 12413578 ]
          Hide
          Patrick Hunt added a comment -

          this patch addresses the stated problems.

          Additional note – I've moved all of the log4j output to a logfile in the build/test/logs directory.

          this was necessary for testng since it considers "stdout" special - and we were logging all
          of the log4j to the console previously. I think this change is an improvement because:

          1) hudson console information will be much easier to view (currently huge)
          2) there's a single file to open/view for all log output. in general this is convienient
          and specifically it's nice if you are trying to see if a test at time t is causing problems
          with a subsequent t+n test (like for this jira)
          3) the junit test output log files for each test now are much more readable/parsable, they
          contain just the results of the test (incl excep) and any stdout/stderr.

          Please review and commit asap.

          Show
          Patrick Hunt added a comment - this patch addresses the stated problems. Additional note – I've moved all of the log4j output to a logfile in the build/test/logs directory. this was necessary for testng since it considers "stdout" special - and we were logging all of the log4j to the console previously. I think this change is an improvement because: 1) hudson console information will be much easier to view (currently huge) 2) there's a single file to open/view for all log output. in general this is convienient and specifically it's nice if you are trying to see if a test at time t is causing problems with a subsequent t+n test (like for this jira) 3) the junit test output log files for each test now are much more readable/parsable, they contain just the results of the test (incl excep) and any stdout/stderr. Please review and commit asap.
          Patrick Hunt made changes -
          Field Original Value New Value
          Link This issue relates to ZOOKEEPER-460 [ ZOOKEEPER-460 ]
          Patrick Hunt created issue -

            People

            • Assignee:
              Patrick Hunt
              Reporter:
              Patrick Hunt
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development