clusterviz/main.go

78 lines
1.5 KiB
Go
Raw Normal View History

2018-06-19 15:06:42 +02:00
package main
import (
"flag"
"fmt"
"log"
"github.com/divan/graph-experiments/graph"
2018-06-19 17:40:46 +02:00
"github.com/ethereum/go-ethereum/p2p"
2018-06-19 15:06:42 +02:00
)
func main() {
2018-06-19 17:40:46 +02:00
var (
consulAddr = flag.String("consul", "localhost:8500", "Host:port for consul address to query")
testMode = flag.Bool("test", false, "Test mode (use local test data)")
)
2018-06-19 15:06:42 +02:00
flag.Parse()
2018-06-19 17:40:46 +02:00
var rpc RPCClient
rpc = NewHTTPRPCClient()
if *testMode {
rpc = NewMockRPCClient()
}
var cluster ClusterSource
cluster = NewConsul(*consulAddr)
if *testMode {
cluster = NewMockConsulSource()
}
fetcher := NewFetcher(cluster, rpc)
nodes, err := fetcher.Nodes("", "eth.beta")
if err != nil {
log.Fatalf("Getting list of ips: %s", err)
}
peers, links, err := fetcher.NodePeers(nodes)
2018-06-19 15:06:42 +02:00
if err != nil {
2018-06-19 17:40:46 +02:00
log.Fatalf("Getting list of ips: %s", err)
2018-06-19 15:06:42 +02:00
}
g := graph.NewGraph()
2018-06-19 17:40:46 +02:00
for _, peer := range peers {
_ = peer
//AddPeer(g, "", node.PI)
}
for _, link := range links {
_ = link
//AddPeer(g, "", node.PI)
2018-06-19 15:06:42 +02:00
}
fmt.Printf("Graph has %d nodes and %d links\n", len(g.Nodes()), len(g.Links()))
}
2018-06-19 17:40:46 +02:00
func AddPeer(g *graph.Graph, fromID string, to *p2p.PeerInfo) {
toID := to.ID
addNode(g, fromID, false)
//addNode(g, toID, isClient(to.Name))
addNode(g, toID, false)
if g.LinkExistsByID(fromID, toID) {
return
}
if to.Network.Inbound == false {
g.AddLinkByIDs(fromID, toID)
} else {
g.AddLinkByIDs(toID, fromID)
}
}
func addNode(g *graph.Graph, id string, client bool) {
if _, err := g.NodeByID(id); err == nil {
// already exists
return
}
//node := NewNode(id)
//g.AddNode(node)
}