RegressionTests__VMCrashTests.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 24 Jun 2016 00:44:04 +0100
branchjv
changeset 1498 398050ba2384
parent 1493 8da0d9b56e92
child 1499 26a16a04219b
permissions -rw-r--r--
Fixed VMCrashTests>>test_newspace_overflow Allication of a 300MB string may cause AllocationFailure, especially on 32bits.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1181
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'exept:regression' }"
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: RegressionTests }"
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
VMCrashTestCase subclass:#VMCrashTests
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'tests-Regression-RuntimeSystem'
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!VMCrashTests methodsFor:'tests - GC'!
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
1190
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    15
iter_java_initialize
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    16
    <spawn: true>
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    17
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    18
    1 to: 100 do:[:i |
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    19
        Stdout nextPutLine: 'Pass '  , i printString.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    20
        Java release: JavaRelease JDK7.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    21
        Java initialize.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    22
        JavaVM initializeVM.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    23
        Java flushAllJavaResources.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    24
        Stdout nextPutLine: 'Full GC...'.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    25
        Smalltalk garbageCollect.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    26
        Stdout nextPutLine: 'Pass '  , i printString , '...OK'.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    27
    ].
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    28
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    29
    "Created: / 08-09-2014 / 12:33:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    30
!
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    31
1493
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    32
test_issue_64_vm_crashes_in_fclose
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    33
    "
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    34
    Quickly opening and closing files for long enough used to kill the
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    35
    VM.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    36
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    37
    This testcase keeps opening and closing files for 10 minutes. Just a
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    38
    stress-test.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    39
    "
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    40
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    41
    <spawn: true>
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    42
    <timeout: 660> "11min"
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    43
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    44
    | timeout deadline iterStart iterStop directory files i |    
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    45
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    46
    timeout := self timeout.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    47
    deadline := OperatingSystem getMillisecondTime + ((timeout - 60"extra min to cover variance") * 1000).
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    48
    iterStart := iterStop := 0.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    49
    i := 0.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    50
    directory := Smalltalk getPackageDirectoryForPackage: #'stx:goodies'.  
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    51
    [ OperatingSystem getMillisecondTime < (deadline - (iterStop - iterStart)) ] whileTrue:[
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    52
        iterStart := OperatingSystem getMillisecondTime.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    53
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    54
        i := i + 1.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    55
        Stdout nextPutLine: 'Pass '  , i printString.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    56
        files := directory recursiveDirectoryContentsAsFilenames select:[:each | each isRegularFile ].
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    57
        files := files select: [ :e | e suffix = 'st' ].
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    58
        files collect:[ :e | (FileStream fileNamed: e) contents asString ].   
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    59
        Stdout nextPutLine: 'Pass '  , i printString , '...OK'.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    60
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    61
        iterStop := OperatingSystem getMillisecondTime.
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    62
    ].
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    63
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    64
    "Created: / 23-06-2016 / 20:45:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    65
!
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
    66
1190
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    67
test_java_initialize
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    68
    "
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    69
    Running `JavaVM boot` for long enough used to kill the
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    70
    VM due to problems in memory managements.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    71
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    72
    This testcase runs for 10 minutes a test in separate VM
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    73
    that 100 times boots and flushes the VM.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    74
    "
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    75
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    76
    <spawn: false>
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    77
    <timeout: 660> "11min"
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    78
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    79
    | timeout deadline iterStart iterStop |    
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    80
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    81
    timeout := self timeout.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    82
    deadline := OperatingSystem getMillisecondTime + ((timeout - 60"extra min to cover variance") * 1000).
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    83
    iterStart := iterStop := 0.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    84
    [ OperatingSystem getMillisecondTime < (deadline - (iterStop - iterStart)) ] whileTrue:[
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    85
        iterStart := OperatingSystem getMillisecondTime.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    86
        (self class selector: #iter_java_initialize) runCase.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    87
        iterStop := OperatingSystem getMillisecondTime.
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    88
    ].
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    89
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    90
    "Created: / 08-09-2014 / 12:14:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    91
!
cf332dfb2334 Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1181
diff changeset
    92
1181
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
test_newspace_overflow
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    <timeout: 120> "2min"
1193
4fd89b765c87 Added forgotten annotation <spawn:true> to newspace overflow test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1190
diff changeset
    96
    <spawn: true>
1181
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    | newSize newLimit |
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    newSize := ObjectMemory newSpaceSize.
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    newLimit := (newSize * 0.9) rounded.
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    "/ Allocate some garbage to fill in new space...
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    [ ObjectMemory newSpaceUsed < newLimit ] whileTrue:[
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
        | a |
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
        a := Array new: 100.
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    ].
1248
ab9af85de41a class: RegressionTests::VMCrashTests
Claus Gittinger <cg@exept.de>
parents: 1193
diff changeset
   108
    "/ Now, allocate some really huge object
1498
398050ba2384 Fixed VMCrashTests>>test_newspace_overflow
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1493
diff changeset
   109
    [
398050ba2384 Fixed VMCrashTests>>test_newspace_overflow
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1493
diff changeset
   110
        String new: 300 * 1024 * 1024"300MB"
398050ba2384 Fixed VMCrashTests>>test_newspace_overflow
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1493
diff changeset
   111
    ] on: AllocationFailure do:[:ex |
398050ba2384 Fixed VMCrashTests>>test_newspace_overflow
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1493
diff changeset
   112
        "/ Do nothing, allocation failure is valid error
398050ba2384 Fixed VMCrashTests>>test_newspace_overflow
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1493
diff changeset
   113
    ].
1181
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    "Created: / 05-09-2014 / 19:44:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1193
4fd89b765c87 Added forgotten annotation <spawn:true> to newspace overflow test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1190
diff changeset
   116
    "Modified: / 16-09-2014 / 18:50:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1498
398050ba2384 Fixed VMCrashTests>>test_newspace_overflow
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1493
diff changeset
   117
    "Modified: / 24-06-2016 / 00:41:29 / jv"
1181
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
! !
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
!VMCrashTests class methodsFor:'documentation'!
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
version
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
    ^ '$Header$'
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
!
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
version_CVS
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    ^ '$Header$'
1493
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
   128
!
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
   129
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
   130
version_HG
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
   131
8da0d9b56e92 Issue #64: added test
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1248
diff changeset
   132
    ^ '$Changeset: <not expanded> $'
1181
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
! !
62d2da1a9c41 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134