2018-10-17 19:32:15 +02:00

49 lines
1.3 KiB
Go

package main
import (
"flag"
"log"
"os"
"github.com/divan/graphx/formats"
gethlog "github.com/ethereum/go-ethereum/log"
"github.com/status-im/simulation/stats"
)
func main() {
var (
input = flag.String("i", "network.json", "Input filename for pregenerated data to be used with simulation")
output = flag.String("o", "propagation.json", "Output filename for p2p sending data")
gethlogLevel = flag.String("loglevel", "crit", "Geth log level for whisper simulator (crti, error, warn, info, debug, trace)")
)
flag.Parse()
setGethLogLevel(*gethlogLevel)
data, err := formats.FromD3JSON(*input)
if err != nil {
log.Fatal("Opening input file failed: ", err)
}
log.Printf("Loaded network graph from %s file", *input)
sim := NewSimulation(data)
log.Printf("Starting message sending simulation for graph with %d nodes...", len(data.Nodes()))
sim.Start()
defer sim.Stop()
sim.WriteOutputToFile(*output)
// stats
ss := stats.Analyze(data, sim.plog)
ss.PrintVerbose()
log.Printf("Written propagation data into %s", *output)
}
func setGethLogLevel(level string) {
lvl, err := gethlog.LvlFromString(level)
if err != nil {
lvl = gethlog.LvlCrit
}
gethlog.Root().SetHandler(gethlog.LvlFilterHandler(lvl, gethlog.StreamHandler(os.Stderr, gethlog.TerminalFormat(true))))
}