@@ -24,6 +24,7 @@ describe('@dotcom-reliability-kit/opentelemetry', () => {
24
24
let createTracingConfig ;
25
25
let HostMetrics ;
26
26
let logger ;
27
+ let mockChildLogger ;
27
28
let NodeSDK ;
28
29
let opentelemetry ;
29
30
@@ -46,7 +47,14 @@ describe('@dotcom-reliability-kit/opentelemetry', () => {
46
47
NodeSDK = require ( '@opentelemetry/sdk-node' ) . NodeSDK ;
47
48
logger = require ( '@dotcom-reliability-kit/logger' ) ;
48
49
49
- logger . createChildLogger . mockReturnValue ( 'mock child logger' ) ;
50
+ mockChildLogger = {
51
+ debug : jest . fn ( ) ,
52
+ error : jest . fn ( ) ,
53
+ info : jest . fn ( ) ,
54
+ verbose : jest . fn ( ) ,
55
+ warn : jest . fn ( )
56
+ } ;
57
+ logger . createChildLogger . mockReturnValue ( mockChildLogger ) ;
50
58
api . DiagLogLevel . INFO = 'mock info log level' ;
51
59
52
60
opentelemetry = require ( '../../../lib/index' ) ;
@@ -69,18 +77,76 @@ describe('@dotcom-reliability-kit/opentelemetry', () => {
69
77
} ) ;
70
78
} ) ;
71
79
72
- it ( 'sets up OpenTelemetry to log via Reliability Kit logger' , ( ) => {
80
+ it ( 'sets up OpenTelemetry to log via a custom logger' , ( ) => {
73
81
expect ( logger . createChildLogger ) . toHaveBeenCalledTimes ( 1 ) ;
74
82
expect ( logger . createChildLogger ) . toHaveBeenCalledWith ( {
75
83
event : 'OTEL_INTERNALS'
76
84
} ) ;
77
85
expect ( api . diag . setLogger ) . toHaveBeenCalledTimes ( 1 ) ;
86
+ expect ( api . diag . setLogger ) . not . toHaveBeenCalledWith ( mockChildLogger ) ;
78
87
expect ( api . diag . setLogger ) . toHaveBeenCalledWith (
79
- 'mock child logger' ,
80
- 'mock info log level'
88
+ expect . objectContaining ( {
89
+ debug : expect . any ( Function ) ,
90
+ error : expect . any ( Function ) ,
91
+ info : expect . any ( Function ) ,
92
+ verbose : expect . any ( Function ) ,
93
+ warn : expect . any ( Function )
94
+ } )
81
95
) ;
82
96
} ) ;
83
97
98
+ describe ( 'custom logger' , ( ) => {
99
+ let customLogger ;
100
+
101
+ beforeEach ( ( ) => {
102
+ customLogger = api . diag . setLogger . mock . calls [ 0 ] [ 0 ] ;
103
+ } ) ;
104
+
105
+ describe ( '.debug()' , ( ) => {
106
+ it ( 'does nothing' , ( ) => {
107
+ customLogger . debug ( 'mock message 1' , 'mock message 2' ) ;
108
+ expect ( mockChildLogger . debug ) . toHaveBeenCalledTimes ( 0 ) ;
109
+ } ) ;
110
+ } ) ;
111
+
112
+ describe ( '.error()' , ( ) => {
113
+ it ( 'logs an error via the Reliability Kit child logger' , ( ) => {
114
+ customLogger . error ( 'mock message 1' , 'mock message 2' ) ;
115
+ expect ( mockChildLogger . error ) . toHaveBeenCalledTimes ( 1 ) ;
116
+ expect ( mockChildLogger . error ) . toHaveBeenCalledWith ( 'mock message 1' , {
117
+ details : [ 'mock message 2' ]
118
+ } ) ;
119
+ } ) ;
120
+ } ) ;
121
+
122
+ describe ( '.info()' , ( ) => {
123
+ it ( 'logs info via the Reliability Kit child logger' , ( ) => {
124
+ customLogger . info ( 'mock message 1' , 'mock message 2' ) ;
125
+ expect ( mockChildLogger . info ) . toHaveBeenCalledTimes ( 1 ) ;
126
+ expect ( mockChildLogger . info ) . toHaveBeenCalledWith ( 'mock message 1' , {
127
+ details : [ 'mock message 2' ]
128
+ } ) ;
129
+ } ) ;
130
+ } ) ;
131
+
132
+ describe ( '.verbose()' , ( ) => {
133
+ it ( 'does nothing' , ( ) => {
134
+ customLogger . verbose ( 'mock message 1' , 'mock message 2' ) ;
135
+ expect ( mockChildLogger . verbose ) . toHaveBeenCalledTimes ( 0 ) ;
136
+ } ) ;
137
+ } ) ;
138
+
139
+ describe ( '.warn()' , ( ) => {
140
+ it ( 'logs an warning via the Reliability Kit child logger' , ( ) => {
141
+ customLogger . warn ( 'mock message 1' , 'mock message 2' ) ;
142
+ expect ( mockChildLogger . warn ) . toHaveBeenCalledTimes ( 1 ) ;
143
+ expect ( mockChildLogger . warn ) . toHaveBeenCalledWith ( 'mock message 1' , {
144
+ details : [ 'mock message 2' ]
145
+ } ) ;
146
+ } ) ;
147
+ } ) ;
148
+ } ) ;
149
+
84
150
it ( 'configures the OpenTelemetry instrumentations' , ( ) => {
85
151
expect ( createInstrumentationConfig ) . toHaveBeenCalledTimes ( 1 ) ;
86
152
expect ( createInstrumentationConfig ) . toHaveBeenCalledWith ( ) ;
0 commit comments