mirror of
https://github.com/golang/go
synced 2024-11-21 20:44:39 -07:00
add cgo test that doesn't depend on
non-standard libraries and add to build. R=r DELTA=211 (210 added, 0 deleted, 1 changed) OCL=35293 CL=35307
This commit is contained in:
parent
41a2b21f26
commit
2d72b39fd3
@ -8,7 +8,7 @@ TARG=stdio
|
||||
CGOFILES=\
|
||||
file.go
|
||||
|
||||
CLEANFILES+=hello fib chain
|
||||
CLEANFILES+=hello fib chain run.out
|
||||
|
||||
include $(GOROOT)/src/Make.pkg
|
||||
|
||||
|
43
misc/cgo/stdio/chain.go
Normal file
43
misc/cgo/stdio/chain.go
Normal file
@ -0,0 +1,43 @@
|
||||
// Copyright 2009 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Pass numbers along a chain of threads.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"runtime";
|
||||
"stdio";
|
||||
"strconv";
|
||||
)
|
||||
|
||||
const N = 10
|
||||
const R = 5
|
||||
|
||||
func link(left chan<- int, right <-chan int) {
|
||||
// Keep the links in dedicated operating system
|
||||
// threads, so that this program tests coordination
|
||||
// between pthreads and not just goroutines.
|
||||
runtime.LockOSThread();
|
||||
for {
|
||||
v := <-right;
|
||||
stdio.Puts(strconv.Itoa(v));
|
||||
left <- 1+v;
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
leftmost := make(chan int);
|
||||
var left chan int;
|
||||
right := leftmost;
|
||||
for i := 0; i < N; i++ {
|
||||
left, right = right, make(chan int);
|
||||
go link(left, right);
|
||||
}
|
||||
for i := 0; i < R; i++ {
|
||||
right <- 0;
|
||||
x := <-leftmost;
|
||||
stdio.Puts(strconv.Itoa(x));
|
||||
}
|
||||
}
|
150
misc/cgo/stdio/golden.out
Normal file
150
misc/cgo/stdio/golden.out
Normal file
@ -0,0 +1,150 @@
|
||||
* hello
|
||||
hello, world
|
||||
* fib
|
||||
0
|
||||
1
|
||||
1
|
||||
2
|
||||
3
|
||||
5
|
||||
8
|
||||
13
|
||||
21
|
||||
34
|
||||
55
|
||||
89
|
||||
144
|
||||
233
|
||||
377
|
||||
610
|
||||
987
|
||||
1597
|
||||
2584
|
||||
4181
|
||||
6765
|
||||
10946
|
||||
17711
|
||||
28657
|
||||
46368
|
||||
75025
|
||||
121393
|
||||
196418
|
||||
317811
|
||||
514229
|
||||
832040
|
||||
1346269
|
||||
2178309
|
||||
3524578
|
||||
5702887
|
||||
9227465
|
||||
14930352
|
||||
24157817
|
||||
39088169
|
||||
63245986
|
||||
102334155
|
||||
165580141
|
||||
267914296
|
||||
433494437
|
||||
701408733
|
||||
1134903170
|
||||
1836311903
|
||||
2971215073
|
||||
4807526976
|
||||
7778742049
|
||||
12586269025
|
||||
20365011074
|
||||
32951280099
|
||||
53316291173
|
||||
86267571272
|
||||
139583862445
|
||||
225851433717
|
||||
365435296162
|
||||
591286729879
|
||||
956722026041
|
||||
1548008755920
|
||||
2504730781961
|
||||
4052739537881
|
||||
6557470319842
|
||||
10610209857723
|
||||
17167680177565
|
||||
27777890035288
|
||||
44945570212853
|
||||
72723460248141
|
||||
117669030460994
|
||||
190392490709135
|
||||
308061521170129
|
||||
498454011879264
|
||||
806515533049393
|
||||
1304969544928657
|
||||
2111485077978050
|
||||
3416454622906707
|
||||
5527939700884757
|
||||
8944394323791464
|
||||
14472334024676221
|
||||
23416728348467685
|
||||
37889062373143906
|
||||
61305790721611591
|
||||
99194853094755497
|
||||
160500643816367088
|
||||
259695496911122585
|
||||
420196140727489673
|
||||
679891637638612258
|
||||
1100087778366101931
|
||||
1779979416004714189
|
||||
2880067194370816120
|
||||
* chain
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
15
misc/cgo/stdio/test.bash
Executable file
15
misc/cgo/stdio/test.bash
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
# Copyright 2009 The Go Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style
|
||||
# license that can be found in the LICENSE file.
|
||||
|
||||
set -e
|
||||
make hello fib chain
|
||||
echo '*' hello >run.out
|
||||
./hello >>run.out
|
||||
echo '*' fib >>run.out
|
||||
./fib >>run.out
|
||||
echo '*' chain >>run.out
|
||||
./chain >>run.out
|
||||
diff run.out golden.out
|
||||
make clean
|
@ -50,6 +50,11 @@ time make
|
||||
time make test
|
||||
) || exit $?
|
||||
|
||||
(xcd ../misc/cgo/stdio
|
||||
make clean
|
||||
test.bash
|
||||
) || exit $?
|
||||
|
||||
(xcd ../usr/austin/ogle
|
||||
make clean
|
||||
time make ogle
|
||||
|
Loading…
Reference in New Issue
Block a user