On 2/27/14 9:20 AM, Pavel Punegov wrote:
Please review the fix for:
   https://bugs.openjdk.java.net/browse/JDK-6946101

webrev:
   http://cr.openjdk.java.net/~iignatyev/ppunegov/6946101/webrev.00/

test/com/sun/jdi/ShellScaffold.sh
    line 531: # allows JDB to exit"
        stray double-quote at end of comment

line 563: dofail "It's not allowed to send quit and exit commands from the test"
        'and' should be 'or'

    line 819:  # Kill debugger, it could be hang
        Typo: 'hang' -> 'hung'

test/com/sun/jdi/ArrayLengthDumpTest.sh
test/com/sun/jdi/CatchAllTest.sh
test/com/sun/jdi/CatchCaughtTest.sh
test/com/sun/jdi/CatchPatternTest.sh
test/com/sun/jdi/CommandCommentDelimiter.sh
test/com/sun/jdi/DeferredStepTest.sh
test/com/sun/jdi/DeoptimizeWalk.sh
test/com/sun/jdi/EvalArgs.sh
test/com/sun/jdi/GetLocalVariables3Test.sh
test/com/sun/jdi/GetLocalVariables4Test.sh
test/com/sun/jdi/JdbExprTest.sh
test/com/sun/jdi/JdbLockTest.sh
test/com/sun/jdi/JdbMethodExitTest.sh
test/com/sun/jdi/JdbMissStep.sh
test/com/sun/jdi/MixedSuspendTest.sh
test/com/sun/jdi/NotAField.sh
test/com/sun/jdi/NullLocalVariable.sh
test/com/sun/jdi/Redefine-g.sh
test/com/sun/jdi/RedefineAnnotation.sh
test/com/sun/jdi/RedefineChangeClassOrder.sh
test/com/sun/jdi/RedefineClasses.sh
test/com/sun/jdi/RedefineException.sh
test/com/sun/jdi/RedefineFinal.sh
test/com/sun/jdi/RedefineImplementor.sh
test/com/sun/jdi/RedefineIntConstantToLong.sh
test/com/sun/jdi/RedefineMulti.sh
test/com/sun/jdi/RedefinePop.sh
test/com/sun/jdi/RedefineTTYLineNumber.sh
test/com/sun/jdi/StringConvertTest.sh
test/com/sun/jdi/WatchFramePop.sh
    I _think_ I understand the new test driver style:

    - get rid of all explicit 'cmd quit' usages because mydojdbCmds()
      now wraps the test's dojdbCmds with a 'quit' cmd
    - any test that previously ended with a 'cmd cont' is presumed to
      be OK of that 'cmd cont' caused jdb to execute off the end of
      main(); sounds reasonable to me
    - perfect example of the new logic to catch an errant run off the
      end is  test/com/sun/jdi/WatchFramePop.sh
      - the last jdb cmd is 'next'
      - and jdb is NOT supposed to run off the end
      - the new logic should catch this nicely; I _think_ the old
        logic would only catch a run off the end if someone manually
        checked the test result


Thumbs up!

Dan




This change fixes two issues with the tests:
   1. Fix incorrect 'quit' command sending to JDB when JDB process was finished.
   2. Improve JDB unexpected exit detection and  process synchronization.

Description of fix:
   1. Add allowExit parameter to cmd() to show that the given command can finish
   JDB. E.g., 'cont' command make JDB execute debuggee to the end.
   If allowExit wasn't set for a command then  assume that it can't finish
   execution, and fail the test if it did.

   2. Make test fail if it tries to send 'quit' or 'exit' commands. This makes
   it impossible to send quit/exit from test by mistake. Scaffold will
   finish JDB by itself if JDB didn't finish before be a command with allowExit
   set. Add dofinish() function to be the only method that may exit JDB.

   3. Add proper synchronization into waitForFinish(). On all systems except
   SunOS use wait (from bash). On Solaris find the shell subprocess and wait for
   its finish. It replaces wait  used on all other systems, because it
   doesn't work on sh/ksh as in bash.

   4. Fix tests: add allowExit to tests where it's needed.


Reply via email to