1
+ jest . mock ( '@opentelemetry/host-metrics' ) ;
1
2
jest . mock ( '@opentelemetry/sdk-node' ) ;
2
3
jest . mock ( '@dotcom-reliability-kit/logger' ) ;
3
4
jest . mock ( '../../../lib/config/instrumentations' , ( ) => ( {
@@ -16,11 +17,12 @@ jest.mock('../../../lib/config/tracing', () => ({
16
17
} ) ) ;
17
18
18
19
describe ( '@dotcom-reliability-kit/opentelemetry' , ( ) => {
20
+ let api ;
19
21
let createInstrumentationConfig ;
20
22
let createMetricsConfig ;
21
23
let createResourceConfig ;
22
24
let createTracingConfig ;
23
- let api ;
25
+ let HostMetrics ;
24
26
let logger ;
25
27
let NodeSDK ;
26
28
let opentelemetry ;
@@ -40,6 +42,7 @@ describe('@dotcom-reliability-kit/opentelemetry', () => {
40
42
createTracingConfig =
41
43
require ( '../../../lib/config/tracing' ) . createTracingConfig ;
42
44
api = require ( '@opentelemetry/sdk-node' ) . api ;
45
+ HostMetrics = require ( '@opentelemetry/host-metrics' ) . HostMetrics ;
43
46
NodeSDK = require ( '@opentelemetry/sdk-node' ) . NodeSDK ;
44
47
logger = require ( '@dotcom-reliability-kit/logger' ) ;
45
48
@@ -114,9 +117,39 @@ describe('@dotcom-reliability-kit/opentelemetry', () => {
114
117
expect ( NodeSDK . prototype . start ) . toHaveBeenCalledTimes ( 1 ) ;
115
118
} ) ;
116
119
117
- it ( 'returns the SDK instance' , ( ) => {
120
+ it ( 'instantiates and starts a HostMetrics collector' , ( ) => {
121
+ expect ( HostMetrics ) . toHaveBeenCalledTimes ( 1 ) ;
122
+ expect ( HostMetrics ) . toHaveBeenCalledWith ( {
123
+ name : '@opentelemetry/host-metrics'
124
+ } ) ;
125
+ expect ( HostMetrics . prototype . start ) . toHaveBeenCalledTimes ( 1 ) ;
126
+ } ) ;
127
+
128
+ it ( 'returns the SDK instances' , ( ) => {
118
129
expect ( instances ) . toEqual ( {
119
- sdk : NodeSDK . mock . instances [ 0 ]
130
+ sdk : NodeSDK . mock . instances [ 0 ] ,
131
+ hostMetrics : HostMetrics . mock . instances [ 0 ]
132
+ } ) ;
133
+ } ) ;
134
+
135
+ describe ( 'when no metrics endpoint is set' , ( ) => {
136
+ beforeEach ( ( ) => {
137
+ NodeSDK . mockClear ( ) ;
138
+ reloadAllModules ( ) ;
139
+ instances = opentelemetry . setup ( {
140
+ tracing : {
141
+ endpoint : 'mock-tracing-endpoint' ,
142
+ samplePercentage : 137
143
+ }
144
+ } ) ;
145
+ } ) ;
146
+
147
+ it ( 'does not instantiate a HostMetrics collector' , ( ) => {
148
+ expect ( HostMetrics ) . toHaveBeenCalledTimes ( 0 ) ;
149
+ } ) ;
150
+
151
+ it ( 'returns instances with hostMetrics undefined' , ( ) => {
152
+ expect ( instances . hostMetrics ) . toBeUndefined ( ) ;
120
153
} ) ;
121
154
} ) ;
122
155
0 commit comments