diff --git a/Sources/CoreMetrics/Metrics.swift b/Sources/CoreMetrics/Metrics.swift index b2a2c8e..62204b5 100644 --- a/Sources/CoreMetrics/Metrics.swift +++ b/Sources/CoreMetrics/Metrics.swift @@ -12,10 +12,6 @@ // //===----------------------------------------------------------------------===// -// MARK: Testing API - -internal var _enableAssertions = true - // MARK: User API extension Counter { @@ -596,29 +592,18 @@ internal class AccumulatingRoundingFloatingPointCounter: FloatingPointCounterHan } func increment(by amount: Double) { - // Drop values in illegal values (Asserting in debug builds) - guard !amount.isNaN else { - assert(!_enableAssertions, "cannot increment by NaN") - return - } + // Drop illegal values + // - cannot increment by NaN + guard !amount.isNaN else { return } + // - cannot increment by infinite quantities + guard !amount.isInfinite else { return } + // - cannot increment by negative values + guard amount.sign == .plus else { return } + // - cannot increment by zero + guard !amount.isZero else { return } - guard !amount.isInfinite else { - assert(!_enableAssertions, "cannot increment by infinite quantities") - return - } - - guard amount.sign == .plus else { - assert(!_enableAssertions, "cannot increment by negative values") - return - } - - guard !amount.isZero else { - return - } - - // If amount is in Int64.max..<+Inf if amount.exponent >= 63 { - // Ceil to Int64.max + // If amount is in Int64.max..<+Inf, ceil to Int64.max self.lock.withLockVoid { self.counterHandler.increment(by: .max) } diff --git a/Tests/MetricsTests/CoreMetricsTests.swift b/Tests/MetricsTests/CoreMetricsTests.swift index fe4cf19..f0c33d2 100644 --- a/Tests/MetricsTests/CoreMetricsTests.swift +++ b/Tests/MetricsTests/CoreMetricsTests.swift @@ -57,63 +57,47 @@ class MetricsTests: XCTestCase { // bootstrap with our test metrics let metrics = TestMetrics() MetricsSystem.bootstrapInternal(metrics) - // disable assertions to test fallback path - _enableAssertions = false let label = "\(#function)-fp-counter-\(UUID())" let fpCounter = FloatingPointCounter(label: label) let counter = metrics.counters[label] as! TestCounter fpCounter.increment(by: Double.nan) fpCounter.increment(by: Double.signalingNaN) XCTAssertEqual(counter.values.count, 0, "expected nan values to be ignored") - // reenable assertions - _enableAssertions = true } func testDefaultFloatingPointCounter_ignoresInfinity() throws { // bootstrap with our test metrics let metrics = TestMetrics() MetricsSystem.bootstrapInternal(metrics) - // disable assertions to test fallback path - _enableAssertions = false let label = "\(#function)-fp-counter-\(UUID())" let fpCounter = FloatingPointCounter(label: label) let counter = metrics.counters[label] as! TestCounter fpCounter.increment(by: Double.infinity) fpCounter.increment(by: -Double.infinity) XCTAssertEqual(counter.values.count, 0, "expected infinite values to be ignored") - // reenable assertions - _enableAssertions = true } func testDefaultFloatingPointCounter_ignoresNegativeValues() throws { // bootstrap with our test metrics let metrics = TestMetrics() MetricsSystem.bootstrapInternal(metrics) - // disable assertions to test fallback path - _enableAssertions = false let label = "\(#function)-fp-counter-\(UUID())" let fpCounter = FloatingPointCounter(label: label) let counter = metrics.counters[label] as! TestCounter fpCounter.increment(by: -100) XCTAssertEqual(counter.values.count, 0, "expected negative values to be ignored") - // reenable assertions - _enableAssertions = true } func testDefaultFloatingPointCounter_ignoresZero() throws { // bootstrap with our test metrics let metrics = TestMetrics() MetricsSystem.bootstrapInternal(metrics) - // disable assertions to test fallback path - _enableAssertions = false let label = "\(#function)-fp-counter-\(UUID())" let fpCounter = FloatingPointCounter(label: label) let counter = metrics.counters[label] as! TestCounter fpCounter.increment(by: 0) fpCounter.increment(by: -0) XCTAssertEqual(counter.values.count, 0, "expected zero values to be ignored") - // reenable assertions - _enableAssertions = true } func testDefaultFloatingPointCounter_ceilsExtremeValues() {