all.T 10.5 KB
Newer Older
1 2
# -----------------------------------------------------------------------------
# These tests we do even for 'make fast'
3

4 5 6 7
test('conc003', normal, compile_and_run, [''])
test('conc006', normal, compile_and_run, [''])
test('conc027', normal, compile_and_run, [''])
test('conc051', normal, compile_and_run, [''])
8 9

if ('threaded1' in config.run_ways):
10
   only_threaded_ways = only_ways(['ghci','threaded1','threaded2'])
11
else:
12
   only_threaded_ways = skip
13

14
test('conc069', only_threaded_ways, compile_and_run, [''])
15
test('conc069a', only_threaded_ways, compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
16 17
# this test gives slightly different results for non-threaded ways, so omit
# those for now.
18
test('conc070', only_threaded_ways, compile_and_run, [''])
19

20 21
test('conc071', omit_ways(['threaded2']), compile_and_run, [''])
test('conc072', only_ways(['threaded2']), compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
22
test('conc073', normal, compile_and_run, [''])
23

24
# vector code must get inlined to become non-allocating
25
test('T367', [reqlib('vector'), omit_ways(['ghci']), timeout_multiplier(0.001)], compile_and_run, ['-O2 -fno-omit-yields'])
26
test('T367_letnoescape', [timeout_multiplier(0.02), expect_broken_for(7297,['optllvm'])], compile_and_run, ['-fno-omit-yields'])
27

28 29 30 31
test('T1980', normal, compile_and_run, [''])
test('T2910', normal, compile_and_run, [''])
test('T2910a', normal, compile_and_run, [''])
test('T3279', normal, compile_and_run, [''])
32

Simon Marlow's avatar
Simon Marlow committed
33
# This test takes a long time with the default context switch interval
34
test('T3429', extra_run_opts('+RTS -C0.001 -RTS'), compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
35

Simon Marlow's avatar
Simon Marlow committed
36
# without -O, goes into an infinite loop
37
# GHCi does not detect the infinite loop.  We should really fix this.
38
test('T4030', omit_ways('ghci'), compile_and_run, ['-O'])
Simon Marlow's avatar
Simon Marlow committed
39

40
# each of these runs for about a second
Ian Lynagh's avatar
Ian Lynagh committed
41 42
test('throwto001', [reqlib('random'), extra_run_opts('1000 2000')],
                   compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
43
test('throwto002', [reqlib('random')], compile_and_run, [''])
44 45
test('throwto003', normal, compile_and_run, [''])

46
test('mask001', normal, compile_and_run, [''])
47
test('mask002', normal, compile_and_run, [''])
48 49 50

test('async001', normal, compile_and_run, [''])

Simon Marlow's avatar
Simon Marlow committed
51 52
test('numsparks001', only_ways(['threaded1']), compile_and_run, [''])

53 54
test('T4262', [ skip, # skip for now, it doesn't give reliable results
                only_ways(['threaded1']),
55
                unless(opsys('linux'),skip) ],
56
              compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
57

58 59
test('T4813', normal, compile_and_run, [''])
test('T4811', normal, compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
60

61 62
test('allowinterrupt001', normal, compile_and_run, [''])

Simon Marlow's avatar
Simon Marlow committed
63
# try hard to provoke the error by running the test 100 times
64
test('T5558',
Simon Marlow's avatar
Simon Marlow committed
65
     [ only_ways(['threaded2']),
66 67 68
       cmd_wrapper(
         lambda c: "for i in %s; do %s || break; done"  %
           (" ".join(str(i) for i in range(1,101)), c)) ],
Simon Marlow's avatar
Simon Marlow committed
69 70
     compile_and_run, [''])

71 72 73 74
test('T5421', normal, compile_and_run, [''])
test('T5611', normal, compile_and_run, [''])
test('T5238', normal, compile_and_run, [''])
test('T5866', exit_code(1), compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
75

76 77 78 79
test('readMVar1', normal, compile_and_run, [''])
test('readMVar2', normal, compile_and_run, [''])
test('readMVar3', normal, compile_and_run, [''])
test('tryReadMVar1', normal, compile_and_run, [''])
80
test('tryReadMVar2', normal, compile_and_run, [''])
Edward Z. Yang's avatar
Edward Z. Yang committed
81

82
test('T7970', normal, compile_and_run, [''])
83
test('AtomicPrimops', normal, compile_and_run, [''])
84

85 86 87
# test uses 2 threads and yield, scheduling can vary with threaded2
test('threadstatus-9333', [omit_ways(['threaded2'])], compile_and_run, [''])

88 89
test('T9379', normal, compile_and_run, [''])

90 91
test('allocLimit1', exit_code(1), compile_and_run, [''])
test('allocLimit2', normal, compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
92 93 94 95 96 97

# The non-threaded RTS on Windows doesn't handle throwing exceptions at I/O
# operations very well, and ends up duplicating the I/O, giving wrong results.
test('allocLimit3', [ when(opsys('mingw32'), only_ways(threaded_ways)),
                      exit_code(1) ], compile_and_run, [''])

98 99 100
test('allocLimit4', [ extra_run_opts('+RTS -xq300k -RTS') ],
                    compile_and_run, [''])

101 102 103
# -----------------------------------------------------------------------------
# These tests we only do for a full run

104
def f( name, opts ):
105
  if config.fast:
106
     opts.skip = 1
107 108 109

setTestOpts(f)

110 111
test('conc001', normal, compile_and_run, [''])
test('conc002', normal, compile_and_run, [''])
112 113 114 115

# Omit GHCi way - it blows up to 0.5G.  Something to do with the threaded RTS?
test('conc004', omit_ways(['ghci']), compile_and_run, [''])

116 117
test('conc007', [only_compiler_types(['ghc']),
                 extra_run_opts('+RTS -H128M -RTS')],
ross's avatar
ross committed
118 119
		compile_and_run, [''])
test('conc008', only_compiler_types(['ghc']), compile_and_run, [''])
120
test('conc009', [only_compiler_types(['ghc']), exit_code(1)],
ross's avatar
ross committed
121 122
		compile_and_run, [''])
test('conc010', only_compiler_types(['ghc']), compile_and_run, [''])
123 124

# conc012(ghci) needs a smaller stack, or it takes forever
125 126 127
test('conc012', [only_compiler_types(['ghc']),
                 extra_run_opts('+RTS -K8m -RTS')],
                compile_and_run, [''])
128

129
test('conc013', only_compiler_types(['ghc']), compile_and_run, [''])
130

ross's avatar
ross committed
131 132
test('conc014', only_compiler_types(['ghc']), compile_and_run, [''])
test('conc015', only_compiler_types(['ghc']), compile_and_run, [''])
133
test('conc015a', only_compiler_types(['ghc']), compile_and_run, [''])
134
test('conc016', [ omit_ways(['threaded2']), # see comment in conc016.hs
135
                  only_compiler_types(['ghc']) ], compile_and_run, [''])
ross's avatar
ross committed
136
test('conc017', only_compiler_types(['ghc']), compile_and_run, [''])
137
test('conc017a', only_compiler_types(['ghc']), compile_and_run, [''])
ross's avatar
ross committed
138
test('conc018', only_compiler_types(['ghc']), compile_and_run, [''])
139 140
test('conc019', [only_compiler_types(['ghc']),
                 extra_run_opts('+RTS -K16m -RTS')],
ross's avatar
ross committed
141 142
		compile_and_run, [''])
test('conc020', only_compiler_types(['ghc']), compile_and_run, [''])
143
test('conc021', [ omit_ways(['ghci']), exit_code(1) ], compile_and_run, [''])
ross's avatar
ross committed
144
test('conc022', only_compiler_types(['ghc']), compile_and_run, [''])
145 146 147 148 149 150 151 152 153 154 155

# On Windows, the non-threaded RTS creates a real OS thread for each 
# threadDelay.  conc023 creates 5000 concurrent threadDelays, and the
# resulting creation of OS threads seems to cause the system to run
# out of memory sometimes (I'm not sure exactly how/why this happens,
# but the threaded RTS fixes it).  See #1197.
if config.platform == 'i386-unknown-mingw32':
   conc023_ways = only_ways(['threaded1','threaded2'])
else:
   conc023_ways = normal

156 157 158 159
test('conc023', [when(fast(), skip),
                 only_compiler_types(['ghc']),
                 reqlib('random'),
                 conc023_ways], compile_and_run, [''])
160

ross's avatar
ross committed
161
test('conc024', only_compiler_types(['ghc']), compile_and_run, [''])
162
test('conc025', normal, compile_and_run, [''])
ross's avatar
ross committed
163
test('conc026', only_compiler_types(['ghc']), compile_and_run, [''])
164 165
test('conc028', normal, compile_and_run, [''])
test('conc029', normal, compile_and_run, [''])
166 167
test('conc030',
     [only_compiler_types(['ghc']), extra_run_opts('+RTS -K4M -RTS')],
ross's avatar
ross committed
168
		compile_and_run, [''])
169

170
test('conc031', exit_code(1), compile_and_run, [''])
171

ross's avatar
ross committed
172
test('conc032', only_compiler_types(['ghc']), compile_and_run, [''])
173
test('conc033', normal, compile_and_run, [''])
174 175

# Omit for GHCi, because it just sits there waiting for you to press ^C
176 177 178
test('conc034', [only_compiler_types(['ghc']),
                 omit_ways(['ghci']), 
                 extra_run_opts('+RTS -C0 -RTS')],
179
		compile_and_run, [''])
180

ross's avatar
ross committed
181
test('conc035', only_compiler_types(['ghc']), compile_and_run, [''])
182

183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
# conc036: now skipped entirely.  This test attempts to check that
# unsafe foreign calls block other threads, but doing that reliably is
# probably impossible.  The last straw was when it started failing on
# Windows around 7.4.x.
#
# OLD comments about hacks we tried to make it work:
#   Omit for GHCi: firstly GHCi doesn't have unsafe FFI calls, and secondly
#   the main thread cannot receive the deadlock exception because it can be
#   woken up by ^C.
#   Omit for threaded2: this test is really bogus and fails to do anything
#   sensible for more than one CPU.
#
test('conc036', skip, compile_and_run, [''])


198
# Interrupting foreign calls only makes sense if we are threaded
ian@well-typed.com's avatar
ian@well-typed.com committed
199
test('foreignInterruptible', [when(fast(), skip),
200
                              when(opsys('mingw32'),expect_fail),
201 202 203 204 205
                              # I don't think we support interrupting Sleep()
                              # on Windows.  --SDM
                              only_threaded_ways,
                              only_compiler_types(['ghc'])],
      compile_and_run, [''])
206

207 208
test('conc037', only_ways(['threaded1','threaded2']), compile_and_run, [''])
test('conc038', only_ways(['threaded1','threaded2']), compile_and_run, [''])
209

210
# Omit for GHCi, uses foreign export
211
# Omit for the threaded ways, because in this case the main thread is allowed to 
Simon Marlow's avatar
Simon Marlow committed
212
# complete, which causes the child thread to be interrupted.
Ian Lynagh's avatar
Ian Lynagh committed
213
test('conc039', omit_ways(['ghci','threaded1','threaded2','profthreaded']), compile_and_run, [''])
214 215

# Omit for GHCi, uses foreign export
216 217
test('conc040',
     [only_compiler_types(['ghc']), exit_code(1), omit_ways(['ghci'])],
ross's avatar
ross committed
218
		compile_and_run, [''])
219

220
# STM-related tests.
221 222 223 224 225
test('conc041', only_compiler_types(['ghc']), compile_and_run, [''])
test('conc042', only_compiler_types(['ghc']), compile_and_run, [''])
test('conc043', only_compiler_types(['ghc']), compile_and_run, [''])
test('conc044', only_compiler_types(['ghc']), compile_and_run, [''])
test('conc045', only_compiler_types(['ghc']), compile_and_run, [''])
226

227
test('conc058', only_compiler_types(['ghc']), compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
228

Ian Lynagh's avatar
Ian Lynagh committed
229 230 231
test('conc059',
     [only_compiler_types(['ghc']),
      only_ways(['threaded1','threaded2']),
ian@well-typed.com's avatar
ian@well-typed.com committed
232
      pre_cmd('$MAKE -s --no-print-directory conc059_setup'),
Ian Lynagh's avatar
Ian Lynagh committed
233 234
      extra_clean(['conc059_c.o'])],
     compile_and_run,
Simon Marlow's avatar
Simon Marlow committed
235
     ['conc059_c.c -no-hs-main'])
Simon Marlow's avatar
Simon Marlow committed
236

237 238
# This test sometimes just exits successfully
# when run the threaded2 way. The problem hasn't been diagnosed yet
239
test('conc064',
240
     exit_code(1),
241
     compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
242 243 244

test('conc065', ignore_output, compile_and_run, [''])
test('conc066', ignore_output, compile_and_run, [''])
Ian Lynagh's avatar
Ian Lynagh committed
245
test('conc067', ignore_output, compile_and_run, [''])
246 247 248 249

# omit threaded2, the behaviour of this test is non-deterministic with more
# than one CPU.
test('conc068', [ omit_ways('threaded2'), exit_code(1) ], compile_and_run, [''])
Simon Marlow's avatar
Simon Marlow committed
250

251 252 253 254 255
if (ghc_with_smp == 0):
   skip_if_not_smp = skip
else:
   skip_if_not_smp = normal

256 257
test('setnumcapabilities001',
     [ only_ways(['threaded1','threaded2']),
258
       extra_run_opts('4 12 2000'),
259 260
       reqlib('parallel'),
       skip_if_not_smp ],
261
     compile_and_run, [''])
rrnewton's avatar
rrnewton committed
262 263

# omit ghci, which can't handle unboxed tuples:
264
test('compareAndSwap', [omit_ways(['ghci','hpc']), reqlib('primitive')], compile_and_run, [''])
265