@@ -21,6 +21,7 @@ var peerstoreSuite = map[string]func(pstore.Peerstore) func(*testing.T){
2121 "AddStreamDuplicates" : testAddrStreamDuplicates ,
2222 "PeerstoreProtoStore" : testPeerstoreProtoStore ,
2323 "BasicPeerstore" : testBasicPeerstore ,
24+ "Metadata" : testMetadata ,
2425}
2526
2627type PeerstoreFactory func () (pstore.Peerstore , func ())
@@ -279,6 +280,46 @@ func testBasicPeerstore(ps pstore.Peerstore) func(t *testing.T) {
279280 }
280281}
281282
283+ func testMetadata (ps pstore.Peerstore ) func (t * testing.T ) {
284+ return func (t * testing.T ) {
285+ pids := make ([]peer.ID , 10 )
286+ for i := range pids {
287+ priv , _ , _ := crypto .GenerateKeyPair (crypto .RSA , 512 )
288+ p , _ := peer .IDFromPrivateKey (priv )
289+ pids [i ] = p
290+ }
291+ for _ , p := range pids {
292+ if err := ps .Put (p , "AgentVersion" , "string" ); err != nil {
293+ t .Errorf ("failed to put %q: %s" , "AgentVersion" , err )
294+ }
295+ if err := ps .Put (p , "bar" , 1 ); err != nil {
296+ t .Errorf ("failed to put %q: %s" , "bar" , err )
297+ }
298+ }
299+ for _ , p := range pids {
300+ v , err := ps .Get (p , "AgentVersion" )
301+ if err != nil {
302+ t .Errorf ("failed to find %q: %s" , "AgentVersion" , err )
303+ continue
304+ }
305+ if v != "string" {
306+ t .Errorf ("expected %q, got %q" , "string" , p )
307+ continue
308+ }
309+
310+ v , err = ps .Get (p , "bar" )
311+ if err != nil {
312+ t .Errorf ("failed to find %q: %s" , "bar" , err )
313+ continue
314+ }
315+ if v != 1 {
316+ t .Errorf ("expected %q, got %v" , 1 , v )
317+ continue
318+ }
319+ }
320+ }
321+ }
322+
282323func getAddrs (t * testing.T , n int ) []ma.Multiaddr {
283324 var addrs []ma.Multiaddr
284325 for i := 0 ; i < n ; i ++ {
0 commit comments