Skip to content

Commit

Permalink
Merge pull request #72 from tkuchiki/fix-gitignore
Browse files Browse the repository at this point in the history
Fix .gitignore and add cmd dir
  • Loading branch information
tkuchiki authored May 2, 2023
2 parents d1ba450 + e7b15f9 commit e52b64d
Show file tree
Hide file tree
Showing 9 changed files with 719 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
alp
/alp
.idea
pkg/
src/
Expand Down
95 changes: 95 additions & 0 deletions cmd/alp/cmd/diff.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package cmd

import (
"os"

"github.com/spf13/cobra"
"github.com/tkuchiki/alp/stats"
)

func NewDiffCmd(rootCmd *cobra.Command) *cobra.Command {
var diffCmd = &cobra.Command{
Use: "diff <from> <to>",
Args: cobra.ExactArgs(2),
Short: "Show the difference between the two profile results",
Long: `Show the difference between the two profile results`,
RunE: func(cmd *cobra.Command, args []string) error {
sortOptions := stats.NewSortOptions()
opts, err := createOptions(rootCmd, sortOptions)
if err != nil {
return err
}

from, err := cmd.PersistentFlags().GetString("from")
if err != nil {
return err
}

to, err := cmd.PersistentFlags().GetString("to")
if err != nil {
return err
}

sts := stats.NewHTTPStats(true, false, false)

err = sts.InitFilter(opts)
if err != nil {
return err
}

sts.SetOptions(opts)
sts.SetSortOptions(sortOptions)

printOptions := stats.NewPrintOptions(opts.NoHeaders, opts.ShowFooters, opts.DecodeUri, opts.PaginationLimit)
printer := stats.NewPrinter(os.Stdout, opts.Output, opts.Format, opts.Percentiles, printOptions)
if err = printer.Validate(); err != nil {
return err
}

fromf, err := os.Open(from)
if err != nil {
return err
}
err = sts.LoadStats(fromf)
if err != nil {
return err
}
defer fromf.Close()

sts.SortWithOptions()

toSts := stats.NewHTTPStats(true, false, false)
err = toSts.InitFilter(opts)
if err != nil {
return err
}

toSts.SetOptions(opts)
toSts.SetSortOptions(sortOptions)

tof, err := os.Open(to)
if err != nil {
return err
}
err = toSts.LoadStats(tof)
if err != nil {
return err
}
defer tof.Close()

toSts.SortWithOptions()

printer.Print(sts, toSts)

return nil
},
}

//app.Arg("from", "").Required().StringVar(&f.From)
//app.Arg("to", "").Required().StringVar(&f.To)

diffCmd.PersistentFlags().StringP("from", "", "", "The comparison source file")
diffCmd.PersistentFlags().StringP("to", "", "", "The comparison target file")

return diffCmd
}
99 changes: 99 additions & 0 deletions cmd/alp/cmd/json.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package cmd

import (
"os"

"github.com/tkuchiki/alp/options"
"github.com/tkuchiki/alp/parsers"
"github.com/tkuchiki/alp/profiler"

"github.com/spf13/cobra"
"github.com/tkuchiki/alp/stats"
)

func NewJSONCmd(rootCmd *cobra.Command) *cobra.Command {
var jsonCmd = &cobra.Command{
Use: "json",
Short: "Profile the logs for JSON",
Long: `Profile the logs for JSON`,
RunE: func(cmd *cobra.Command, args []string) error {
sortOptions := stats.NewSortOptions()
opts, err := createOptions(cmd, sortOptions)
if err != nil {
return err
}

uriKey, err := cmd.PersistentFlags().GetString("uri-key")
if err != nil {
return err
}

methodKey, err := cmd.PersistentFlags().GetString("method-key")
if err != nil {
return err
}

timeKey, err := cmd.PersistentFlags().GetString("time-key")
if err != nil {
return err
}

responseTimeKey, err := cmd.PersistentFlags().GetString("restime-key")
if err != nil {
return err
}

requestTimeKey, err := cmd.PersistentFlags().GetString("reqtime-key")
if err != nil {
return err
}

bodyBytesKey, err := cmd.PersistentFlags().GetString("body-bytes-key")
if err != nil {
return err
}

statusKey, err := cmd.PersistentFlags().GetString("status-key")
if err != nil {
return err
}

opts = options.SetOptions(opts,
options.UriKey(uriKey),
options.MethodKey(methodKey),
options.TimeKey(timeKey),
options.ResponseTimeKey(responseTimeKey),
options.RequestTimeKey(requestTimeKey),
options.BodyBytesKey(bodyBytesKey),
options.StatusKey(statusKey),
)

prof := profiler.NewProfiler(os.Stdout, os.Stderr, opts)

f, err := prof.Open(opts.File)
if err != nil {
return err
}
defer f.Close()

keys := parsers.NewJSONKeys(opts.JSON.UriKey, opts.JSON.MethodKey, opts.JSON.TimeKey,
opts.JSON.ResponseTimeKey, opts.JSON.RequestTimeKey, opts.JSON.BodyBytesKey, opts.JSON.StatusKey)
parser := parsers.NewJSONParser(f, keys, opts.QueryString, opts.QueryStringIgnoreValues)

err = prof.Run(sortOptions, parser)

return err
},
}

defineOptions(jsonCmd)
jsonCmd.PersistentFlags().StringP("uri-key", "", options.DefaultUriKeyOption, "Change the uri key")
jsonCmd.PersistentFlags().StringP("method-key", "", options.DefaultMethodKeyOption, "Change the method key")
jsonCmd.PersistentFlags().StringP("time-key", "", options.DefaultTimeKeyOption, "Change the time key")
jsonCmd.PersistentFlags().StringP("restime-key", "", options.DefaultResponseTimeKeyOption, "Change the response_time key")
jsonCmd.PersistentFlags().StringP("reqtime-key", "", options.DefaultRequestTimeKeyOption, "Change the request_time key")
jsonCmd.PersistentFlags().StringP("body-bytes-key", "", options.DefaultBodyBytesKeyOption, "Change the body_bytes key")
jsonCmd.PersistentFlags().StringP("status-key", "", options.DefaultStatusKeyOption, "Change the status key")

return jsonCmd
}
101 changes: 101 additions & 0 deletions cmd/alp/cmd/ltsv.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package cmd

