From c45c7b00d7289d99c409979488afbfabe44c4cf7 Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Wed, 10 Apr 2019 09:03:30 -0700 Subject: [PATCH] add debug and progressbar --- go.sum | 1 - src/croc/croc.go | 16 +++++----- src/webrtc/pkg/session/bench/state.go | 2 +- src/webrtc/pkg/session/receiver/receiver.go | 23 +++++++++++--- src/webrtc/pkg/session/sender/sender.go | 35 ++++++++++++++------- 5 files changed, 52 insertions(+), 25 deletions(-) diff --git a/go.sum b/go.sum index f8f51137..5ef1b546 100644 --- a/go.sum +++ b/go.sum @@ -98,7 +98,6 @@ github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/schollz/croc v3.0.6+incompatible h1:rCfc8MGgcGjNW2/qSoulPh8CRGH+Ej4i3RWYOwhX9pE= github.com/schollz/mnemonicode v1.0.1 h1:LiH5hwADZwjwnfXsaD4xgnMyTAtaKHN+e5AyjRU6WSU= github.com/schollz/mnemonicode v1.0.1/go.mod h1:cl4UAOhUV0mkdjMj/QYaUZbZZdF8BnOqoz8rHMzwboY= github.com/schollz/pake v1.1.0 h1:+tYqsPVkuirFpmeRePjYTUhIHHKLufdmd7QfuspaXCk= diff --git a/src/croc/croc.go b/src/croc/croc.go index 8d2c15a8..27df9e74 100644 --- a/src/croc/croc.go +++ b/src/croc/croc.go @@ -19,9 +19,9 @@ import ( "github.com/mattn/go-colorable" "github.com/pions/webrtc" "github.com/schollz/croc/v5/src/utils" - common "github.com/schollz/croc/v5/src/webrtc/pkg/session/common" - recvSess "github.com/schollz/croc/v5/src/webrtc/pkg/session/receiver" - sendSess "github.com/schollz/croc/v5/src/webrtc/pkg/session/sender" + "github.com/schollz/croc/v5/src/webrtc/pkg/session/common" + "github.com/schollz/croc/v5/src/webrtc/pkg/session/receiver" + "github.com/schollz/croc/v5/src/webrtc/pkg/session/sender" "github.com/schollz/pake" "github.com/schollz/progressbar/v2" "github.com/sirupsen/logrus" @@ -36,6 +36,8 @@ func init() { log.SetFormatter(&logrus.TextFormatter{ForceColors: true}) log.SetOutput(colorable.NewColorableStdout()) log.SetLevel(logrus.DebugLevel) + receiver.Debug() + sender.Debug() } type Client struct { @@ -61,8 +63,8 @@ type Client struct { CurrentFile *os.File CurrentFileChunks []int64 - sendSess *sendSess.Session - recvSess *recvSess.Session + sendSess *sender.Session + recvSess *receiver.Session // channel data incomingMessageChannel <-chan *redis.Message @@ -524,7 +526,7 @@ func (c *Client) updateState() (err error) { } func (c *Client) dataChannelReceive() (err error) { - c.recvSess = recvSess.NewWith(recvSess.Config{}) + c.recvSess = receiver.NewWith(receiver.Config{}) err = c.recvSess.CreateConnection() if err != nil { return @@ -534,7 +536,7 @@ func (c *Client) dataChannelReceive() (err error) { } func (c *Client) dataChannelSend() (err error) { - c.sendSess = sendSess.NewWith(sendSess.Config{ + c.sendSess = sender.NewWith(sender.Config{ Configuration: common.Configuration{ OnCompletion: func() { }, diff --git a/src/webrtc/pkg/session/bench/state.go b/src/webrtc/pkg/session/bench/state.go index eecdff13..f4908620 100644 --- a/src/webrtc/pkg/session/bench/state.go +++ b/src/webrtc/pkg/session/bench/state.go @@ -7,6 +7,6 @@ import ( func (s *Session) onConnectionStateChange() func(connectionState webrtc.ICEConnectionState) { return func(connectionState webrtc.ICEConnectionState) { - log.Infof("ICE Connection State has changed: %s\n", connectionState.String()) + log.Debugf("ICE Connection State has changed: %s\n", connectionState.String()) } } diff --git a/src/webrtc/pkg/session/receiver/receiver.go b/src/webrtc/pkg/session/receiver/receiver.go index 6b0854d5..c5fc5d1f 100644 --- a/src/webrtc/pkg/session/receiver/receiver.go +++ b/src/webrtc/pkg/session/receiver/receiver.go @@ -5,12 +5,25 @@ import ( "io" "os" + "github.com/mattn/go-colorable" "github.com/pion/webrtc/v2" internalSess "github.com/schollz/croc/v5/src/webrtc/internal/session" "github.com/schollz/croc/v5/src/webrtc/pkg/session/common" - log "github.com/sirupsen/logrus" + logrus "github.com/sirupsen/logrus" ) +var log = logrus.New() + +func init() { + log.SetFormatter(&logrus.TextFormatter{ForceColors: true}) + log.SetOutput(colorable.NewColorableStdout()) + log.SetLevel(logrus.WarnLevel) +} + +func Debug() { + log.SetLevel(logrus.DebugLevel) +} + // Session is a receiver session type Session struct { sess internalSess.Session @@ -44,7 +57,7 @@ func NewWith(c Config) *Session { func (s *Session) onConnectionStateChange() func(connectionState webrtc.ICEConnectionState) { return func(connectionState webrtc.ICEConnectionState) { - log.Infof("ICE Connection State has changed: %s\n", connectionState.String()) + log.Debugf("ICE Connection State has changed: %s\n", connectionState.String()) } } @@ -111,14 +124,14 @@ func (s *Session) ReceiveData(pathToFile string) { } func (s *Session) receiveData(pathToFile string) error { - log.Infoln("Starting to receive data...") - log.Infof("receiving %s", pathToFile) + log.Debugln("Starting to receive data...") + log.Debugf("receiving %s", pathToFile) f, err := os.OpenFile(pathToFile, os.O_RDWR|os.O_CREATE, 0755) if err != nil { return err } defer func() { - log.Infoln("Stopped receiving data...") + log.Debugln("Stopped receiving data...") f.Close() }() // Consume the message channel, until done diff --git a/src/webrtc/pkg/session/sender/sender.go b/src/webrtc/pkg/session/sender/sender.go index 84330b45..d1e401f0 100644 --- a/src/webrtc/pkg/session/sender/sender.go +++ b/src/webrtc/pkg/session/sender/sender.go @@ -5,12 +5,14 @@ import ( "io" "os" "sync" + "time" colorable "github.com/mattn/go-colorable" "github.com/pion/webrtc/v2" internalSess "github.com/schollz/croc/v5/src/webrtc/internal/session" "github.com/schollz/croc/v5/src/webrtc/pkg/session/common" "github.com/schollz/croc/v5/src/webrtc/pkg/stats" + "github.com/schollz/progressbar/v2" "github.com/sirupsen/logrus" ) @@ -25,6 +27,10 @@ var log = logrus.New() func init() { log.SetFormatter(&logrus.TextFormatter{ForceColors: true}) log.SetOutput(colorable.NewColorableStdout()) + log.SetLevel(logrus.WarnLevel) +} + +func Debug() { log.SetLevel(logrus.DebugLevel) } @@ -49,6 +55,7 @@ type Session struct { // Stats/infos readingStats *stats.Stats + bar *progressbar.ProgressBar } // New creates a new sender session @@ -165,12 +172,20 @@ func (s *Session) readFile(pathToFile string) error { log.Error(err) return err } - log.Infof("Starting to read data from '%s'", pathToFile) + stat, _ := f.Stat() + s.bar = progressbar.NewOptions64( + stat.Size(), + progressbar.OptionSetRenderBlankState(true), + progressbar.OptionSetBytes64(stat.Size()), + progressbar.OptionSetWriter(os.Stderr), + progressbar.OptionThrottle(1/60*time.Second), + ) + log.Debugf("Starting to read data from '%s'", pathToFile) s.readingStats.Start() defer func() { f.Close() s.readingStats.Pause() - log.Infof("Stopped reading data...") + log.Debugf("Stopped reading data...") close(s.output) }() @@ -210,8 +225,8 @@ func (s *Session) onBufferedAmountLow() func() { return } - currentSpeed := s.sess.NetworkStats.Bandwidth() - fmt.Printf("Transferring at %.2f MB/s\r", currentSpeed) + // currentSpeed := s.sess.NetworkStats.Bandwidth() + // fmt.Printf("Transferring at %.2f MB/s\r", currentSpeed) for len(s.msgToBeSent) != 0 { cur := s.msgToBeSent[0] @@ -221,6 +236,7 @@ func (s *Session) onBufferedAmountLow() func() { return } s.sess.NetworkStats.AddBytes(uint64(cur.n)) + s.bar.Add(cur.n) s.msgToBeSent = s.msgToBeSent[1:] } } @@ -228,13 +244,10 @@ func (s *Session) onBufferedAmountLow() func() { func (s *Session) writeToNetwork() { // Set callback, as transfer may be paused - fmt.Println("\nwriting") s.dataChannel.OnBufferedAmountLow(s.onBufferedAmountLow()) - fmt.Println("\ndone") <-s.stopSending - fmt.Println("\nstopped sending") s.dataChannel.OnBufferedAmountLow(nil) - log.Infof("Pausing network I/O... (remaining at least %v packets)\n", len(s.output)) + log.Debugf("Pausing network I/O... (remaining at least %v packets)\n", len(s.output)) s.sess.NetworkStats.Pause() } @@ -244,7 +257,7 @@ func (s *Session) StopSending() { func (s *Session) onConnectionStateChange() func(connectionState webrtc.ICEConnectionState) { return func(connectionState webrtc.ICEConnectionState) { - log.Infof("ICE Connection State has changed: %s\n", connectionState.String()) + log.Debugf("ICE Connection State has changed: %s\n", connectionState.String()) if connectionState == webrtc.ICEConnectionStateDisconnected { s.StopSending() } @@ -255,8 +268,8 @@ func (s *Session) onOpenHandler() func() { return func() { s.sess.NetworkStats.Start() - log.Infof("Starting to send data...") - defer log.Infof("Stopped sending data...") + log.Debugf("Starting to send data...") + defer log.Debugf("Stopped sending data...") s.writeToNetwork() }