influxdata / telegraf

Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.
https://influxdata.com/telegraf
MIT License
14.14k stars 5.52k forks source link

testifylint->float-compare - Should we enable it? #15534

Closed zak-pawel closed 6 days ago

zak-pawel commented 2 weeks ago

Description

This issue starts a discussion about enabling:

Example

Before:

assert.Equal(t, 42.42, result)
assert.EqualValues(t, 42.42, result)
assert.Exactly(t, 42.42, result)
assert.True(t, result == 42.42)
assert.False(t, result != 42.42)

After:

assert.InEpsilon(t, 42.42, result, 0.0001) // Or assert.InDelta

Expected output

Decision about enabling or not enabling this checker.

Findings

For this checker, the following findings were found in the current codebase:

agent/accumulator_test.go:35:2                                                 testifylint  float-compare: use require.InEpsilon (or InDelta)
metric/metric_test.go:115:2                                                    testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/ceph/ceph_test.go:45:2                                          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/ceph/ceph_test.go:53:2                                          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/ceph/ceph_test.go:61:2                                          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/cloud_pubsub/cloud_pubsub_test.go:296:2                         testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:209:4                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/ctrlx_datalayer/ctrlx_datalayer_test.go:229:4                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:203:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:208:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:209:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:210:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:215:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:216:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:217:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:218:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:219:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:220:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:221:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:222:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:223:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:224:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:225:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:226:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:227:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:228:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:233:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:234:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:235:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:236:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:237:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:238:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/fluentd/fluentd_test.go:239:2                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/google_cloud_storage/google_cloud_storage_test.go:95:2          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/google_cloud_storage/google_cloud_storage_test.go:96:2          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/http/http_test.go:65:2                                          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/http_response/http_response_test.go:52:4                        testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_powerstat/intel_powerstat_test.go:4951:3                  testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_powerstat/intel_powerstat_test.go:4952:3                  testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:47:3                                testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:48:3                                testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:49:3                                testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:50:3                                testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:51:3                                testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:52:3                                testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:134:3                               testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:135:3                               testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:136:3                               testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:137:3                               testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:138:3                               testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/intel_rdt/publisher_test.go:139:3                               testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/mock/mock_test.go:78:4                                          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/mock/mock_test.go:91:4                                          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/mock/mock_test.go:93:4                                          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/netflow/type_conversion_test.go:69:2                            testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/ping/ping_test.go:470:3                                         testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/ping/ping_test.go:472:3                                         testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/ping/ping_test.go:474:3                                         testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/postgresql_extensible/postgresql_extensible_test.go:139:4       testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/statsd/statsd_test.go:1555:2                                    testifylint  float-compare: use require.InEpsilonf (or InDeltaf)
plugins/inputs/vsphere/vsphere_test.go:181:3                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/inputs/vsphere/vsphere_test.go:207:3                                   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/application_insights/application_insights_test.go:406:4        testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/application_insights/application_insights_test.go:410:2        testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/application_insights/application_insights_test.go:428:2        testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/azure_data_explorer/azure_data_explorer_test.go:152:5          testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/bigquery/bigquery_test.go:175:2                                testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/elasticsearch/elasticsearch_test.go:773:2                      testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/elasticsearch/elasticsearch_test.go:796:2                      testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/graylog/graylog_test_linux.go:181:3                            testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/graylog/graylog_test_linux.go:251:3                            testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/groundwork/groundwork_test.go:95:3                             testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/groundwork/groundwork_test.go:96:3                             testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/groundwork/groundwork_test.go:97:3                             testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/groundwork/groundwork_test.go:164:3                            testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/groundwork/groundwork_test.go:165:3                            testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/groundwork/groundwork_test.go:166:3                            testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/nebius_cloud_monitoring/nebius_cloud_monitoring_test.go:74:5   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/nebius_cloud_monitoring/nebius_cloud_monitoring_test.go:96:5   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/nebius_cloud_monitoring/nebius_cloud_monitoring_test.go:118:5  testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/nebius_cloud_monitoring/nebius_cloud_monitoring_test.go:143:5  testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/sensu/sensu_test.go:203:4                                      testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/stackdriver/stackdriver_test.go:1141:2                         testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/yandex_cloud_monitoring/yandex_cloud_monitoring_test.go:74:5   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/yandex_cloud_monitoring/yandex_cloud_monitoring_test.go:95:5   testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/outputs/yandex_cloud_monitoring/yandex_cloud_monitoring_test.go:116:5  testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/parsers/csv/parser_test.go:238:2                                       testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/parsers/nagios/parser_test.go:522:3                                    testifylint  float-compare: use require.InEpsilon (or InDelta)
plugins/parsers/nagios/parser_test.go:523:3                                    testifylint  float-compare: use require.InEpsilon (or InDelta)

Additional configuration

For this checker, no additional configuration can be provided.

srebhan commented 1 week ago

We can enable this, for the findings the values are crafter I think to be exactly representable. But yeah in-epsilon seems to be the better choice.

powersj commented 1 week ago

+1 this has bit us a couple times across platforms