aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES4
-rw-r--r--Makefile6
-rw-r--r--tests/appendud.lua6
-rw-r--r--tests/errhangtest.lua13
-rw-r--r--tests/irayo_closure.lua10
5 files changed, 31 insertions, 8 deletions
diff --git a/CHANGES b/CHANGES
index 64de559..e9cfa25 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,10 @@ CHANGES:
3 3
4CHANGE X: 4CHANGE X:
5 5
6CHANGE 26 BGe 14-Feb-2011:
7 Fixed application hang-up because keeper state was not released in case of errors thrown by
8 inter-state data copy for unsupported types
9
6CHANGE 25 BGe 12-Feb-2011: 10CHANGE 25 BGe 12-Feb-2011:
7 Changed idfunc signature and contract to clarify that fact it is not lua-callable 11 Changed idfunc signature and contract to clarify that fact it is not lua-callable
8 and to be able to require the module it was exported from in the target lanes 12 and to be able to require the module it was exported from in the target lanes
diff --git a/Makefile b/Makefile
index 35870a7..f27404a 100644
--- a/Makefile
+++ b/Makefile
@@ -71,8 +71,9 @@ rock:
71#--- Testing --- 71#--- Testing ---
72# 72#
73test: 73test:
74 $(MAKE) errhangtest
74 $(MAKE) irayo_recursive 75 $(MAKE) irayo_recursive
75# $(MAKE) irayo_closure 76 $(MAKE) irayo_closure
76 $(MAKE) basic 77 $(MAKE) basic
77 $(MAKE) fifo 78 $(MAKE) fifo
78 $(MAKE) keeper 79 $(MAKE) keeper
@@ -141,6 +142,9 @@ irayo_closure: tests/irayo_closure.lua $(_TARGET_SO)
141finalizer: tests/finalizer.lua $(_TARGET_SO) 142finalizer: tests/finalizer.lua $(_TARGET_SO)
142 $(_PREFIX) $(LUA) $< 143 $(_PREFIX) $(LUA) $<
143 144
145errhangtest: tests/errhangtest.lua $(_TARGET_SO)
146 $(_PREFIX) $(LUA) $<
147
144error-test: tests/error.lua $(_TARGET_SO) 148error-test: tests/error.lua $(_TARGET_SO)
145 $(_PREFIX) $(LUA) $< 149 $(_PREFIX) $(LUA) $<
146 150
diff --git a/tests/appendud.lua b/tests/appendud.lua
index afea0e9..65d0798 100644
--- a/tests/appendud.lua
+++ b/tests/appendud.lua
@@ -31,18 +31,18 @@ local _ud = {
31 31
32 32
33function appendud(tab, ud) 33function appendud(tab, ud)
34io.stderr:write "Starting" 34 io.stderr:write "Starting"
35 tab:beginupdate() set_finalizer( function() tab:endupdate() end ) 35 tab:beginupdate() set_finalizer( function() tab:endupdate() end )
36 ud:lock() set_finalizer( function() ud:unlock() end ) 36 ud:lock() set_finalizer( function() ud:unlock() end )
37 for i = 1,#ud do 37 for i = 1,#ud do
38 tab[#tab+1] = ud[i] 38 tab[#tab+1] = ud[i]
39 end 39 end
40io.stderr:write "Ending" 40 io.stderr:write "Ending"
41 return tab -- need to return 'tab' since we're running in a separate thread 41 return tab -- need to return 'tab' since we're running in a separate thread
42 -- ('tab' is passed over lanes by value, not by reference) 42 -- ('tab' is passed over lanes by value, not by reference)
43end 43end
44 44
45local t,err= lanes.gen( appendud )( _tab, _ud ) -- create & launch a thread 45local t,err= lanes.gen( "io", appendud )( _tab, _ud ) -- create & launch a thread
46assert(t) 46assert(t)
47assert(not err) 47assert(not err)
48 48
diff --git a/tests/errhangtest.lua b/tests/errhangtest.lua
new file mode 100644
index 0000000..ddc1bfb
--- /dev/null
+++ b/tests/errhangtest.lua
@@ -0,0 +1,13 @@
1lanes = require('lanes')
2
3local linda = lanes.linda()
4
5local coro = coroutine.create(function() end)
6
7-- we are not allowed to send coroutines through a lanes
8-- however, this should raise an error, not hang the program...
9print( pcall(linda.send,linda, 'test', "oh boy"))
10print( pcall(linda.send,linda, 'test', coro))
11res = linda:receive('test')
12print( res)
13-- linda:send( 'test', coro)
diff --git a/tests/irayo_closure.lua b/tests/irayo_closure.lua
index faf08fd..3a82302 100644
--- a/tests/irayo_closure.lua
+++ b/tests/irayo_closure.lua
@@ -20,11 +20,13 @@ local function testrun()
20 return true 20 return true
21end 21end
22 22
23-- Should also work without these lines, but currently doesn't (bug in Lanes, 23-- When some function dereferences a global key, the asssociated global in the source state
24-- a function thrown over isn't connected to receiving lane's globals) 24-- isn't sent over the target lane
25-- therefore, the necessary functions must either be pulled as upvalues (hence locals)
26-- or the globals must exist in the target lanes because the modules have been required there
25-- 27--
26--local print=print 28local print=print
27--local assert=assert 29local assert=assert
28 30
29local function useclosurehere() 31local function useclosurehere()
30 assert( print ) 32 assert( print )