Skip to content

Commit

Permalink
coreapi pubsub: add tests
Browse files Browse the repository at this point in the history
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
  • Loading branch information
magik6k committed Sep 25, 2018
1 parent d29aff7 commit 3bedefb
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 1 deletion.
2 changes: 1 addition & 1 deletion core/coreapi/interface/options/pubsub.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func PubSubSubscribeOptions(opts ...PubSubSubscribeOption) (*PubSubSubscribeSett

type pubsubOpts struct{}

var PubBub nameOpts
var PubSub pubsubOpts

func (pubsubOpts) Topic(topic string) PubSubPeersOption {
return func(settings *PubSubPeersSettings) error {
Expand Down
96 changes: 96 additions & 0 deletions core/coreapi/pubsub_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package coreapi_test

import (
"context"
"github.com/ipfs/go-ipfs/core/coreapi/interface/options"
"testing"
"time"
)

func TestBasicPubSub(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

nds, apis, err := makeAPISwarm(ctx, true, 2)
if err != nil {
t.Fatal(err)
}

sub, err := apis[0].PubSub().Subscribe(ctx, "testch")
if err != nil {
t.Fatal(err)
}

go func() {
tick := time.Tick(100 * time.Millisecond)

for {
err = apis[1].PubSub().Publish(ctx, "testch", []byte("hello world"))
if err != nil {
t.Fatal(err)
}
select {
case <-tick:
case <-ctx.Done():
return
}
}
}()

m, err := sub.Next(ctx)
if err != nil {
t.Fatal(err)
}

if string(m.Data()) != "hello world" {
t.Errorf("got invalid data: %s", string(m.Data()))
}

if m.From() != nds[1].Identity {
t.Errorf("m.From didn't match")
}

peers, err := apis[1].PubSub().Peers(ctx, options.PubSub.Topic("testch"))
if err != nil {
t.Fatal(err)
}

if len(peers) != 1 {
t.Fatalf("got incorrect number of peers: %d", len(peers))
}

if peers[0] != nds[0].Identity {
t.Errorf("peer didn't match")
}

peers, err = apis[1].PubSub().Peers(ctx, options.PubSub.Topic("nottestch"))
if err != nil {
t.Fatal(err)
}

if len(peers) != 0 {
t.Fatalf("got incorrect number of peers: %d", len(peers))
}

topics, err := apis[0].PubSub().Ls(ctx)
if err != nil {
t.Fatal(err)
}

if len(topics) != 1 {
t.Fatalf("got incorrect number of topics: %d", len(peers))
}

if topics[0] != "testch" {
t.Errorf("topic didn't match")
}

topics, err = apis[1].PubSub().Ls(ctx)
if err != nil {
t.Fatal(err)
}

if len(topics) != 0 {
t.Fatalf("got incorrect number of topics: %d", len(peers))
}
}
3 changes: 3 additions & 0 deletions core/coreapi/unixfs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ func makeAPISwarm(ctx context.Context, fullIdentity bool, n int) ([]*core.IpfsNo
Repo: r,
Host: mock.MockHostOption(mn),
Online: fullIdentity,
ExtraOpts: map[string]bool{
"pubsub": true,
},
})
if err != nil {
return nil, nil, err
Expand Down

0 comments on commit 3bedefb

Please sign in to comment.