forked from JuliaLang/julia
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ltests.jl
111 lines (79 loc) · 2.11 KB
/
ltests.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
addprocs(1)
exp=5
print("Testing repeated 10^$exp connect/disconnects....")
(port, server) = listenany(8000)
@spawnat(1,
begin
while (true)
close(accept(server))
end
end
)
@sync begin
@async begin
for i in 1:10^exp
close(connect("localhost", port));
# println("finished $i")
end
end
end
close(server)
println(" : OK")
(port, server) = listenany(8000)
exp=9
size = 10^exp
block = 10^(exp - 4)
print("Testing open, send of 10^$exp bytes and closing. Other side should recv complete amount...")
rr_rcd = RemoteRef()
rr_sent = RemoteRef()
@spawnat(1,
begin
while (true)
s=accept(server)
bread = 0
while bread < size
data = read(s, Uint8, block)
@assert length(data) == block
bread += block
end
# println("process $(myid()) received $bread bytes")
close(s)
put!(rr_rcd, true)
end
end)
@spawnat(2,
begin
s = connect("localhost", port)
data = fill!(zeros(Uint8, block), int8(65))
bwritten = 0
while bwritten < size
write(s, data)
bwritten += block
end
close(s)
# println("process $(myid()) sent $bwritten bytes")
put!(rr_sent, true)
end)
wait(rr_rcd)
wait(rr_sent)
close(server)
println(": OK")
require("sockxfer.jl")
xfer_exp = 9
print("Testing 10^$(xfer_exp) bytes of concurrent bidirectional transfers over a single socket connection...")
(port, server) = listenany(8000)
rr_server = RemoteRef()
rr_client = RemoteRef()
@spawnat(1,
begin
while (true)
s=accept(server)
@async begin xfer(s, xfer_exp); put!(rr_server, true); take!(rr_client); close(s); put!(rr_server, true); end
end
end)
@spawnat(workers()[1], begin s = connect("localhost", port); xfer(s, xfer_exp); put!(rr_client, true); take!(rr_server); close(s); put!(rr_client, true); end)
take!(rr_server)
take!(rr_client)
close(server)
println(" : OK")
@unix_only include("memtest.jl")