import (
"os"

"github.com/tkuchiki/alp/options"
"github.com/tkuchiki/alp/parsers"
"github.com/tkuchiki/alp/profiler"

"github.com/spf13/cobra"
"github.com/tkuchiki/alp/stats"
)

func NewLTSVCmd(rootCmd *cobra.Command) *cobra.Command {
var ltsvCmd = &cobra.Command{
Use: "ltsv",
Short: "Profile the logs for LTSV",
Long: `Profile the logs for LTSV`,
RunE: func(cmd *cobra.Command, args []string) error {
sortOptions := stats.NewSortOptions()
opts, err := createOptions(cmd, sortOptions)
if err != nil {
return err
}

uriLabel, err := cmd.PersistentFlags().GetString("uri-label")
if err != nil {
return err
}

methodLabel, err := cmd.PersistentFlags().GetString("method-label")
if err != nil {
return err
}

timeLabel, err := cmd.PersistentFlags().GetString("time-label")
if err != nil {
return err
}

appTimeLabel, err := cmd.PersistentFlags().GetString("apptime-label")
if err != nil {
return err
}

reqTimeLabel, err := cmd.PersistentFlags().GetString("reqtime-label")
if err != nil {
return err
}

sizeLabel, err := cmd.PersistentFlags().GetString("size-label")
if err != nil {
return err
}

statusLabel, err := cmd.PersistentFlags().GetString("status-label")
if err != nil {
return err
}

opts = options.SetOptions(opts,
options.UriLabel(uriLabel),
options.MethodLabel(methodLabel),
options.TimeLabel(timeLabel),
options.ApptimeLabel(appTimeLabel),
options.ReqtimeLabel(reqTimeLabel),
options.SizeLabel(sizeLabel),
options.StatusLabel(statusLabel),
)

prof := profiler.NewProfiler(os.Stdout, os.Stderr, opts)

f, err := prof.Open(opts.File)
if err != nil {
return err
}
defer f.Close()

label := parsers.NewLTSVLabel(opts.LTSV.UriLabel, opts.LTSV.MethodLabel, opts.LTSV.TimeLabel,
opts.LTSV.ApptimeLabel, opts.LTSV.ReqtimeLabel, opts.LTSV.SizeLabel, opts.LTSV.StatusLabel,
)
parser := parsers.NewLTSVParser(f, label, opts.QueryString, opts.QueryStringIgnoreValues)

err = prof.Run(sortOptions, parser)

return err
},
}

defineOptions(ltsvCmd)

ltsvCmd.PersistentFlags().StringP("uri-label", "", options.DefaultUriLabelOption, "Change the uri label")
ltsvCmd.PersistentFlags().StringP("method-label", "", options.DefaultMethodLabelOption, "Change the method label")
ltsvCmd.PersistentFlags().StringP("time-label", "", options.DefaultTimeLabelOption, "Change the time label")
ltsvCmd.PersistentFlags().StringP("apptime-label", "", options.DefaultApptimeLabelOption, "Change the apptime label")
ltsvCmd.PersistentFlags().StringP("reqtime-label", "", options.DefaultReqtimeLabelOption, "Change the reqtime label")
ltsvCmd.PersistentFlags().StringP("size-label", "", options.DefaultSizeLabelOption, "Change the size label")
ltsvCmd.PersistentFlags().StringP("status-label", "", options.DefaultStatusLabelOption, "Change the status label")

return ltsvCmd
}
Loading

0 comments on commit e52b64d

Please sign in to comment.