some cleanup, use WaitGroup over channel ugliness
Jeromy committed
Dec 15, 2014 at 04:58 UTC
70283151f20fe943b991a425958e0245c93c2835
1 file changed
+11
-61
merkledag/merkledag_test.go
+11
-61
@@ -5,6 +5,7 @@ import (
5
"fmt"
6
"io"
7
"io/ioutil"
8
+ "sync"
9
"testing"
10
11
blockservice "github.com/jbenet/go-ipfs/blockservice"
@@ -95,72 +96,22 @@ func makeZeroDag(t *testing.T) *Node {
96
}
97
98
func TestBatchFetch(t *testing.T) {
98
- var dagservs []DAGService
99
- for _, bsi := range blockservice.Mocks(t, 5) {
100
- dagservs = append(dagservs, NewDAGService(bsi))
101
- }
102
- t.Log("finished setup.")
103
-
99
root := makeTestDag(t)
105
- read, err := uio.NewDagReader(root, nil)
106
- if err != nil {
107
- t.Fatal(err)
108
- }
109
- expected, err := ioutil.ReadAll(read)
110
- if err != nil {
111
- t.Fatal(err)
112
- }
113
-
114
- err = dagservs[0].AddRecursive(root)
115
- if err != nil {
116
- t.Fatal(err)
117
- }
118
-
119
- t.Log("Added file to first node.")
120
-
121
- k, err := root.Key()
122
- if err != nil {
123
- t.Fatal(err)
124
- }
125
-
126
- done := make(chan struct{})
127
- for i := 1; i < len(dagservs); i++ {
128
- go func(i int) {
129
- first, err := dagservs[i].Get(k)
130
- if err != nil {
131
- t.Fatal(err)
132
- }
133
- fmt.Println("Got first node back.")
134
-
135
- read, err := uio.NewDagReader(first, dagservs[i])
136
- if err != nil {
137
- t.Fatal(err)
138
- }
139
- datagot, err := ioutil.ReadAll(read)
140
- if err != nil {
141
- t.Fatal(err)
142
- }
143
-
144
- if !bytes.Equal(datagot, expected) {
145
- t.Fatal("Got bad data back!")
146
- }
147
- done <- struct{}{}
148
- }(i)
149
- }
150
-
151
- for i := 1; i < len(dagservs); i++ {
152
- <-done
153
- }
100
+ runBatchFetchTest(t, root)
101
}
102
103
func TestBatchFetchDupBlock(t *testing.T) {
104
+ root := makeZeroDag(t)
105
+ runBatchFetchTest(t, root)
106
+}
107
+
108
+func runBatchFetchTest(t *testing.T, root *Node) {
109
var dagservs []DAGService
110
for _, bsi := range blockservice.Mocks(t, 5) {
111
dagservs = append(dagservs, NewDAGService(bsi))
112
}
113
t.Log("finished setup.")
114
163
- root := makeZeroDag(t)
115
read, err := uio.NewDagReader(root, nil)
116
if err != nil {
117
t.Fatal(err)
@@ -182,9 +133,11 @@ func TestBatchFetchDupBlock(t *testing.T) {
133
t.Fatal(err)
134
}
135
185
- done := make(chan struct{})
136
+ wg := sync.WaitGroup{}
137
for i := 1; i < len(dagservs); i++ {
138
+ wg.Add(1)
139
go func(i int) {
140
+ defer wg.Done()
141
first, err := dagservs[i].Get(k)
142
if err != nil {
143
t.Fatal(err)
@@ -203,11 +156,8 @@ func TestBatchFetchDupBlock(t *testing.T) {
156
if !bytes.Equal(datagot, expected) {
157
t.Fatal("Got bad data back!")
158
}
206
- done <- struct{}{}
159
}(i)
160
}
161
210
- for i := 1; i < len(dagservs); i++ {
211
- <-done
212
- }
162
+ wg.Done()
163
}