X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=p2p%2Ftest_util.go;h=8af7dc5640de52de2dce25f87209649d23e17e4d;hb=f3cc63da0daaba88d65b22aa0684c5893e438461;hp=3fec3b01d2d009c3a4dcb776fd37e5f6fdf33793;hpb=08281341c2cb02ba11d4218576256688854790fc;p=bytom%2Fvapor.git diff --git a/p2p/test_util.go b/p2p/test_util.go index 3fec3b01..8af7dc56 100644 --- a/p2p/test_util.go +++ b/p2p/test_util.go @@ -1,14 +1,16 @@ package p2p import ( - "math/rand" "net" + log "github.com/sirupsen/logrus" "github.com/tendermint/go-crypto" cmn "github.com/tendermint/tmlibs/common" cfg "github.com/vapor/config" + dbm "github.com/vapor/database/leveldb" "github.com/vapor/p2p/connection" + "github.com/vapor/p2p/discover/dht" ) //PanicOnAddPeerErr add peer error @@ -43,30 +45,6 @@ func CreateRoutableAddr() (addr string, netAddr *NetAddress) { return } -// MakeConnectedSwitches switches connected via arbitrary net.Conn; useful for testing -// Returns n switches, connected according to the connect func. -// If connect==Connect2Switches, the switches will be fully connected. -// initSwitch defines how the ith switch should be initialized (ie. with what reactors). -// NOTE: panics if any switch fails to start. -func MakeConnectedSwitches(cfg *cfg.Config, n int, initSwitch func(int, *Switch) *Switch, connect func([]*Switch, int, int)) []*Switch { - switches := make([]*Switch, n) - for i := 0; i < n; i++ { - switches[i] = MakeSwitch(cfg, i, "testing", "123.123.123", initSwitch) - } - - if err := startSwitches(switches); err != nil { - panic(err) - } - - for i := 0; i < n; i++ { - for j := i; j < n; j++ { - connect(switches, i, j) - } - } - - return switches -} - // Connect2Switches will connect switches i and j via net.Pipe() // Blocks until a conection is established. // NOTE: caller ensures i and j are within bounds @@ -103,18 +81,22 @@ func startSwitches(switches []*Switch) error { return nil } -func MakeSwitch(cfg *cfg.Config, i int, network, version string, initSwitch func(int, *Switch) *Switch) *Switch { - privKey := crypto.GenPrivKeyEd25519() +type mockDiscv struct { +} + +func (m *mockDiscv) ReadRandomNodes(buf []*dht.Node) (n int) { + return 0 +} + +func MakeSwitch(cfg *cfg.Config, testdb dbm.DB, privKey crypto.PrivKeyEd25519, initSwitch func(*Switch) *Switch) *Switch { // new switch, add reactors - // TODO: let the config be passed in? - s := initSwitch(i, NewSwitch(cfg)) - s.SetNodeInfo(&NodeInfo{ - PubKey: privKey.PubKey().Unwrap().(crypto.PubKeyEd25519), - Moniker: cmn.Fmt("switch%d", i), - Network: network, - Version: version, - ListenAddr: cmn.Fmt("%v:%v", network, rand.Intn(64512)+1023), - }) - s.SetNodePrivKey(privKey) + l, listenAddr := GetListener(cfg.P2P) + cfg.P2P.LANDiscover = false + sw, err := newSwitch(cfg, new(mockDiscv), nil, testdb, l, privKey, listenAddr, 0) + if err != nil { + log.Errorf("create switch error: %s", err) + return nil + } + s := initSwitch(sw) return s }