func newTestPeer(pm *ProtocolManager) (*testPeer, <-chan error) { var id discover.NodeID rand.Read(id[:]) rw1, rw2 := p2p.MsgPipe() peer := pm.newPeer(pm.protVer, pm.netId, p2p.NewPeer(id, "test peer", nil), rw2) errc := make(chan error, 1) go func() { pm.newPeerCh <- peer errc <- pm.handle(peer) }() return &testPeer{rw1, rw2, pm, peer}, errc }
func startTestCluster(n int) []*Whisper { // Create the batch of simulated peers nodes := make([]*p2p.Peer, n) for i := 0; i < n; i++ { nodes[i] = p2p.NewPeer(discover.NodeID{}, "", nil) } whispers := make([]*Whisper, n) for i := 0; i < n; i++ { whispers[i] = New() whispers[i].Start() } // Wire all the peers to the root one for i := 1; i < n; i++ { src, dst := p2p.MsgPipe() go whispers[0].handlePeer(nodes[i], src) go whispers[i].handlePeer(nodes[0], dst) } return whispers }
func startTestPeer() *testPeer { // Create a simulated P2P remote peer and data streams to it remote := p2p.NewPeer(discover.NodeID{}, "", nil) tester, tested := p2p.MsgPipe() // Create a whisper client and connect with it to the tester peer client := New() client.Start() termed := make(chan struct{}) go func() { defer client.Stop() defer close(termed) defer tested.Close() client.handlePeer(remote, tested) }() return &testPeer{ client: client, stream: tester, termed: termed, } }