github.com/netdata/go.d.plugin@v0.58.1/modules/envoy/envoy_test.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package envoy 4 5 import ( 6 "net/http" 7 "net/http/httptest" 8 "os" 9 "testing" 10 11 "github.com/netdata/go.d.plugin/pkg/web" 12 13 "github.com/stretchr/testify/assert" 14 "github.com/stretchr/testify/require" 15 ) 16 17 var ( 18 dataEnvoyConsulDataplane, _ = os.ReadFile("testdata/consul-dataplane.txt") 19 dataEnvoy, _ = os.ReadFile("testdata/envoy.txt") 20 ) 21 22 func Test_testDataIsValid(t *testing.T) { 23 for name, data := range map[string][]byte{ 24 "dataEnvoyConsulDataplane": dataEnvoyConsulDataplane, 25 "dataEnvoy": dataEnvoy, 26 } { 27 require.NotNilf(t, data, name) 28 } 29 } 30 31 func TestEnvoy_Init(t *testing.T) { 32 tests := map[string]struct { 33 wantFail bool 34 config Config 35 }{ 36 "success with default": { 37 wantFail: false, 38 config: New().Config, 39 }, 40 "fail when URL not set": { 41 wantFail: true, 42 config: Config{ 43 HTTP: web.HTTP{ 44 Request: web.Request{URL: ""}, 45 }, 46 }, 47 }, 48 } 49 50 for name, test := range tests { 51 t.Run(name, func(t *testing.T) { 52 envoy := New() 53 envoy.Config = test.config 54 55 if test.wantFail { 56 assert.False(t, envoy.Init()) 57 } else { 58 assert.True(t, envoy.Init()) 59 } 60 }) 61 } 62 63 } 64 65 func TestEnvoy_Cleanup(t *testing.T) { 66 envoy := New() 67 assert.NotPanics(t, envoy.Cleanup) 68 69 require.True(t, envoy.Init()) 70 assert.NotPanics(t, envoy.Cleanup) 71 } 72 73 func TestEnvoy_Charts(t *testing.T) { 74 envoy, cleanup := prepareCaseEnvoyStats() 75 defer cleanup() 76 77 require.Empty(t, *envoy.Charts()) 78 79 require.True(t, envoy.Init()) 80 _ = envoy.Collect() 81 require.NotEmpty(t, *envoy.Charts()) 82 } 83 84 func TestEnvoy_Check(t *testing.T) { 85 tests := map[string]struct { 86 prepare func() (envoy *Envoy, cleanup func()) 87 wantFail bool 88 }{ 89 "case envoy consul dataplane": { 90 wantFail: false, 91 prepare: prepareCaseEnvoyConsulDataplaneStats, 92 }, 93 "case envoy": { 94 wantFail: false, 95 prepare: prepareCaseEnvoyStats, 96 }, 97 "case invalid data response": { 98 wantFail: true, 99 prepare: prepareCaseInvalidDataResponse, 100 }, 101 "case 404": { 102 wantFail: true, 103 prepare: prepareCase404, 104 }, 105 } 106 107 for name, test := range tests { 108 t.Run(name, func(t *testing.T) { 109 envoy, cleanup := test.prepare() 110 defer cleanup() 111 112 require.True(t, envoy.Init()) 113 114 if test.wantFail { 115 assert.False(t, envoy.Check()) 116 } else { 117 assert.True(t, envoy.Check()) 118 } 119 }) 120 } 121 } 122 123 func TestEnvoy_Collect(t *testing.T) { 124 tests := map[string]struct { 125 prepare func() (envoy *Envoy, cleanup func()) 126 wantMetrics map[string]int64 127 }{ 128 "case envoy consul dataplane": { 129 prepare: prepareCaseEnvoyConsulDataplaneStats, 130 wantMetrics: map[string]int64{ 131 "envoy_cluster_manager_active_clusters_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 4, 132 "envoy_cluster_manager_cluster_added_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 4, 133 "envoy_cluster_manager_cluster_modified_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 134 "envoy_cluster_manager_cluster_removed_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 135 "envoy_cluster_manager_cluster_updated_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 2, 136 "envoy_cluster_manager_cluster_updated_via_merge_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 137 "envoy_cluster_manager_update_merge_cancelled_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 138 "envoy_cluster_manager_update_out_of_merge_window_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 139 "envoy_cluster_manager_warming_clusters_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 140 "envoy_cluster_membership_change_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 1, 141 "envoy_cluster_membership_change_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 1, 142 "envoy_cluster_membership_change_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 2, 143 "envoy_cluster_membership_change_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 1, 144 "envoy_cluster_membership_degraded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 145 "envoy_cluster_membership_degraded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 146 "envoy_cluster_membership_degraded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 147 "envoy_cluster_membership_degraded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 148 "envoy_cluster_membership_excluded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 149 "envoy_cluster_membership_excluded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 150 "envoy_cluster_membership_excluded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 151 "envoy_cluster_membership_excluded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 152 "envoy_cluster_membership_healthy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 1, 153 "envoy_cluster_membership_healthy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 1, 154 "envoy_cluster_membership_healthy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 155 "envoy_cluster_membership_healthy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 1, 156 "envoy_cluster_update_empty_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 157 "envoy_cluster_update_empty_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 158 "envoy_cluster_update_empty_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 159 "envoy_cluster_update_empty_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 160 "envoy_cluster_update_failure_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 161 "envoy_cluster_update_failure_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 162 "envoy_cluster_update_failure_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 163 "envoy_cluster_update_failure_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 164 "envoy_cluster_update_no_rebuild_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 165 "envoy_cluster_update_no_rebuild_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 166 "envoy_cluster_update_no_rebuild_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 167 "envoy_cluster_update_no_rebuild_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 168 "envoy_cluster_update_success_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 169 "envoy_cluster_update_success_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 170 "envoy_cluster_update_success_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 171 "envoy_cluster_update_success_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 172 "envoy_cluster_upstream_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 1, 173 "envoy_cluster_upstream_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 174 "envoy_cluster_upstream_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 175 "envoy_cluster_upstream_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 2, 176 "envoy_cluster_upstream_cx_connect_attempts_exceeded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 177 "envoy_cluster_upstream_cx_connect_attempts_exceeded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 178 "envoy_cluster_upstream_cx_connect_attempts_exceeded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 179 "envoy_cluster_upstream_cx_connect_attempts_exceeded_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 180 "envoy_cluster_upstream_cx_connect_fail_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 181 "envoy_cluster_upstream_cx_connect_fail_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 182 "envoy_cluster_upstream_cx_connect_fail_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 183 "envoy_cluster_upstream_cx_connect_fail_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 184 "envoy_cluster_upstream_cx_connect_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 185 "envoy_cluster_upstream_cx_connect_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 186 "envoy_cluster_upstream_cx_connect_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 187 "envoy_cluster_upstream_cx_connect_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 188 "envoy_cluster_upstream_cx_destroy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 189 "envoy_cluster_upstream_cx_destroy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 6507, 190 "envoy_cluster_upstream_cx_destroy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 1, 191 "envoy_cluster_upstream_cx_destroy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 192 "envoy_cluster_upstream_cx_destroy_local_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 193 "envoy_cluster_upstream_cx_destroy_local_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 6507, 194 "envoy_cluster_upstream_cx_destroy_local_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 195 "envoy_cluster_upstream_cx_destroy_local_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 196 "envoy_cluster_upstream_cx_destroy_remote_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 197 "envoy_cluster_upstream_cx_destroy_remote_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 198 "envoy_cluster_upstream_cx_destroy_remote_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 1, 199 "envoy_cluster_upstream_cx_destroy_remote_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 200 "envoy_cluster_upstream_cx_http1_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 201 "envoy_cluster_upstream_cx_http1_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 202 "envoy_cluster_upstream_cx_http1_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 203 "envoy_cluster_upstream_cx_http1_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 2, 204 "envoy_cluster_upstream_cx_http2_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 1, 205 "envoy_cluster_upstream_cx_http2_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 206 "envoy_cluster_upstream_cx_http2_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 207 "envoy_cluster_upstream_cx_http2_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 208 "envoy_cluster_upstream_cx_http3_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 209 "envoy_cluster_upstream_cx_http3_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 210 "envoy_cluster_upstream_cx_http3_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 211 "envoy_cluster_upstream_cx_http3_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 212 "envoy_cluster_upstream_cx_idle_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 213 "envoy_cluster_upstream_cx_idle_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 214 "envoy_cluster_upstream_cx_idle_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 215 "envoy_cluster_upstream_cx_idle_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 216 "envoy_cluster_upstream_cx_max_duration_reached_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 217 "envoy_cluster_upstream_cx_max_duration_reached_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 218 "envoy_cluster_upstream_cx_max_duration_reached_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 219 "envoy_cluster_upstream_cx_max_duration_reached_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 220 "envoy_cluster_upstream_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 221 "envoy_cluster_upstream_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 222 "envoy_cluster_upstream_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 223 "envoy_cluster_upstream_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 224 "envoy_cluster_upstream_cx_rx_bytes_buffered_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 17, 225 "envoy_cluster_upstream_cx_rx_bytes_buffered_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 226 "envoy_cluster_upstream_cx_rx_bytes_buffered_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 227 "envoy_cluster_upstream_cx_rx_bytes_buffered_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 102618, 228 "envoy_cluster_upstream_cx_rx_bytes_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 3853, 229 "envoy_cluster_upstream_cx_rx_bytes_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 230 "envoy_cluster_upstream_cx_rx_bytes_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 8645645, 231 "envoy_cluster_upstream_cx_rx_bytes_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 724779, 232 "envoy_cluster_upstream_cx_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 1, 233 "envoy_cluster_upstream_cx_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 6507, 234 "envoy_cluster_upstream_cx_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 1, 235 "envoy_cluster_upstream_cx_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 2, 236 "envoy_cluster_upstream_cx_tx_bytes_buffered_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 237 "envoy_cluster_upstream_cx_tx_bytes_buffered_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 238 "envoy_cluster_upstream_cx_tx_bytes_buffered_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 239 "envoy_cluster_upstream_cx_tx_bytes_buffered_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 240 "envoy_cluster_upstream_cx_tx_bytes_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 114982, 241 "envoy_cluster_upstream_cx_tx_bytes_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 242 "envoy_cluster_upstream_cx_tx_bytes_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 1240, 243 "envoy_cluster_upstream_cx_tx_bytes_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 732, 244 "envoy_cluster_upstream_rq_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 1, 245 "envoy_cluster_upstream_rq_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 246 "envoy_cluster_upstream_rq_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 247 "envoy_cluster_upstream_rq_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 1, 248 "envoy_cluster_upstream_rq_cancelled_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 249 "envoy_cluster_upstream_rq_cancelled_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 4749, 250 "envoy_cluster_upstream_rq_cancelled_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 251 "envoy_cluster_upstream_rq_cancelled_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 252 "envoy_cluster_upstream_rq_maintenance_mode_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 253 "envoy_cluster_upstream_rq_maintenance_mode_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 254 "envoy_cluster_upstream_rq_maintenance_mode_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 255 "envoy_cluster_upstream_rq_maintenance_mode_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 256 "envoy_cluster_upstream_rq_max_duration_reached_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 257 "envoy_cluster_upstream_rq_max_duration_reached_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 258 "envoy_cluster_upstream_rq_max_duration_reached_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 259 "envoy_cluster_upstream_rq_max_duration_reached_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 260 "envoy_cluster_upstream_rq_pending_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 261 "envoy_cluster_upstream_rq_pending_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 262 "envoy_cluster_upstream_rq_pending_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 263 "envoy_cluster_upstream_rq_pending_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 264 "envoy_cluster_upstream_rq_pending_failure_eject_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 265 "envoy_cluster_upstream_rq_pending_failure_eject_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 266 "envoy_cluster_upstream_rq_pending_failure_eject_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 267 "envoy_cluster_upstream_rq_pending_failure_eject_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 268 "envoy_cluster_upstream_rq_pending_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 269 "envoy_cluster_upstream_rq_pending_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 270 "envoy_cluster_upstream_rq_pending_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 271 "envoy_cluster_upstream_rq_pending_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 272 "envoy_cluster_upstream_rq_pending_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 1, 273 "envoy_cluster_upstream_rq_pending_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 6507, 274 "envoy_cluster_upstream_rq_pending_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 1, 275 "envoy_cluster_upstream_rq_pending_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 2, 276 "envoy_cluster_upstream_rq_per_try_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 277 "envoy_cluster_upstream_rq_per_try_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 278 "envoy_cluster_upstream_rq_per_try_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 279 "envoy_cluster_upstream_rq_per_try_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 280 "envoy_cluster_upstream_rq_retry_backoff_exponential_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 281 "envoy_cluster_upstream_rq_retry_backoff_exponential_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 282 "envoy_cluster_upstream_rq_retry_backoff_exponential_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 283 "envoy_cluster_upstream_rq_retry_backoff_exponential_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 284 "envoy_cluster_upstream_rq_retry_backoff_ratelimited_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 285 "envoy_cluster_upstream_rq_retry_backoff_ratelimited_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 286 "envoy_cluster_upstream_rq_retry_backoff_ratelimited_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 287 "envoy_cluster_upstream_rq_retry_backoff_ratelimited_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 288 "envoy_cluster_upstream_rq_retry_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 289 "envoy_cluster_upstream_rq_retry_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 290 "envoy_cluster_upstream_rq_retry_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 291 "envoy_cluster_upstream_rq_retry_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 292 "envoy_cluster_upstream_rq_retry_success_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 293 "envoy_cluster_upstream_rq_retry_success_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 294 "envoy_cluster_upstream_rq_retry_success_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 295 "envoy_cluster_upstream_rq_retry_success_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 296 "envoy_cluster_upstream_rq_rx_reset_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 297 "envoy_cluster_upstream_rq_rx_reset_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 298 "envoy_cluster_upstream_rq_rx_reset_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 299 "envoy_cluster_upstream_rq_rx_reset_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 300 "envoy_cluster_upstream_rq_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 301 "envoy_cluster_upstream_rq_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 302 "envoy_cluster_upstream_rq_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 303 "envoy_cluster_upstream_rq_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 304 "envoy_cluster_upstream_rq_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 1, 305 "envoy_cluster_upstream_rq_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 1758, 306 "envoy_cluster_upstream_rq_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 1, 307 "envoy_cluster_upstream_rq_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 3, 308 "envoy_cluster_upstream_rq_tx_reset_consul-sandbox-cluster-0159c9d3_default_default_mynginx_consul-dataplane_mynginx": 0, 309 "envoy_cluster_upstream_rq_tx_reset_consul-sandbox-cluster-0159c9d3_default_default_mynginx_local_app_mynginx": 0, 310 "envoy_cluster_upstream_rq_tx_reset_consul-sandbox-cluster-0159c9d3_default_default_mynginx_original-destination_mynginx": 0, 311 "envoy_cluster_upstream_rq_tx_reset_consul-sandbox-cluster-0159c9d3_default_default_mynginx_prometheus_backend_mynginx": 0, 312 "envoy_listener_admin_downstream_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 1, 313 "envoy_listener_admin_downstream_cx_destroy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 2, 314 "envoy_listener_admin_downstream_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 315 "envoy_listener_admin_downstream_cx_overload_reject_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 316 "envoy_listener_admin_downstream_cx_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 3, 317 "envoy_listener_admin_downstream_cx_transport_socket_connect_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 318 "envoy_listener_admin_downstream_global_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 319 "envoy_listener_admin_downstream_listener_filter_error_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 320 "envoy_listener_admin_downstream_listener_filter_remote_close_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 321 "envoy_listener_admin_downstream_pre_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 322 "envoy_listener_admin_downstream_pre_cx_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 323 "envoy_listener_downstream_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 1, 324 "envoy_listener_downstream_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 0, 325 "envoy_listener_downstream_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 0, 326 "envoy_listener_downstream_cx_destroy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 3, 327 "envoy_listener_downstream_cx_destroy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 6507, 328 "envoy_listener_downstream_cx_destroy_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 1, 329 "envoy_listener_downstream_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 0, 330 "envoy_listener_downstream_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 0, 331 "envoy_listener_downstream_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 0, 332 "envoy_listener_downstream_cx_overload_reject_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 0, 333 "envoy_listener_downstream_cx_overload_reject_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 0, 334 "envoy_listener_downstream_cx_overload_reject_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 0, 335 "envoy_listener_downstream_cx_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 4, 336 "envoy_listener_downstream_cx_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 6507, 337 "envoy_listener_downstream_cx_total_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 1, 338 "envoy_listener_downstream_cx_transport_socket_connect_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 0, 339 "envoy_listener_downstream_cx_transport_socket_connect_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 0, 340 "envoy_listener_downstream_cx_transport_socket_connect_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 0, 341 "envoy_listener_downstream_global_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 0, 342 "envoy_listener_downstream_global_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 0, 343 "envoy_listener_downstream_global_cx_overflow_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 0, 344 "envoy_listener_downstream_listener_filter_error_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 0, 345 "envoy_listener_downstream_listener_filter_error_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 0, 346 "envoy_listener_downstream_listener_filter_error_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 0, 347 "envoy_listener_downstream_listener_filter_remote_close_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 0, 348 "envoy_listener_downstream_listener_filter_remote_close_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 0, 349 "envoy_listener_downstream_listener_filter_remote_close_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 0, 350 "envoy_listener_downstream_pre_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 0, 351 "envoy_listener_downstream_pre_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 0, 352 "envoy_listener_downstream_pre_cx_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 0, 353 "envoy_listener_downstream_pre_cx_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_0.0.0.0_20200_mynginx": 0, 354 "envoy_listener_downstream_pre_cx_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_10.50.132.6_20000_mynginx": 0, 355 "envoy_listener_downstream_pre_cx_timeout_consul-sandbox-cluster-0159c9d3_default_default_mynginx_127.0.0.1_15001_mynginx": 0, 356 "envoy_listener_manager_listener_added_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 3, 357 "envoy_listener_manager_listener_create_failure_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 358 "envoy_listener_manager_listener_create_success_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 6, 359 "envoy_listener_manager_listener_in_place_updated_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 360 "envoy_listener_manager_listener_modified_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 361 "envoy_listener_manager_listener_removed_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 362 "envoy_listener_manager_listener_stopped_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 363 "envoy_listener_manager_total_listeners_active_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 3, 364 "envoy_listener_manager_total_listeners_draining_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 365 "envoy_listener_manager_total_listeners_warming_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 366 "envoy_server_memory_allocated_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 7742368, 367 "envoy_server_memory_heap_size_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 14680064, 368 "envoy_server_memory_physical_size_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 19175778, 369 "envoy_server_parent_connections_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 370 "envoy_server_state_draining_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 371 "envoy_server_state_initializing_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 372 "envoy_server_state_live_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 1, 373 "envoy_server_state_pre_initializing_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 374 "envoy_server_total_connections_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 0, 375 "envoy_server_uptime_consul-sandbox-cluster-0159c9d3_default_default_mynginx_mynginx": 32527, 376 }, 377 }, 378 "case envoy": { 379 prepare: prepareCaseEnvoyStats, 380 wantMetrics: map[string]int64{ 381 "envoy_cluster_manager_active_clusters": 1, 382 "envoy_cluster_manager_cluster_added": 1, 383 "envoy_cluster_manager_cluster_modified": 0, 384 "envoy_cluster_manager_cluster_removed": 0, 385 "envoy_cluster_manager_cluster_updated": 0, 386 "envoy_cluster_manager_cluster_updated_via_merge": 0, 387 "envoy_cluster_manager_update_merge_cancelled": 0, 388 "envoy_cluster_manager_update_out_of_merge_window": 0, 389 "envoy_cluster_manager_warming_clusters": 0, 390 "envoy_cluster_membership_change_service_envoyproxy_io": 1, 391 "envoy_cluster_membership_degraded_service_envoyproxy_io": 0, 392 "envoy_cluster_membership_excluded_service_envoyproxy_io": 0, 393 "envoy_cluster_membership_healthy_service_envoyproxy_io": 1, 394 "envoy_cluster_update_empty_service_envoyproxy_io": 0, 395 "envoy_cluster_update_failure_service_envoyproxy_io": 0, 396 "envoy_cluster_update_no_rebuild_service_envoyproxy_io": 0, 397 "envoy_cluster_update_success_service_envoyproxy_io": 1242, 398 "envoy_cluster_upstream_cx_active_service_envoyproxy_io": 0, 399 "envoy_cluster_upstream_cx_connect_attempts_exceeded_service_envoyproxy_io": 0, 400 "envoy_cluster_upstream_cx_connect_fail_service_envoyproxy_io": 0, 401 "envoy_cluster_upstream_cx_connect_timeout_service_envoyproxy_io": 0, 402 "envoy_cluster_upstream_cx_destroy_local_service_envoyproxy_io": 0, 403 "envoy_cluster_upstream_cx_destroy_remote_service_envoyproxy_io": 0, 404 "envoy_cluster_upstream_cx_destroy_service_envoyproxy_io": 0, 405 "envoy_cluster_upstream_cx_http1_total_service_envoyproxy_io": 0, 406 "envoy_cluster_upstream_cx_http2_total_service_envoyproxy_io": 0, 407 "envoy_cluster_upstream_cx_http3_total_service_envoyproxy_io": 0, 408 "envoy_cluster_upstream_cx_idle_timeout_service_envoyproxy_io": 0, 409 "envoy_cluster_upstream_cx_max_duration_reached_service_envoyproxy_io": 0, 410 "envoy_cluster_upstream_cx_overflow_service_envoyproxy_io": 0, 411 "envoy_cluster_upstream_cx_rx_bytes_buffered_service_envoyproxy_io": 0, 412 "envoy_cluster_upstream_cx_rx_bytes_total_service_envoyproxy_io": 0, 413 "envoy_cluster_upstream_cx_total_service_envoyproxy_io": 0, 414 "envoy_cluster_upstream_cx_tx_bytes_buffered_service_envoyproxy_io": 0, 415 "envoy_cluster_upstream_cx_tx_bytes_total_service_envoyproxy_io": 0, 416 "envoy_cluster_upstream_rq_active_service_envoyproxy_io": 0, 417 "envoy_cluster_upstream_rq_cancelled_service_envoyproxy_io": 0, 418 "envoy_cluster_upstream_rq_maintenance_mode_service_envoyproxy_io": 0, 419 "envoy_cluster_upstream_rq_max_duration_reached_service_envoyproxy_io": 0, 420 "envoy_cluster_upstream_rq_pending_active_service_envoyproxy_io": 0, 421 "envoy_cluster_upstream_rq_pending_failure_eject_service_envoyproxy_io": 0, 422 "envoy_cluster_upstream_rq_pending_overflow_service_envoyproxy_io": 0, 423 "envoy_cluster_upstream_rq_pending_total_service_envoyproxy_io": 0, 424 "envoy_cluster_upstream_rq_per_try_timeout_service_envoyproxy_io": 0, 425 "envoy_cluster_upstream_rq_retry_backoff_exponential_service_envoyproxy_io": 0, 426 "envoy_cluster_upstream_rq_retry_backoff_ratelimited_service_envoyproxy_io": 0, 427 "envoy_cluster_upstream_rq_retry_service_envoyproxy_io": 0, 428 "envoy_cluster_upstream_rq_retry_success_service_envoyproxy_io": 0, 429 "envoy_cluster_upstream_rq_rx_reset_service_envoyproxy_io": 0, 430 "envoy_cluster_upstream_rq_timeout_service_envoyproxy_io": 0, 431 "envoy_cluster_upstream_rq_total_service_envoyproxy_io": 0, 432 "envoy_cluster_upstream_rq_tx_reset_service_envoyproxy_io": 0, 433 "envoy_listener_admin_downstream_cx_active": 2, 434 "envoy_listener_admin_downstream_cx_destroy": 4, 435 "envoy_listener_admin_downstream_cx_overflow": 0, 436 "envoy_listener_admin_downstream_cx_overload_reject": 0, 437 "envoy_listener_admin_downstream_cx_total": 6, 438 "envoy_listener_admin_downstream_cx_transport_socket_connect_timeout": 0, 439 "envoy_listener_admin_downstream_global_cx_overflow": 0, 440 "envoy_listener_admin_downstream_listener_filter_error": 0, 441 "envoy_listener_admin_downstream_listener_filter_remote_close": 0, 442 "envoy_listener_admin_downstream_pre_cx_active": 0, 443 "envoy_listener_admin_downstream_pre_cx_timeout": 0, 444 "envoy_listener_downstream_cx_active_0.0.0.0_10000": 0, 445 "envoy_listener_downstream_cx_destroy_0.0.0.0_10000": 0, 446 "envoy_listener_downstream_cx_overflow_0.0.0.0_10000": 0, 447 "envoy_listener_downstream_cx_overload_reject_0.0.0.0_10000": 0, 448 "envoy_listener_downstream_cx_total_0.0.0.0_10000": 0, 449 "envoy_listener_downstream_cx_transport_socket_connect_timeout_0.0.0.0_10000": 0, 450 "envoy_listener_downstream_global_cx_overflow_0.0.0.0_10000": 0, 451 "envoy_listener_downstream_listener_filter_error_0.0.0.0_10000": 0, 452 "envoy_listener_downstream_listener_filter_remote_close_0.0.0.0_10000": 0, 453 "envoy_listener_downstream_pre_cx_active_0.0.0.0_10000": 0, 454 "envoy_listener_downstream_pre_cx_timeout_0.0.0.0_10000": 0, 455 "envoy_listener_manager_listener_added": 1, 456 "envoy_listener_manager_listener_create_failure": 0, 457 "envoy_listener_manager_listener_create_success": 16, 458 "envoy_listener_manager_listener_in_place_updated": 0, 459 "envoy_listener_manager_listener_modified": 0, 460 "envoy_listener_manager_listener_removed": 0, 461 "envoy_listener_manager_listener_stopped": 0, 462 "envoy_listener_manager_total_listeners_active": 1, 463 "envoy_listener_manager_total_listeners_draining": 0, 464 "envoy_listener_manager_total_listeners_warming": 0, 465 "envoy_server_memory_allocated": 7630184, 466 "envoy_server_memory_heap_size": 16777216, 467 "envoy_server_memory_physical_size": 28426958, 468 "envoy_server_parent_connections": 0, 469 "envoy_server_state_draining": 0, 470 "envoy_server_state_initializing": 0, 471 "envoy_server_state_live": 1, 472 "envoy_server_state_pre_initializing": 0, 473 "envoy_server_total_connections": 0, 474 "envoy_server_uptime": 6225, 475 }, 476 }, 477 "case invalid data response": { 478 prepare: prepareCaseInvalidDataResponse, 479 wantMetrics: nil, 480 }, 481 "case 404": { 482 prepare: prepareCase404, 483 wantMetrics: nil, 484 }, 485 } 486 487 for name, test := range tests { 488 t.Run(name, func(t *testing.T) { 489 envoy, cleanup := test.prepare() 490 defer cleanup() 491 492 require.True(t, envoy.Init()) 493 494 mx := envoy.Collect() 495 496 require.Equal(t, test.wantMetrics, mx) 497 ensureCollectedHasAllChartsDimsVarsIDs(t, envoy, mx) 498 }) 499 } 500 } 501 502 func ensureCollectedHasAllChartsDimsVarsIDs(t *testing.T, envoy *Envoy, mx map[string]int64) { 503 for _, chart := range *envoy.Charts() { 504 for _, dim := range chart.Dims { 505 _, ok := mx[dim.ID] 506 assert.Truef(t, ok, "collected metrics has no data for dim '%s' chart '%s'", dim.ID, chart.ID) 507 } 508 for _, v := range chart.Vars { 509 _, ok := mx[v.ID] 510 assert.Truef(t, ok, "collected metrics has no data for var '%s' chart '%s'", v.ID, chart.ID) 511 } 512 } 513 } 514 515 func prepareCaseEnvoyConsulDataplaneStats() (*Envoy, func()) { 516 srv := httptest.NewServer(http.HandlerFunc( 517 func(w http.ResponseWriter, r *http.Request) { 518 _, _ = w.Write(dataEnvoyConsulDataplane) 519 })) 520 envoy := New() 521 envoy.URL = srv.URL 522 523 return envoy, srv.Close 524 } 525 526 func prepareCaseEnvoyStats() (*Envoy, func()) { 527 srv := httptest.NewServer(http.HandlerFunc( 528 func(w http.ResponseWriter, r *http.Request) { 529 _, _ = w.Write(dataEnvoy) 530 })) 531 envoy := New() 532 envoy.URL = srv.URL 533 534 return envoy, srv.Close 535 } 536 537 func prepareCaseInvalidDataResponse() (*Envoy, func()) { 538 srv := httptest.NewServer(http.HandlerFunc( 539 func(w http.ResponseWriter, r *http.Request) { 540 _, _ = w.Write([]byte("hello and\n goodbye")) 541 })) 542 envoy := New() 543 envoy.URL = srv.URL 544 545 return envoy, srv.Close 546 } 547 548 func prepareCase404() (*Envoy, func()) { 549 srv := httptest.NewServer(http.HandlerFunc( 550 func(w http.ResponseWriter, r *http.Request) { 551 w.WriteHeader(http.StatusNotFound) 552 })) 553 envoy := New() 554 envoy.URL = srv.URL 555 556 return envoy, srv.Close 557 }