• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

HotelsDotCom / waggle-dance / #318

pending completion
#318

push

web-flow
Feature/upgrade springboot (#268)

* update springboot to 2.1.18

* update springboot to 2.2.13

* Upgrade to srping boot 2.7.11

* Update changelog

* Update changelog

* fix version

3 of 3 new or added lines in 2 files covered. (100.0%)

132 of 3058 relevant lines covered (4.32%)

0.04 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/waggle-dance-core/src/main/java/com/hotels/bdp/waggledance/metrics/MonitoringConfiguration.java
1
/**
×
2
 * Copyright (C) 2016-2022 Expedia, Inc.
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 * http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
package com.hotels.bdp.waggledance.metrics;
17

18
import java.time.Duration;
19

20
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
21
import org.springframework.context.annotation.Bean;
22
import org.springframework.context.annotation.Configuration;
23

24
import io.micrometer.core.instrument.Clock;
25
import io.micrometer.core.instrument.MeterRegistry;
26
import io.micrometer.core.instrument.config.NamingConvention;
27
import io.micrometer.core.instrument.util.HierarchicalNameMapper;
28
import io.micrometer.graphite.GraphiteConfig;
29
import io.micrometer.graphite.GraphiteMeterRegistry;
30
import io.micrometer.graphite.GraphiteProtocol;
31
import io.micrometer.jmx.JmxConfig;
32
import io.micrometer.jmx.JmxMeterRegistry;
33
import io.micrometer.prometheus.PrometheusMeterRegistry;
34

35
import com.hotels.bdp.waggledance.conf.GraphiteConfiguration;
36
import com.hotels.bdp.waggledance.conf.PrometheusConfiguration;
37

38
@Configuration
39
public class MonitoringConfiguration {
×
40

41
  private static class DisabledGraphiteConfig implements GraphiteConfig {
42
    @Override
43
    public boolean enabled() {
44
      return false;
×
45
    }
46

47
    @Override
48
    public String get(String key) {
49
      return null;
×
50
    }
51
  }
52

53
  @Bean("meterRegistry")
54
  public GraphiteMeterRegistry graphiteMeterRegistry(GraphiteConfiguration graphiteConfiguration) {
55
    GraphiteConfig graphiteConfig = new DisabledGraphiteConfig();
×
56

57
    /*
58
     * This is being done temporarily until micrometer-registry-graphite 1.0.7 gets released which fixes the issue.
59
     * https://github.com/micrometer-metrics/micrometer/issues/853
60
     * https://github.com/micrometer-metrics/micrometer/milestone/31
61
     */
62
    if (!graphiteConfiguration.isEnabled()) {
×
63
      return new GraphiteMeterRegistry(graphiteConfig, Clock.SYSTEM) {
×
64
        @Override
65
        public void close() {}
×
66
      };
67
    }
68

69
    if (graphiteConfiguration.isEnabled()) {
×
70

71
      graphiteConfig = new GraphiteConfig() {
×
72

73
        @Override
74
        public String host() {
75
          return graphiteConfiguration.getHost();
×
76
        }
77

78
        @Override
79
        public int port() {
80
          return graphiteConfiguration.getPort();
×
81
        }
82

83
        @Override
84
        public boolean enabled() {
85
          return graphiteConfiguration.isEnabled();
×
86
        }
87

88
        @Override
89
        public Duration step() {
90
          return Duration
×
91
              .ofMillis(
×
92
                  graphiteConfiguration.getPollIntervalTimeUnit().toMillis(graphiteConfiguration.getPollInterval()));
×
93
        }
94

95
        @Override
96
        public GraphiteProtocol protocol() {
97
          return GraphiteProtocol.PLAINTEXT;
×
98
        }
99

100
        @Override
101
        public String get(String arg0) {
102
          return null;
×
103
        }
104
      };
105
    }
106
    HierarchicalNameMapper wdHierarchicalNameMapper = (id, convention) -> graphiteConfiguration.getPrefix()
×
107
        + "."
×
108
        + HierarchicalNameMapper.DEFAULT.toHierarchicalName(id, convention);
×
109
    GraphiteMeterRegistry graphiteMeterRegistry = new GraphiteMeterRegistry(graphiteConfig, Clock.SYSTEM,
×
110
        wdHierarchicalNameMapper);
×
111
    graphiteMeterRegistry.config().namingConvention(NamingConvention.dot);
×
112
    return graphiteMeterRegistry;
×
113
  }
114

115
  @Bean
116
  public JmxMeterRegistry jmxMeterRegistry() {
117
    return new JmxMeterRegistry(JmxConfig.DEFAULT, Clock.SYSTEM);
×
118
  }
119

120
  @Bean
121
  MeterRegistryCustomizer<MeterRegistry> metricsCommonTags(PrometheusConfiguration prometheusConfiguration) {
122
    return registry -> {
×
123
      if (registry instanceof PrometheusMeterRegistry) {
×
124
        registry.config().commonTags("application", prometheusConfiguration.getPrefix());
×
125
      }
126
    };
×
127
  }
128
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc