From 27bc52c70ed7703883810032c3689d244d8f40b4 Mon Sep 17 00:00:00 2001 From: nikhilsbhat Date: Sat, 1 Jul 2023 18:51:45 +0530 Subject: [PATCH] Pull out GetLoglevel to a separate package Add option to set loglevel while initializing plugin config --- gocd.go | 22 ++-------------------- gocd_test.go | 24 ------------------------ pkg/logger/log.go | 25 +++++++++++++++++++++++++ pkg/logger/log_test.go | 36 ++++++++++++++++++++++++++++++++++++ pkg/plugin/plugin.go | 5 +++-- pkg/plugin/plugin_test.go | 12 ++++++------ 6 files changed, 72 insertions(+), 52 deletions(-) create mode 100644 pkg/logger/log.go create mode 100644 pkg/logger/log_test.go diff --git a/gocd.go b/gocd.go index 5efc7b5..321116f 100644 --- a/gocd.go +++ b/gocd.go @@ -5,9 +5,9 @@ import ( "crypto/x509" "reflect" "sort" - "strings" "time" + goCdLogger "github.com/nikhilsbhat/gocd-sdk-go/pkg/logger" "github.com/nikhilsbhat/gocd-sdk-go/pkg/plugin" "github.com/go-resty/resty/v2" @@ -165,7 +165,7 @@ type Auth struct { // NewClient returns new instance of httpClient when invoked. func NewClient(baseURL string, auth Auth, logLevel string, caContent []byte) GoCd { logger := log.New() - logger.SetLevel(GetLoglevel(logLevel)) + logger.SetLevel(goCdLogger.GetLoglevel(logLevel)) logger.WithField(goCdAPILoggerName, true) logger.SetFormatter(&log.JSONFormatter{}) @@ -196,24 +196,6 @@ func NewClient(baseURL string, auth Auth, logLevel string, caContent []byte) GoC } } -// GetLoglevel sets the loglevel to the kind of log asked for. -func GetLoglevel(level string) log.Level { - switch strings.ToLower(level) { - case log.WarnLevel.String(): - return log.WarnLevel - case log.DebugLevel.String(): - return log.DebugLevel - case log.TraceLevel.String(): - return log.TraceLevel - case log.FatalLevel.String(): - return log.FatalLevel - case log.ErrorLevel.String(): - return log.ErrorLevel - default: - return log.InfoLevel - } -} - func (auth *Auth) setAuth(newClient *resty.Client) { if len(auth.BearerToken) != 0 { newClient.SetAuthToken(auth.BearerToken) diff --git a/gocd_test.go b/gocd_test.go index d0750d4..6b1797b 100644 --- a/gocd_test.go +++ b/gocd_test.go @@ -5,33 +5,9 @@ import ( "github.com/nikhilsbhat/gocd-sdk-go" - log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" ) -func Test_getLoglevel(t *testing.T) { - t.Run("should return warn level", func(t *testing.T) { - actual := gocd.GetLoglevel("warning") - assert.Equal(t, log.WarnLevel, actual) - }) - t.Run("should return trace level", func(t *testing.T) { - actual := gocd.GetLoglevel("trace") - assert.Equal(t, log.TraceLevel, actual) - }) - t.Run("should return debug level", func(t *testing.T) { - actual := gocd.GetLoglevel("debug") - assert.Equal(t, log.DebugLevel, actual) - }) - t.Run("should return fatal level", func(t *testing.T) { - actual := gocd.GetLoglevel("fatal") - assert.Equal(t, log.FatalLevel, actual) - }) - t.Run("should return error level", func(t *testing.T) { - actual := gocd.GetLoglevel("error") - assert.Equal(t, log.ErrorLevel, actual) - }) -} - func TestGetGoCDMethodNames(t *testing.T) { t.Run("should list all method names", func(t *testing.T) { response := gocd.GetGoCDMethodNames() diff --git a/pkg/logger/log.go b/pkg/logger/log.go new file mode 100644 index 0000000..b4b0608 --- /dev/null +++ b/pkg/logger/log.go @@ -0,0 +1,25 @@ +package logger + +import ( + "strings" + + log "github.com/sirupsen/logrus" +) + +// GetLoglevel sets the loglevel to the kind of log asked for. +func GetLoglevel(level string) log.Level { + switch strings.ToLower(level) { + case log.WarnLevel.String(): + return log.WarnLevel + case log.DebugLevel.String(): + return log.DebugLevel + case log.TraceLevel.String(): + return log.TraceLevel + case log.FatalLevel.String(): + return log.FatalLevel + case log.ErrorLevel.String(): + return log.ErrorLevel + default: + return log.InfoLevel + } +} diff --git a/pkg/logger/log_test.go b/pkg/logger/log_test.go new file mode 100644 index 0000000..8c208dd --- /dev/null +++ b/pkg/logger/log_test.go @@ -0,0 +1,36 @@ +package logger_test + +import ( + "testing" + + "github.com/nikhilsbhat/gocd-sdk-go/pkg/logger" + log "github.com/sirupsen/logrus" + "github.com/stretchr/testify/assert" +) + +func Test_getLoglevel(t *testing.T) { + t.Run("should return warn level", func(t *testing.T) { + actual := logger.GetLoglevel("warning") + assert.Equal(t, log.WarnLevel, actual) + }) + t.Run("should return trace level", func(t *testing.T) { + actual := logger.GetLoglevel("trace") + assert.Equal(t, log.TraceLevel, actual) + }) + t.Run("should return debug level", func(t *testing.T) { + actual := logger.GetLoglevel("debug") + assert.Equal(t, log.DebugLevel, actual) + }) + t.Run("should return fatal level", func(t *testing.T) { + actual := logger.GetLoglevel("fatal") + assert.Equal(t, log.FatalLevel, actual) + }) + t.Run("should return error level", func(t *testing.T) { + actual := logger.GetLoglevel("error") + assert.Equal(t, log.ErrorLevel, actual) + }) + t.Run("should return error level", func(t *testing.T) { + actual := logger.GetLoglevel("") + assert.Equal(t, log.InfoLevel, actual) + }) +} diff --git a/pkg/plugin/plugin.go b/pkg/plugin/plugin.go index 5f7c7d9..501479e 100644 --- a/pkg/plugin/plugin.go +++ b/pkg/plugin/plugin.go @@ -12,6 +12,7 @@ import ( "strings" "github.com/nikhilsbhat/gocd-sdk-go/pkg/errors" + goCdLogger "github.com/nikhilsbhat/gocd-sdk-go/pkg/logger" "github.com/go-resty/resty/v2" log "github.com/sirupsen/logrus" @@ -231,9 +232,9 @@ func (cfg *Config) Download() (string, error) { return pluginLocalPath, nil } -func NewPluginConfig(version, path, url string) Plugin { +func NewPluginConfig(version, path, url, loglevel string) Plugin { logger := log.New() - logger.SetLevel(log.TraceLevel) + logger.SetLevel(goCdLogger.GetLoglevel(loglevel)) logger.WithField("pipeline-validator", true) logger.SetFormatter(&log.JSONFormatter{}) diff --git a/pkg/plugin/plugin_test.go b/pkg/plugin/plugin_test.go index 0b64968..4e6f3ef 100644 --- a/pkg/plugin/plugin_test.go +++ b/pkg/plugin/plugin_test.go @@ -18,7 +18,7 @@ type YAMLPluginTestSuite struct { } func (suite *YAMLPluginTestSuite) SetupTest() { - cfg := plugin.NewPluginConfig("0.13.0", "", "") + cfg := plugin.NewPluginConfig("0.13.0", "", "", "debug") homePath, err := os.UserHomeDir() suite.NoError(err) @@ -103,7 +103,7 @@ type JOSNPluginTestSuite struct { } func (suite *JOSNPluginTestSuite) SetupTest() { - cfg := plugin.NewPluginConfig("0.6.0", "", "") + cfg := plugin.NewPluginConfig("0.6.0", "", "", "debug") homePath, err := os.UserHomeDir() suite.NoError(err) @@ -179,7 +179,7 @@ type GroovyPluginTestSuite struct { } func (suite *GroovyPluginTestSuite) SetupTest() { - cfg := plugin.NewPluginConfig("2.1.3-512", "", "") + cfg := plugin.NewPluginConfig("2.1.3-512", "", "", "debug") homePath, err := os.UserHomeDir() suite.NoError(err) @@ -250,7 +250,7 @@ func TestGroovyPipelineValidateTestSuite(t *testing.T) { func TestConfig_Download(t *testing.T) { t.Run("should be able to download the plugin successfully", func(t *testing.T) { - cfg := plugin.NewPluginConfig("0.13.0", "", "") + cfg := plugin.NewPluginConfig("0.13.0", "", "", "debug") homePath, err := os.UserHomeDir() assert.NoError(t, err) @@ -268,7 +268,7 @@ func TestConfig_Download(t *testing.T) { }) t.Run("should error out due to unsupported plugin type", func(t *testing.T) { - cfg := plugin.NewPluginConfig("0.13.0", "", "") + cfg := plugin.NewPluginConfig("0.13.0", "", "", "debug") homePath, err := os.UserHomeDir() assert.NoError(t, err) @@ -284,7 +284,7 @@ func TestConfig_Download(t *testing.T) { }) t.Run("should error out due to wrong url set", func(t *testing.T) { - cfg := plugin.NewPluginConfig("0.13.0", "", "://github.com/gocd-contrib/gocd-groovy-dsl-config-plugin") + cfg := plugin.NewPluginConfig("0.13.0", "", "://github.com/gocd-contrib/gocd-groovy-dsl-config-plugin", "debug") homePath, err := os.UserHomeDir() assert.NoError(t, err)