11package message
22
33import (
4- "bytes"
54 "io"
65 "testing"
76
87 "github.com/ipld/go-ipld-prime"
98 cidlink "github.com/ipld/go-ipld-prime/linking/cid"
10- "github.com/ipld/go-ipld-prime/node/basicnode"
119 "github.com/stretchr/testify/require"
1210
1311 "github.com/ipfs/go-graphsync"
1412 "github.com/ipfs/go-graphsync/metadata"
1513 "github.com/ipfs/go-graphsync/testutil"
1614)
1715
18- // Like the funcs in testutil above, but using blocks at the protocol level.
19- // We can't put them there right away, due to import cycles.
20- // We need to refactor these tests to be external, i.e. "package message_test".
21-
22- func ContainsGraphSyncBlock (blks []GraphSyncBlock , block GraphSyncBlock ) bool {
23- for _ , blk := range blks {
24- if bytes .Equal (blk .Prefix , block .Prefix ) && bytes .Equal (blk .Data , block .Data ) {
25- return true
26- }
27- }
28- return false
29- }
30- func AssertContainsGraphSyncBlock (t testing.TB , blks []GraphSyncBlock , block GraphSyncBlock ) {
31- t .Helper ()
32- require .True (t , ContainsGraphSyncBlock (blks , block ), "given block should be in list" )
33- }
34- func RefuteContainsGraphSyncBlock (t testing.TB , blks []GraphSyncBlock , block GraphSyncBlock ) {
35- t .Helper ()
36- require .False (t , ContainsGraphSyncBlock (blks , block ), "given block should not be in list" )
37- }
38-
3916func TestMessageBuilding (t * testing.T ) {
4017 blocks := testutil .GenerateBlocksOfSize (3 , 100 )
4118 links := make ([]ipld.Link , 0 , len (blocks ))
4219 for _ , block := range blocks {
4320 links = append (links , cidlink.Link {Cid : block .Cid ()})
4421 }
45- extensionData1 := basicnode . NewBytes ( testutil .RandomBytes (100 ) )
22+ extensionData1 := testutil .RandomBytes (100 )
4623 extensionName1 := graphsync .ExtensionName ("AppleSauce/McGee" )
47- extension1 := NamedExtension {
24+ extension1 := graphsync. ExtensionData {
4825 Name : extensionName1 ,
4926 Data : extensionData1 ,
5027 }
51- extensionData2 := basicnode . NewBytes ( testutil .RandomBytes (100 ) )
28+ extensionData2 := testutil .RandomBytes (100 )
5229 extensionName2 := graphsync .ExtensionName ("HappyLand/Happenstance" )
53- extension2 := NamedExtension {
30+ extension2 := graphsync. ExtensionData {
5431 Name : extensionName2 ,
5532 Data : extensionData2 ,
5633 }
@@ -97,12 +74,12 @@ func TestMessageBuilding(t *testing.T) {
9774 },
9875 checkMsg : func (t * testing.T , message GraphSyncMessage ) {
9976
100- responses := message .Responses
101- sentBlocks := BlockFormatSlice ( message .Blocks )
77+ responses := message .Responses ()
78+ sentBlocks := message .Blocks ( )
10279 require .Len (t , responses , 4 , "did not assemble correct number of responses" )
10380
10481 response1 := findResponseForRequestID (t , responses , requestID1 )
105- require .Equal (t , graphsync .RequestCompletedPartial , response1 .Status , "did not generate completed partial response" )
82+ require .Equal (t , graphsync .RequestCompletedPartial , response1 .Status () , "did not generate completed partial response" )
10683 assertMetadata (t , response1 , metadata.Metadata {
10784 metadata.Item {Link : links [0 ].(cidlink.Link ).Cid , BlockPresent : true },
10885 metadata.Item {Link : links [1 ].(cidlink.Link ).Cid , BlockPresent : false },
@@ -111,23 +88,23 @@ func TestMessageBuilding(t *testing.T) {
11188 assertExtension (t , response1 , extension1 )
11289
11390 response2 := findResponseForRequestID (t , responses , requestID2 )
114- require .Equal (t , graphsync .RequestCompletedFull , response2 .Status , "did not generate completed full response" )
91+ require .Equal (t , graphsync .RequestCompletedFull , response2 .Status () , "did not generate completed full response" )
11592 assertMetadata (t , response2 , metadata.Metadata {
11693 metadata.Item {Link : links [1 ].(cidlink.Link ).Cid , BlockPresent : true },
11794 metadata.Item {Link : links [2 ].(cidlink.Link ).Cid , BlockPresent : true },
11895 metadata.Item {Link : links [1 ].(cidlink.Link ).Cid , BlockPresent : true },
11996 })
12097
12198 response3 := findResponseForRequestID (t , responses , requestID3 )
122- require .Equal (t , graphsync .PartialResponse , response3 .Status , "did not generate partial response" )
99+ require .Equal (t , graphsync .PartialResponse , response3 .Status () , "did not generate partial response" )
123100 assertMetadata (t , response3 , metadata.Metadata {
124101 metadata.Item {Link : links [0 ].(cidlink.Link ).Cid , BlockPresent : true },
125102 metadata.Item {Link : links [1 ].(cidlink.Link ).Cid , BlockPresent : true },
126103 })
127104 assertExtension (t , response3 , extension2 )
128105
129106 response4 := findResponseForRequestID (t , responses , requestID4 )
130- require .Equal (t , graphsync .RequestCompletedFull , response4 .Status , "did not generate completed full response" )
107+ require .Equal (t , graphsync .RequestCompletedFull , response4 .Status () , "did not generate completed full response" )
131108
132109 require .Equal (t , len (blocks ), len (sentBlocks ), "did not send all blocks" )
133110
@@ -143,15 +120,15 @@ func TestMessageBuilding(t *testing.T) {
143120 },
144121 expectedSize : 0 ,
145122 checkMsg : func (t * testing.T , message GraphSyncMessage ) {
146- responses := message .Responses
123+ responses := message .Responses ()
147124
148125 response1 := findResponseForRequestID (t , responses , requestID1 )
149- require .Equal (t , graphsync .PartialResponse , response1 .Status , "did not generate partial response" )
126+ require .Equal (t , graphsync .PartialResponse , response1 .Status () , "did not generate partial response" )
150127 assertMetadata (t , response1 , nil )
151128 assertExtension (t , response1 , extension1 )
152129
153130 response2 := findResponseForRequestID (t , responses , requestID2 )
154- require .Equal (t , graphsync .PartialResponse , response2 .Status , "did not generate partial response" )
131+ require .Equal (t , graphsync .PartialResponse , response2 .Status () , "did not generate partial response" )
155132 assertMetadata (t , response2 , nil )
156133 assertExtension (t , response2 , extension2 )
157134 },
@@ -184,27 +161,27 @@ func TestMessageBuilding(t *testing.T) {
184161 expectedSize : 200 ,
185162 checkMsg : func (t * testing.T , message GraphSyncMessage ) {
186163
187- responses := message .Responses
188- sentBlocks := BlockFormatSlice ( message .Blocks )
164+ responses := message .Responses ()
165+ sentBlocks := message .Blocks ( )
189166 require .Len (t , responses , 3 , "did not assemble correct number of responses" )
190167
191168 response2 := findResponseForRequestID (t , responses , requestID2 )
192- require .Equal (t , graphsync .RequestCompletedFull , response2 .Status , "did not generate completed full response" )
169+ require .Equal (t , graphsync .RequestCompletedFull , response2 .Status () , "did not generate completed full response" )
193170 assertMetadata (t , response2 , metadata.Metadata {
194171 metadata.Item {Link : links [1 ].(cidlink.Link ).Cid , BlockPresent : true },
195172 metadata.Item {Link : links [2 ].(cidlink.Link ).Cid , BlockPresent : true },
196173 metadata.Item {Link : links [1 ].(cidlink.Link ).Cid , BlockPresent : true },
197174 })
198175
199176 response3 := findResponseForRequestID (t , responses , requestID3 )
200- require .Equal (t , graphsync .PartialResponse , response3 .Status , "did not generate partial response" )
177+ require .Equal (t , graphsync .PartialResponse , response3 .Status () , "did not generate partial response" )
201178 assertMetadata (t , response3 , metadata.Metadata {
202179 metadata.Item {Link : links [1 ].(cidlink.Link ).Cid , BlockPresent : true },
203180 })
204181 assertExtension (t , response3 , extension2 )
205182
206183 response4 := findResponseForRequestID (t , responses , requestID4 )
207- require .Equal (t , graphsync .RequestCompletedFull , response4 .Status , "did not generate completed full response" )
184+ require .Equal (t , graphsync .RequestCompletedFull , response4 .Status () , "did not generate completed full response" )
208185
209186 require .Equal (t , len (blocks )- 1 , len (sentBlocks ), "did not send all blocks" )
210187
@@ -242,12 +219,12 @@ func TestMessageBuilding(t *testing.T) {
242219 expectedSize : 100 ,
243220 checkMsg : func (t * testing.T , message GraphSyncMessage ) {
244221
245- responses := message .Responses
246- sentBlocks := BlockFormatSlice ( message .Blocks )
222+ responses := message .Responses ()
223+ sentBlocks := message .Blocks ( )
247224 require .Len (t , responses , 1 , "did not assemble correct number of responses" )
248225
249226 response3 := findResponseForRequestID (t , responses , requestID3 )
250- require .Equal (t , graphsync .PartialResponse , response3 .Status , "did not generate partial response" )
227+ require .Equal (t , graphsync .PartialResponse , response3 .Status () , "did not generate partial response" )
251228 assertMetadata (t , response3 , metadata.Metadata {
252229 metadata.Item {Link : links [1 ].(cidlink.Link ).Cid , BlockPresent : true },
253230 })
@@ -273,25 +250,23 @@ func TestMessageBuilding(t *testing.T) {
273250
274251func findResponseForRequestID (t * testing.T , responses []GraphSyncResponse , requestID graphsync.RequestID ) GraphSyncResponse {
275252 for _ , response := range responses {
276- if response .ID == requestID {
253+ if response .RequestID () == requestID {
277254 return response
278255 }
279256 }
280257 require .FailNow (t , "Could not find request" )
281258 return GraphSyncResponse {}
282259}
283260
284- func assertExtension (t * testing.T , response GraphSyncResponse , extension NamedExtension ) {
261+ func assertExtension (t * testing.T , response GraphSyncResponse , extension graphsync. ExtensionData ) {
285262 returnedExtensionData , found := response .Extension (extension .Name )
286263 require .True (t , found )
287264 require .Equal (t , extension .Data , returnedExtensionData , "did not encode extension" )
288265}
289266
290267func assertMetadata (t * testing.T , response GraphSyncResponse , expectedMetadata metadata.Metadata ) {
291- responseMetadataNode , found := response .Extension (graphsync .ExtensionMetadata )
268+ responseMetadataRaw , found := response .Extension (graphsync .ExtensionMetadata )
292269 require .True (t , found , "Metadata should be included in response" )
293- responseMetadataRaw , err := responseMetadataNode .AsBytes ()
294- require .NoError (t , err )
295270 responseMetadata , err := metadata .DecodeMetadata (responseMetadataRaw )
296271 require .NoError (t , err )
297272 require .Equal (t , expectedMetadata , responseMetadata , "incorrect metadata included in response" )
0 commit comments