github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/core/logger/loggers_test.go (about)

     1  // Copyright 2022 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package logger_test
     5  
     6  import (
     7  	"github.com/juju/testing"
     8  	"go.uber.org/mock/gomock"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	"github.com/juju/juju/core/logger"
    12  	"github.com/juju/juju/core/logger/mocks"
    13  )
    14  
    15  type LoggersSuite struct {
    16  	testing.IsolationSuite
    17  }
    18  
    19  var _ = gc.Suite(&LoggersSuite{})
    20  
    21  func (s *LoggersSuite) TestMakeLoggersWithOneLogger(c *gc.C) {
    22  	ctrl := gomock.NewController(c)
    23  	defer ctrl.Finish()
    24  
    25  	mockLogger := mocks.NewMockLoggerCloser(ctrl)
    26  	mockLogger.EXPECT().Log([]logger.LogRecord{{
    27  		Message: "hello",
    28  	}})
    29  
    30  	var called bool
    31  	loggers := logger.MakeLoggers([]string{
    32  		logger.DatabaseName,
    33  	}, logger.LoggersConfig{
    34  		DBLogger: func() logger.Logger {
    35  			called = true
    36  			return mockLogger
    37  		},
    38  		SysLogger: func() logger.Logger {
    39  			c.Fail()
    40  			return nil
    41  		},
    42  	})
    43  	c.Assert(called, gc.Equals, true)
    44  
    45  	loggers.Log([]logger.LogRecord{{
    46  		Message: "hello",
    47  	}})
    48  }
    49  
    50  func (s *LoggersSuite) TestMakeLoggersWithMultipleLoggers(c *gc.C) {
    51  	ctrl := gomock.NewController(c)
    52  	defer ctrl.Finish()
    53  
    54  	mockLogger := mocks.NewMockLoggerCloser(ctrl)
    55  	mockLogger.EXPECT().Log([]logger.LogRecord{{
    56  		Message: "hello",
    57  	}}).Times(2)
    58  
    59  	loggers := logger.MakeLoggers([]string{
    60  		logger.DatabaseName,
    61  		logger.SyslogName,
    62  	}, logger.LoggersConfig{
    63  		DBLogger: func() logger.Logger {
    64  			return mockLogger
    65  		},
    66  		SysLogger: func() logger.Logger {
    67  			return mockLogger
    68  		},
    69  	})
    70  
    71  	loggers.Log([]logger.LogRecord{{
    72  		Message: "hello",
    73  	}})
    74  }