synapsecns/sanguine

View on GitHub
services/omnirpc/cmd/display.go

Summary

Maintainability
A
0 mins
Test Coverage
package cmd

import (
    "fmt"
    "github.com/jftuga/ellipsis"
    "github.com/olekukonko/tablewriter"
    "github.com/synapsecns/sanguine/services/omnirpc/rpcinfo"
    "os"
    "sort"
)

// DisplayLatency displays latency results in a cli.
func DisplayLatency(lat []rpcinfo.Result) {
    table := tablewriter.NewWriter(os.Stdout)
    table.SetHeader([]string{"URL", "Latency", "HasError (if any)"})

    sort.Slice(lat, func(i, j int) bool {
        return lat[i].Latency < lat[j].Latency
    })

    for _, latencyResult := range lat {
        var reason string
        if latencyResult.HasError {
            reason = ellipsis.Shorten(latencyResult.Error.Error(), 20)
        }

        table.Append([]string{
            latencyResult.URL,
            fmt.Sprintf("%s milliseconds", latencyResult.Latency),
            reason,
        })
    }
    table.Render()
}