Skip to content

Commit ccfb6ce

Browse files
authoredJul 30, 2024
test: use ipfs/go-test to consolidate code to generate test data (#638)
* Use ipfs/go-test to consolidate code to generate test data The go-test packages provides functionality for common types of test data generation. Use go-test for generating test data instead of internal utility packages. The random test data can be generated deterministically by setting an initial seed if doing so is necessary to recreate certain test data. Return `rand.Rand` in place of `util.randGen`. The type `util.randGen` was only used to provide a `Read` method as an alternative to using the `rand.Rand.Read` method.
1 parent 8e51658 commit ccfb6ce

40 files changed

+547
-1027
lines changed
 

‎CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ The following emojis are used to highlight certain changes:
2121
- `bitswap/server` minor memory use and performance improvements
2222
- `bitswap` unify logger names to use uniform format bitswap/path/pkgname
2323
- `gateway` now always returns meaningful cache-control headers for generated HTML listings of UnixFS directories
24+
- generate random test data using `ipfs/go-test` instead of internal util code
2425

2526
### Removed
2627

‎bitswap/benchmarks_test.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import (
1212
"testing"
1313
"time"
1414

15-
"github.com/ipfs/boxo/bitswap/internal/testutil"
1615
blocks "github.com/ipfs/go-block-format"
16+
"github.com/ipfs/go-test/random"
1717
protocol "github.com/libp2p/go-libp2p/core/protocol"
1818

1919
"github.com/ipfs/boxo/bitswap"
@@ -169,8 +169,8 @@ func BenchmarkFetchFromOldBitswap(b *testing.B) {
169169
testinstance.ConnectInstances(instances)
170170

171171
// Generate blocks, with a smaller root block
172-
rootBlock := testutil.GenerateBlocksOfSize(1, rootBlockSize)
173-
blocks := testutil.GenerateBlocksOfSize(bch.blockCount, stdBlockSize)
172+
rootBlock := random.BlocksOfSize(1, rootBlockSize)
173+
blocks := random.BlocksOfSize(bch.blockCount, stdBlockSize)
174174
blocks[0] = rootBlock[0]
175175

176176
// Run the distribution
@@ -300,7 +300,7 @@ func BenchmarkDatacenterMultiLeechMultiSeed(b *testing.B) {
300300
defer ig.Close()
301301

302302
instances := ig.Instances(numnodes)
303-
blocks := testutil.GenerateBlocksOfSize(numblks, blockSize)
303+
blocks := random.BlocksOfSize(numblks, int(blockSize))
304304
runDistributionMulti(b, instances[:3], instances[3:], blocks, bstoreLatency, df, ff)
305305
}
306306
})
@@ -317,8 +317,8 @@ func subtestDistributeAndFetch(b *testing.B, numnodes, numblks int, d delay.D, b
317317
ig := testinstance.NewTestInstanceGenerator(net, nil, nil)
318318

319319
instances := ig.Instances(numnodes)
320-
rootBlock := testutil.GenerateBlocksOfSize(1, rootBlockSize)
321-
blocks := testutil.GenerateBlocksOfSize(numblks, stdBlockSize)
320+
rootBlock := random.BlocksOfSize(1, rootBlockSize)
321+
blocks := random.BlocksOfSize(numblks, stdBlockSize)
322322
blocks[0] = rootBlock[0]
323323
runDistribution(b, instances, blocks, bstoreLatency, df, ff)
324324
ig.Close()
@@ -333,8 +333,8 @@ func subtestDistributeAndFetchRateLimited(b *testing.B, numnodes, numblks int, d
333333
defer ig.Close()
334334

335335
instances := ig.Instances(numnodes)
336-
rootBlock := testutil.GenerateBlocksOfSize(1, rootBlockSize)
337-
blocks := testutil.GenerateBlocksOfSize(numblks, blockSize)
336+
rootBlock := random.BlocksOfSize(1, rootBlockSize)
337+
blocks := random.BlocksOfSize(numblks, int(blockSize))
338338
blocks[0] = rootBlock[0]
339339
runDistribution(b, instances, blocks, bstoreLatency, df, ff)
340340
}

‎bitswap/client/internal/blockpresencemanager/blockpresencemanager_test.go

+47-121
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package blockpresencemanager
33
import (
44
"testing"
55

6-
"github.com/ipfs/boxo/bitswap/internal/testutil"
76
cid "github.com/ipfs/go-cid"
7+
"github.com/ipfs/go-test/random"
88
peer "github.com/libp2p/go-libp2p/core/peer"
9+
"github.com/stretchr/testify/require"
910
)
1011

1112
const (
@@ -18,111 +19,72 @@ const (
1819
func TestBlockPresenceManager(t *testing.T) {
1920
bpm := New()
2021

21-
p := testutil.GeneratePeers(1)[0]
22-
cids := testutil.GenerateCids(2)
22+
p := random.Peers(1)[0]
23+
cids := random.Cids(2)
2324
c0 := cids[0]
2425
c1 := cids[1]
2526

2627
// Nothing stored yet, both PeerHasBlock and PeerDoesNotHaveBlock should
2728
// return false
28-
if bpm.PeerHasBlock(p, c0) {
29-
t.Fatal(expHasFalseMsg)
30-
}
31-
if bpm.PeerDoesNotHaveBlock(p, c0) {
32-
t.Fatal(expDoesNotHaveFalseMsg)
33-
}
29+
require.False(t, bpm.PeerHasBlock(p, c0), expHasFalseMsg)
30+
require.False(t, bpm.PeerDoesNotHaveBlock(p, c0), expDoesNotHaveFalseMsg)
3431

3532
// HAVE cid0 / DONT_HAVE cid1
3633
bpm.ReceiveFrom(p, []cid.Cid{c0}, []cid.Cid{c1})
3734

3835
// Peer has received HAVE for cid0
39-
if !bpm.PeerHasBlock(p, c0) {
40-
t.Fatal(expHasTrueMsg)
41-
}
42-
if bpm.PeerDoesNotHaveBlock(p, c0) {
43-
t.Fatal(expDoesNotHaveFalseMsg)
44-
}
36+
require.True(t, bpm.PeerHasBlock(p, c0), expHasTrueMsg)
37+
require.False(t, bpm.PeerDoesNotHaveBlock(p, c0), expDoesNotHaveFalseMsg)
4538

4639
// Peer has received DONT_HAVE for cid1
47-
if !bpm.PeerDoesNotHaveBlock(p, c1) {
48-
t.Fatal(expDoesNotHaveTrueMsg)
49-
}
50-
if bpm.PeerHasBlock(p, c1) {
51-
t.Fatal(expHasFalseMsg)
52-
}
40+
require.True(t, bpm.PeerDoesNotHaveBlock(p, c1), expDoesNotHaveTrueMsg)
41+
require.False(t, bpm.PeerHasBlock(p, c1), expHasFalseMsg)
5342

5443
// HAVE cid1 / DONT_HAVE cid0
5544
bpm.ReceiveFrom(p, []cid.Cid{c1}, []cid.Cid{c0})
5645

5746
// DONT_HAVE cid0 should NOT over-write earlier HAVE cid0
58-
if bpm.PeerDoesNotHaveBlock(p, c0) {
59-
t.Fatal(expDoesNotHaveFalseMsg)
60-
}
61-
if !bpm.PeerHasBlock(p, c0) {
62-
t.Fatal(expHasTrueMsg)
63-
}
47+
require.False(t, bpm.PeerDoesNotHaveBlock(p, c0), expDoesNotHaveFalseMsg)
48+
require.True(t, bpm.PeerHasBlock(p, c0), expHasTrueMsg)
6449

6550
// HAVE cid1 should over-write earlier DONT_HAVE cid1
66-
if !bpm.PeerHasBlock(p, c1) {
67-
t.Fatal(expHasTrueMsg)
68-
}
69-
if bpm.PeerDoesNotHaveBlock(p, c1) {
70-
t.Fatal(expDoesNotHaveFalseMsg)
71-
}
51+
require.True(t, bpm.PeerHasBlock(p, c1), expHasTrueMsg)
52+
require.False(t, bpm.PeerDoesNotHaveBlock(p, c1), expDoesNotHaveFalseMsg)
7253

7354
// Remove cid0
7455
bpm.RemoveKeys([]cid.Cid{c0})
7556

7657
// Nothing stored, both PeerHasBlock and PeerDoesNotHaveBlock should
7758
// return false
78-
if bpm.PeerHasBlock(p, c0) {
79-
t.Fatal(expHasFalseMsg)
80-
}
81-
if bpm.PeerDoesNotHaveBlock(p, c0) {
82-
t.Fatal(expDoesNotHaveFalseMsg)
83-
}
59+
require.False(t, bpm.PeerHasBlock(p, c0), expHasFalseMsg)
60+
require.False(t, bpm.PeerDoesNotHaveBlock(p, c0), expDoesNotHaveFalseMsg)
8461

8562
// Remove cid1
8663
bpm.RemoveKeys([]cid.Cid{c1})
8764

8865
// Nothing stored, both PeerHasBlock and PeerDoesNotHaveBlock should
8966
// return false
90-
if bpm.PeerHasBlock(p, c1) {
91-
t.Fatal(expHasFalseMsg)
92-
}
93-
if bpm.PeerDoesNotHaveBlock(p, c1) {
94-
t.Fatal(expDoesNotHaveFalseMsg)
95-
}
67+
require.False(t, bpm.PeerHasBlock(p, c1), expHasFalseMsg)
68+
require.False(t, bpm.PeerDoesNotHaveBlock(p, c1), expDoesNotHaveFalseMsg)
9669

9770
bpm.ReceiveFrom(p, []cid.Cid{c0}, []cid.Cid{c1})
98-
if !bpm.PeerHasBlock(p, c0) {
99-
t.Fatal(expHasTrueMsg)
100-
}
101-
if !bpm.PeerDoesNotHaveBlock(p, c1) {
102-
t.Fatal(expDoesNotHaveTrueMsg)
103-
}
71+
require.True(t, bpm.PeerHasBlock(p, c0), expHasTrueMsg)
72+
require.True(t, bpm.PeerDoesNotHaveBlock(p, c1), expDoesNotHaveTrueMsg)
73+
10474
bpm.RemovePeer(p)
105-
if bpm.PeerHasBlock(p, c0) {
106-
t.Fatal(expHasFalseMsg)
107-
}
108-
if bpm.PeerDoesNotHaveBlock(p, c0) {
109-
t.Fatal(expDoesNotHaveFalseMsg)
110-
}
111-
if bpm.PeerHasBlock(p, c1) {
112-
t.Fatal(expHasFalseMsg)
113-
}
114-
if bpm.PeerDoesNotHaveBlock(p, c1) {
115-
t.Fatal(expDoesNotHaveFalseMsg)
116-
}
75+
require.False(t, bpm.PeerHasBlock(p, c0), expHasFalseMsg)
76+
require.False(t, bpm.PeerDoesNotHaveBlock(p, c0), expDoesNotHaveFalseMsg)
77+
require.False(t, bpm.PeerHasBlock(p, c1), expHasFalseMsg)
78+
require.False(t, bpm.PeerDoesNotHaveBlock(p, c1), expDoesNotHaveFalseMsg)
11779
}
11880

11981
func TestAddRemoveMulti(t *testing.T) {
12082
bpm := New()
12183

122-
peers := testutil.GeneratePeers(2)
84+
peers := random.Peers(2)
12385
p0 := peers[0]
12486
p1 := peers[1]
125-
cids := testutil.GenerateCids(3)
87+
cids := random.Cids(3)
12688
c0 := cids[0]
12789
c1 := cids[1]
12890
c2 := cids[2]
@@ -136,78 +98,46 @@ func TestAddRemoveMulti(t *testing.T) {
13698
// - HAVE cid0
13799
// - HAVE cid1
138100
// - DONT_HAVE cid2
139-
if !bpm.PeerHasBlock(p0, c0) {
140-
t.Fatal(expHasTrueMsg)
141-
}
142-
if !bpm.PeerHasBlock(p0, c1) {
143-
t.Fatal(expHasTrueMsg)
144-
}
145-
if !bpm.PeerDoesNotHaveBlock(p0, c2) {
146-
t.Fatal(expDoesNotHaveTrueMsg)
147-
}
101+
require.True(t, bpm.PeerHasBlock(p0, c0), expHasTrueMsg)
102+
require.True(t, bpm.PeerHasBlock(p0, c1), expHasTrueMsg)
103+
require.True(t, bpm.PeerDoesNotHaveBlock(p0, c2), expDoesNotHaveTrueMsg)
148104

149105
// Peer 1 should end up with
150106
// - HAVE cid1
151107
// - HAVE cid2
152108
// - DONT_HAVE cid0
153-
if !bpm.PeerHasBlock(p1, c1) {
154-
t.Fatal(expHasTrueMsg)
155-
}
156-
if !bpm.PeerHasBlock(p1, c2) {
157-
t.Fatal(expHasTrueMsg)
158-
}
159-
if !bpm.PeerDoesNotHaveBlock(p1, c0) {
160-
t.Fatal(expDoesNotHaveTrueMsg)
161-
}
109+
require.True(t, bpm.PeerHasBlock(p1, c1), expHasTrueMsg)
110+
require.True(t, bpm.PeerHasBlock(p1, c2), expHasTrueMsg)
111+
require.True(t, bpm.PeerDoesNotHaveBlock(p1, c0), expDoesNotHaveTrueMsg)
162112

163113
// Remove cid1 and cid2. Should end up with
164114
// Peer 0: HAVE cid0
165115
// Peer 1: DONT_HAVE cid0
166116
bpm.RemoveKeys([]cid.Cid{c1, c2})
167-
if !bpm.PeerHasBlock(p0, c0) {
168-
t.Fatal(expHasTrueMsg)
169-
}
170-
if !bpm.PeerDoesNotHaveBlock(p1, c0) {
171-
t.Fatal(expDoesNotHaveTrueMsg)
172-
}
117+
require.True(t, bpm.PeerHasBlock(p0, c0), expHasTrueMsg)
118+
require.True(t, bpm.PeerDoesNotHaveBlock(p1, c0), expDoesNotHaveTrueMsg)
173119

174120
// The other keys should have been cleared, so both HasBlock() and
175121
// DoesNotHaveBlock() should return false
176-
if bpm.PeerHasBlock(p0, c1) {
177-
t.Fatal(expHasFalseMsg)
178-
}
179-
if bpm.PeerDoesNotHaveBlock(p0, c1) {
180-
t.Fatal(expDoesNotHaveFalseMsg)
181-
}
182-
if bpm.PeerHasBlock(p0, c2) {
183-
t.Fatal(expHasFalseMsg)
184-
}
185-
if bpm.PeerDoesNotHaveBlock(p0, c2) {
186-
t.Fatal(expDoesNotHaveFalseMsg)
187-
}
188-
if bpm.PeerHasBlock(p1, c1) {
189-
t.Fatal(expHasFalseMsg)
190-
}
191-
if bpm.PeerDoesNotHaveBlock(p1, c1) {
192-
t.Fatal(expDoesNotHaveFalseMsg)
193-
}
194-
if bpm.PeerHasBlock(p1, c2) {
195-
t.Fatal(expHasFalseMsg)
196-
}
197-
if bpm.PeerDoesNotHaveBlock(p1, c2) {
198-
t.Fatal(expDoesNotHaveFalseMsg)
199-
}
122+
require.False(t, bpm.PeerHasBlock(p0, c1), expHasFalseMsg)
123+
require.False(t, bpm.PeerDoesNotHaveBlock(p0, c1), expDoesNotHaveFalseMsg)
124+
require.False(t, bpm.PeerHasBlock(p0, c2), expHasFalseMsg)
125+
require.False(t, bpm.PeerDoesNotHaveBlock(p0, c2), expDoesNotHaveFalseMsg)
126+
require.False(t, bpm.PeerHasBlock(p1, c1), expHasFalseMsg)
127+
require.False(t, bpm.PeerDoesNotHaveBlock(p1, c1), expDoesNotHaveFalseMsg)
128+
require.False(t, bpm.PeerHasBlock(p1, c2), expHasFalseMsg)
129+
require.False(t, bpm.PeerDoesNotHaveBlock(p1, c2), expDoesNotHaveFalseMsg)
200130
}
201131

202132
func TestAllPeersDoNotHaveBlock(t *testing.T) {
203133
bpm := New()
204134

205-
peers := testutil.GeneratePeers(3)
135+
peers := random.Peers(3)
206136
p0 := peers[0]
207137
p1 := peers[1]
208138
p2 := peers[2]
209139

210-
cids := testutil.GenerateCids(3)
140+
cids := random.Cids(3)
211141
c0 := cids[0]
212142
c1 := cids[1]
213143
c2 := cids[2]
@@ -248,11 +178,7 @@ func TestAllPeersDoNotHaveBlock(t *testing.T) {
248178
}
249179

250180
for i, tc := range testcases {
251-
if !testutil.MatchKeysIgnoreOrder(
252-
bpm.AllPeersDoNotHaveBlock(tc.peers, tc.ks),
253-
tc.exp,
254-
) {
255-
t.Fatalf("test case %d failed: expected matching keys", i)
256-
}
181+
require.ElementsMatchf(t, bpm.AllPeersDoNotHaveBlock(tc.peers, tc.ks), tc.exp,
182+
"test case %d failed: expected matching keys", i)
257183
}
258184
}

0 commit comments

Comments
 (0)