Browse Source

Generate markdown table statistics for tag

tags/v1.0.0
dump_stack() 7 months ago
parent
commit
eb9ed90571
Signed by: Mikhail Klementev <blame@dumpstack.io> GPG Key ID: BE44DA8C062D87DC
4 changed files with 54 additions and 3 deletions
  1. 2
    0
      go.mod
  2. 4
    0
      go.sum
  3. 43
    3
      log.go
  4. 5
    0
      main.go

+ 2
- 0
go.mod View File

@@ -7,9 +7,11 @@ replace code.dumpstack.io/tools/out-of-tree/config => ./config
require (
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc // indirect
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf // indirect
github.com/mattn/go-runewidth v0.0.4 // indirect
github.com/mattn/go-sqlite3 v1.11.0
github.com/naoina/go-stringutil v0.1.0 // indirect
github.com/naoina/toml v0.1.1
github.com/olekukonko/tablewriter v0.0.1
github.com/otiai10/copy v1.0.1
github.com/remeh/sizedwaitgroup v0.0.0-20180822144253-5e7302b12cce
github.com/zcalusic/sysinfo v0.0.0-20190429151633-fbadb57345c2

+ 4
- 0
go.sum View File

@@ -3,12 +3,16 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5Vpd
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-sqlite3 v1.11.0 h1:LDdKkqtYlom37fkvqs8rMPFKAMe8+SgjbwZ6ex1/A/Q=
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks=
github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0=
github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8=
github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
github.com/olekukonko/tablewriter v0.0.1 h1:b3iUnf1v+ppJiOfNX4yxxqfWKMQPZR5yoh8urCTFX88=
github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/otiai10/copy v1.0.1 h1:gtBjD8aq4nychvRZ2CyJvFWAw0aja+VHazDdruZKGZA=
github.com/otiai10/copy v1.0.1/go.mod h1:8bMCJrAqOtN/d9oyh5HR7HhLQMvcGMpGdwRDYsfOCHc=
github.com/otiai10/mint v1.2.3/go.mod h1:YnfyPNhBvnY8bW4SGQHCs/aAFhkgySlMZbrF5U0bOVw=

+ 43
- 3
log.go View File

@@ -10,9 +10,12 @@ import (
"fmt"
"log"
"math"
"os"

"code.dumpstack.io/tools/out-of-tree/config"
"github.com/olekukonko/tablewriter"
"gopkg.in/logrusorgru/aurora.v1"

"code.dumpstack.io/tools/out-of-tree/config"
)

func logLogEntry(l logEntry) {
@@ -146,7 +149,9 @@ type runstat struct {
All, BuildOK, RunOK, TestOK, Timeout, Panic int
}

func logJsonHandler(db *sql.DB, path, tag string) (err error) {
func getStats(db *sql.DB, path, tag string) (
distros map[string]map[string]map[string]runstat, err error) {

var les []logEntry

ka, kaErr := config.ReadArtifactConfig(path + "/.out-of-tree.toml")
@@ -159,7 +164,7 @@ func logJsonHandler(db *sql.DB, path, tag string) (err error) {
return
}

distros := make(map[string]map[string]map[string]runstat)
distros = make(map[string]map[string]map[string]runstat)

for _, l := range les {
_, ok := distros[l.DistroType.String()]
@@ -194,12 +199,47 @@ func logJsonHandler(db *sql.DB, path, tag string) (err error) {
distros[l.DistroType.String()][l.DistroRelease][l.KernelRelease] = rs
}

return
}

func logJsonHandler(db *sql.DB, path, tag string) (err error) {
distros, err := getStats(db, path, tag)
if err != nil {
return
}

bytes, err := json.Marshal(&distros)
if err != nil {
return
}

fmt.Println(string(bytes))
return
}

func logMarkdownHandler(db *sql.DB, path, tag string) (err error) {
distros, err := getStats(db, path, tag)
if err != nil {
return
}

table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Distro", "Release", "Kernel", "Reliability"})
table.SetBorders(tablewriter.Border{
Left: true, Top: false, Right: true, Bottom: false})
table.SetCenterSeparator("|")

for distro, releases := range distros {
for release, kernels := range releases {
for kernel, stats := range kernels {
all := float64(stats.All)
ok := float64(stats.TestOK)
r := fmt.Sprintf("%6.02f%%", (ok/all)*100)
table.Append([]string{distro, release, kernel, r})
}
}
}

table.Render()
return
}

+ 5
- 0
main.go View File

@@ -198,6 +198,9 @@ func main() {
logJsonCommand := logCommand.Command("json", "Generate json statistics")
logJsonTag := logJsonCommand.Flag("tag", "Filter tag").Required().String()

logMarkdownCommand := logCommand.Command("markdown", "Generate markdown statistics")
logMarkdownTag := logMarkdownCommand.Flag("tag", "Filter tag").Required().String()

err = checkRequiredUtils()
if err != nil {
log.Fatalln(err)
@@ -282,6 +285,8 @@ func main() {
err = logDumpHandler(db, *logDumpID)
case logJsonCommand.FullCommand():
err = logJsonHandler(db, *path, *logJsonTag)
case logMarkdownCommand.FullCommand():
err = logMarkdownHandler(db, *path, *logMarkdownTag)
}

if err != nil {

Loading…
Cancel
Save