Add propatation_stats binary

This commit is contained in:
Ivan Danyliuk 2018-10-17 22:50:27 +02:00
parent 732b64efb8
commit dfbbeb6d0c
No known key found for this signature in database
GPG Key ID: 97ED33CE024E1DBF
3 changed files with 54 additions and 0 deletions

2
cmd/propagation_stats/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
propagation_stats
propagation.json

View File

@ -0,0 +1,10 @@
# Propagation stats printer
---
`propagation_stats` takes propagation log as an input and prints stats to standard output.
# Usage
```
./propagation_stats [-i ./propagation.json]
```

View File

@ -0,0 +1,42 @@
package main
import (
"encoding/json"
"flag"
"log"
"os"
"github.com/divan/graphx/formats"
"github.com/status-im/simulation/propagation"
"github.com/status-im/simulation/stats"
)
func main() {
var (
network = flag.String("n", "network.json", "Input filename for network graph data")
plogFile = flag.String("p", "propagation.json", "Input filename for propagation log data")
)
flag.Parse()
data, err := formats.FromD3JSON(*network)
if err != nil {
log.Fatal("Opening network file failed: ", err)
}
log.Printf("Loaded network graph from %s file", *network)
fd, err := os.Open(*plogFile)
if err != nil {
log.Fatal("Opening propagation file failed: ", err)
}
defer fd.Close()
log.Printf("Loaded propagation log from %s file", *plogFile)
plog := &propagation.Log{}
err = json.NewDecoder(fd).Decode(&plog)
if err != nil {
log.Fatalf("Parsing propagation log failed: ", err)
}
ss := stats.Analyze(plog, len(data.Nodes()), len(data.Links()))
ss.PrintVerbose()
}