mirror of https://github.com/prometheus/prometheus
main
release-3.0
cedwards/nhcb-wal-wbl
keep-multiple-separators
labels-utf8-fix
alexg/settable-user-agent
beorn7/metrics
dependabot/npm_and_yarn/web/ui/tanstack/react-query-5.60.6
dependabot/npm_and_yarn/web/ui/codemirror/language-6.10.3
dependabot/npm_and_yarn/web/ui/reduxjs/toolkit-2.3.0
release-2.53
release-2.55
otel-3
bwplotka/2_18_cmp
fionaliao/3.0-migration-guide-fixes
bwplotka/2_0_cmp
alexg/fix-fallback-scrape
cedwards/ooo-native-histograms-promql-tests
dependabot/npm_and_yarn/web/ui/react-router-dom-6.27.0
dependabot/npm_and_yarn/web/ui/uiw/react-codemirror-4.23.6
dependabot/npm_and_yarn/web/ui/typescript-eslint/eslint-plugin-8.12.2
dependabot/npm_and_yarn/web/ui/lezer/common-1.2.3
dependabot/npm_and_yarn/web/ui/uplot-1.6.31
dependabot/npm_and_yarn/web/ui/testing-library/jest-dom-6.6.3
dependabot/npm_and_yarn/web/ui/types/jest-29.5.14
dependabot/npm_and_yarn/web/ui/eslint/compat-1.2.2
dependabot/npm_and_yarn/web/ui/eslint/js-9.14.0
dependabot/npm_and_yarn/web/ui/vitejs/plugin-react-4.3.3
dependabot/npm_and_yarn/web/ui/rollup/plugin-node-resolve-15.3.0
dependabot/npm_and_yarn/web/ui/mantine/code-highlight-7.13.4
dependabot/npm_and_yarn/web/ui/sanitize-html-2.13.1
dependabot/npm_and_yarn/web/ui/globals-15.11.0
dependabot/npm_and_yarn/web/ui/types/react-18.3.12
dependabot/npm_and_yarn/web/ui/types/lodash-4.17.13
dependabot/npm_and_yarn/web/ui/eslint-plugin-react-hooks-5.1.0-rc.0
ooo-nh-fix
jvp/refactor-append-to-have-hints
bwplotka/nhcb-wal-wbl
jvp/refactor-append-to-have-hints-as-value
jvp/refactor-append-to-have-hints-and-single-appendcall
redesign-parser-interface
imprct
textparsebench-manik1
manik2
rel-2.55-backport-14947
bisect-series-base
callum-rw-split-intern
catch-sighup-early
njpm/fix-mockIndex
trim-3.0changelog-for-2.55
njpm/tsdb-utf8-mixed-querying
callum-vt20
julius/y-axis-zero
superq/help_link
jvp/enable-otlp-endpoint-by-default
krajo/testing-pr14831
revert-14809-patch-mem-issue
cut-2.54.2
release-2.54
arthursens/appendct-prwv2
arthursens/ct-in-wal
callum-rw-intern-v3
callum-rw-intern-unique
pull/14654/head
release-2.54+dedupelabels
superq/update_storage_docs
manik1
revert-14513-fix-histogram-overlap-compaction-bug
v2.54.0+dedupelabels
jvp/metadata-poc
mantine-ui-uplot
superq/betteralign_promql
callum-live-segment-test
remote-write-2.0
rw20-nhcb
nhcb
njpm/rw2-main-sync-conflicts
rw20-helpers-gen
rw20-gen
release-2.45
callum-filter-benchmark
jvp/range-duration-with-open-intervals
callum-simplify-ts-filtering
update-2.53-to-correct-place
beorn7/lookback
release-2.52
faster-exemplars
alexg-remove-HEAD-1
rw20-config
alexg-content-negotiation-dont-advertise
release-2.51
revert-13498-alexg-content-negotiation-2
alexg-content-negotiation-2
release-2.51+dedupelabels
krajo/engine-immutable-histograms
release-2.50
feature/new-prom-ui
owilliams/utf8-03-reads
njpm/rw2-sync-main-conflicts
superq/v2
alexg-content-negotiation
release-v2.50
owilliams/utf8-02-mimir
owilliams/utf8
release-2.49
csmarchbanks/native-histogram-compact-format
csmarchbanks/native-histogram-json-format
csmarchbanks/native-histogram-verbose-format
njpm/metadata-remote-write-wiring-2-update
prw-shard-test
arct2
release-2.48
vtproto-test
bwplotka/prw-initial
test-rw-compression
callum-rw-min-format
callum-rw-e2e-dashboard-1
release-2.47
callum-opportunistic-labels-cleanup
feature/shutdownscrape
bwplotka/config-watch
release-2.37
release-2.46
remote-write-checkpoint
native-histogram-charts
prom-common-update-0.43
release-2.44
release-2.43+stringlabels
release-2.43
callum-track-series-segment
callum-remote-proto-2
callum-watcher-poll-backoff
release-2.42
histogram-charts
csmarchbanks/optmize-arrow-responses
csmarchbanks/arrow-responses
csmarchbanks/arrow-native-histograms
release-2.41
release-2.40
release-2.39
add-body-size-limit-global
pre-ooo
release-2.38
remove-circleci-windows-tests
nexucis/sd-optimisation
revert-10878-jvp/replay-wait-for-idle-dont-always-sleep
histogram-json-experiment
release-2.36
nexucis/sofisticat-query
wip-play-prombench
release-2.35
release-2.34
release-2.33
rmremote_storage
release-2.32
release-2.31
release-2.30
beorn7/polymorphism
superq/fieldalignment
mem/fix_8551
release-2.30-merge
release-2.29
richih/remove_indirect_deps
expand
release-2.28
proposalprocess
release-docs-formatting-fix
merge-main
release-2.26
release-2.27
bp/append-docs
release-2.25
revert-8489-append
superq/drop_vendor
post-processing
exemplar-storage-separate-mvp
release-2.24
multi-err-cause
partial-response
lazy-unsymbolize
release-2.23
release-2.22
for-cortex-1-4-1
lbl-optimize
write-req-content-size
release-2.21
fix-2.21-latency
promselect
fix-2.21-iter-latency
segfault-chunk-iter
release-2.20
scrape-bytes-scraped
release-2.19
tsdb-import
tsdb-import-csv
fix-sym-7373-3
fix-sym-7373-2
fix-sym-7373
release-2.18
release-2.17
superq/test
series-hint
add-chunkiterator-interface
rule-page-followups
shutdown-select-bug
revert-6907-prom/rules_race_condition
release-2.16
revert-6605-master
join
nav-settings
release-2.15
f17-test
react-travis-test-branch
release-2.14
release-2.13
release-2.12
release-2.11
rr
remove-alertmanager
rr-proto
integrate-react
release-2.10
allow-swappable-engine
release-2.9
fix/binop-output-labels
release-2.8
release-2.7
resharding
release-2.6
release-2.5
release-2.4
release-2.3
release-2.2
richih/examples
release-2.1
release-2.0
release-1.8.2
release-1.8
release-1.7
release-1.6
release-1.5
release-1.4
release-1.3
release-1.2
release-1.1
release-0.20
release-0.18
release-0.16
v0.300.0
v3.0.0
v0.300.0-rc.1
v3.0.0-rc.1
v0.55.1
v2.55.1
v0.53.3
v2.53.3
v0.300.0-beta.1
v3.0.0-rc.0
v0.300.0-rc.0
v0.55.0
v2.55.0
v2.55.0-rc.1
v2.55.0-rc.0
v0.300.0-beta.0
v3.0.0-beta.0
v0.54.1
v2.54.1
v0.53.2
v2.53.2
v2.54.0+dedupelabels
v0.54.0
v2.54.0
v2.54.0-rc.1
v2.54.0-rc.0+dedupelabels
v0.54.0-rc.0
v2.54.0-rc.0
v0.53.1
v2.53.1
v0.45.6
v2.45.6
v0.53.0
v2.53.0
v0.53.0-rc.1
v2.53.0-rc.1
v0.53.0-rc.0
v2.53.0-rc.0
v0.52.1
v0.52.0
v2.52.0
v0.52.0-rc.1
v2.52.0-rc.1
v0.45.5
v2.45.5
v0.52.0-rc.0
v2.52.0-rc.0
v0.51.2
v2.51.2
v0.51.1
v2.51.1
v2.51.0+dedupelabels
v0.51.0
v2.51.0
v0.45.4
v2.45.4
v2.51.0-rc.0+dedupelabels
v2.51.0-rc.0
v0.50.1
v2.50.1
v0.50.0
v2.50.0
v0.50.0-rc.1
v2.50.0-rc.1
v0.50.0-rc.0
v2.50.0-rc.0
v0.45.3
v2.45.3
v0.49.1
v0.49.0
v2.49.1
v2.49.0
v0.49.0-rc.2
v2.49.0-rc.2
v0.49.0-rc.1
v2.49.0-rc.1
v0.45.2
v2.45.2
v0.49.0-rc.0
v2.49.0-rc.0
v0.48.1
v2.48.1
v0.48.0
v2.48.0
v0.48.0-rc.2
v2.48.0-rc.2
v0.48.0-rc.1
v2.48.0-rc.1
v0.48.0-rc.0
v2.48.0-rc.0
v0.47.2
v2.47.2
v0.47.1
v2.47.1
v0.45.1
v2.45.1
v0.47.0
v2.47.0
v0.47.0-rc.0
v2.47.0-rc.0
v0.37.9
v2.37.9
v0.46.0
v2.46.0
v0.46.0-rc.0
v2.46.0-rc.0
v0.45.0
v2.45.0
v0.45.0-rc.1
v2.45.0-rc.1
v0.45.0-rc.0
v2.45.0-rc.0
v0.44.0
v2.44.0
v0.44.0-rc.1
v0.44.0-rc.2
v2.44.0-rc.2
v0.37.8
v2.37.8
v0.43.1
v2.43.1
v2.43.1+stringlabels
v2.44.0-rc.1
v0.37.7
v2.37.7
v0.44.0-rc.0
v2.44.0-rc.0
v0.43.0
v2.43.0
v2.43.0+stringlabels
v2.43.0-rc.1+stringlabels
v0.43.0-rc.1
v2.43.0-rc.1
v0.43.0-rc.0
v2.43.0-rc.0
v0.37.6
v2.37.6
v0.42.0
v2.42.0
v2.42.0-rc.0
v0.41.0
v2.41.0
v0.41.0-rc.0
v2.41.0-rc.0
v0.40.7
v2.40.7
v0.40.6
v2.40.6
v0.37.5
v2.37.5
v0.40.5
v2.40.5
v2.40.4
v0.40.4
v2.37.4
v0.37.4
v0.40.3
v2.40.3
v0.37.3
v2.37.3
v0.40.2
v2.40.2
v0.40.1
v2.40.1
v0.39.2
v2.39.2
v0.40.0
v2.40.0
v0.37.2
v2.37.2
v0.40.0-rc.0
v2.40.0-rc.0
v0.39.1
v2.39.1
v0.39.0
v2.39.0
v2.39.0-rc.0
v0.37.1
v2.37.1
v0.38.0
v2.38.0
v0.38.0-rc.0
v2.38.0-rc.0
v0.37.0
v2.37.0
v0.37.0-rc.1
v2.37.0-rc.1
v0.37.0-rc.0
v2.37.0-rc.0
v0.36.2
v2.36.2
v0.36.1
v2.36.1
v0.36.0
v2.36.0
v0.36.0-rc0
v2.36.0-rc0
v0.35.0
v2.35.0
v1.99.0
v1.99.0-retract
v2.35.0-retract
v0.35.0-rc1
v2.35.0-rc1
v2.35.0-rc0
v2.34.0
v2.34.0-rc.2
v2.34.0-rc.1
v2.33.5
v2.34.0-rc.0
v2.33.4
v2.33.3
v2.33.2
v2.33.1
v2.33.0
v2.33.0-rc.1
v2.33.0-rc.0
v2.32.1
v2.32.0
v2.31.2
v2.30.4
v2.32.0-rc.1
v2.32.0-rc.0
v2.32.0-beta.0
v2.31.1
v2.31.0
v2.31.0-rc.1
v2.31.0-rc.0
v2.30.3
v2.30.2
v2.30.1
v2.30.0
v2.30.0-rc.0
v2.29.2
v2.29.1
v2.29.0
v2.29.0-rc.2
v2.29.0-rc.1
v2.29.0-rc.0
v2.28.1
v2.28.0
v2.28.0-rc.0
v2.27.1
v2.26.1
v2.27.0
v2.27.0-rc.0
v2.26.0
v2.26.0-rc.0
v2.25.2
v2.25.1
v2.25.0
v2.25.0-rc.0
v2.24.1
v2.24.0
v2.24.0-rc.0
v2.23.0
v2.23.0-rc.0
v2.22.2
v2.22.1
v2.22.0
v2.22.0-rc.0
v2.21.0
v2.21.0-rc.1
v2.21.0-rc.0
v2.20.1
v2.19.3
v2.20.0
v2.20.0-rc.1
v2.20.0-rc.0
v2.19.2
v2.19.1
v2.19.0
v2.18.2
v2.19.0-rc.0
v2.18.1
v2.18.0
v2.18.0-rc.1
v2.18.0-rc.0
v2.17.2
v2.17.1
v2.17.0
v2.17.0-rc.4
v2.17.0-rc.3
v2.17.0-rc.2
v2.17.0-rc.1
v2.17.0-rc.0
v2.16.0
v2.16.0-rc.1
v2.16.0-rc.0
v2.15.2
v2.15.1
v2.15.0
v2.15.0-rc.0
v2.14.0
v2.14.0-rc.0
v2.13.1
v2.13.0
v2.12.0
v2.12.0-rc.0
v2.11.2
v2.11.1
v2.11.0
v2.11.0-rc.0
v2.10.0
v2.10.0-rc.0
v2.9.2
v2.9.1
v2.9.0
v2.9.0-rc.0
v2.8.1
v2.8.0
v2.8.0-rc.0
v2.7.2
v2.7.1
v2.7.0
v2.7.0-rc.2
v2.7.0-rc.1
v2.7.0-rc.0
v2.6.1
v2.6.0
v2.6.0-rc.1
v2.6.0-rc.0
v2.5.0
v2.5.0-rc.2
v2.5.0-rc.1
v2.5.0-rc.0
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.4.0-rc.0
v2.3.2
v2.3.1
v2.2.0-rc.0
v2.1.0
v2.0.0
v2.0.0-rc.3
v1.8.2
v1.8.1
v1.8.0
v2.0.0-rc.0
v1.7.2
v1.7.1
v1.7.0
v1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.3.1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.0.1
0.1.0
0.10.0
0.11.0
0.11.1
0.12.0
0.13.0
0.13.0rc2
0.13.1
0.13.2
0.13.3
0.13.4
0.14.0
0.14.0rc1
0.14.0rc2
0.14.0rc3
0.15.0
0.15.0rc1
0.15.0rc2
0.15.0rc3
0.15.1
0.16.0
0.16.0rc1
0.16.0rc2
0.16.1
0.16.2
0.17.0
0.17.0rc1
0.17.0rc2
0.18.0
0.18.0rc1
0.19.0
0.19.1
0.19.2
0.19.3
0.2.0
0.2.1
0.20.0
0.3.0
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
0.9.0rc1
0.9.0rc2
0.9.0rc3
0.9.0rc4
0.9.0rc5
all-tests-pass
checkout
dev
discovery-handle-discoverer-updates
v1.0.0
v1.0.0-rc.0
v1.0.2
v1.1.0
v1.1.1
v1.1.2
v1.1.3
v1.3.0
v1.3.0-beta.0
v1.4.0
v1.4.1
v1.5.3
v1.6.2
v1.6.3
v2.0.0-alpha.0
v2.0.0-alpha.1
v2.0.0-alpha.2
v2.0.0-alpha.3
v2.0.0-beta.0
v2.0.0-beta.1
v2.0.0-beta.2
v2.0.0-beta.3
v2.0.0-beta.4
v2.0.0-beta.5
v2.0.0-rc.1
v2.0.0-rc.2
v2.13.0-rc.0
v2.2.0
v2.2.0-rc.1
v2.2.1
v2.3.0
v3.0.0-beta.1
${ noResults }
17 Commits (f81cbb00c623a14ae750e1ee0751f0ba2cf2e4e6)
Author | SHA1 | Message | Date |
---|---|---|---|
beorn7 | be11cb2b07 |
Remove the sample ingestion channel.
The one central sample ingestion channel has caused a variety of trouble. This commit removes it. Targets and rule evaluation call an Append method directly now. To incorporate multiple storage backends (like OpenTSDB), storage.Tee forks the Append into two different appenders. Note that the tsdb queue manager had its own queue anyway. It was a queue after a queue... Much queue, so overhead... Targets have their own little buffer (implemented as a channel) to avoid stalling during an http scrape. But a new scrape will only be started once the old one is fully ingested. The contraption of three pipelined ingesters was removed. A Target is an ingester itself now. Despite more logic in Target, things should be less confusing now. Also, remove lint and vet warnings in ast.go. |
10 years ago |
Fabian Reinartz | 6f754073d5 |
Add OR operation and vector matching options.
This commits implements the OR operation between two vectors. Vector matching using the ON clause is added to limit the set of labels that define a match between two elements. Group modifiers (GROUP_LEFT/GROUP_RIGHT) to request many-to-one matching are added. |
10 years ago |
beorn7 | 1a61bcae07 |
Fix plural of 'histogram'.
Actually, 'histogram' is Ancient Greek and 3rd declension... ;-) |
10 years ago |
beorn7 | 9e7c3e3bcd |
Add the histogram_quantile function.
Since we are now getting really deep into floating point calculation, the tests had to take into account the precision loss. Since the rule tests are based on direct line matching in the output, implementing the "almost equal" semantics was pretty cumbersome, but here we are. |
10 years ago |
Julius Volz | 645cf57bed |
Fix aggregation grouping key calculation.
|
10 years ago |
Bjoern Rabenstein | 5859b74f1b |
Clean up license issues.
- Move CONTRIBUTORS.md to the more common AUTHORS. - Added the required NOTICE file. - Changed "Prometheus Team" to "The Prometheus Authors". - Reverted the erroneous changes to the Apache License. |
10 years ago |
Julius Volz | c9618d11e8 |
Introduce copy-on-write for metrics in AST.
This depends on changes in: https://github.com/prometheus/client_golang/tree/cow-metrics. Change-Id: I80b94833a60ddf954c7cd92fd2cfbebd8dd46142 |
10 years ago |
Bjoern Rabenstein | 38fc24d0ed |
Fix targetpool_test.go and other tests.
Change-Id: I91a4dd1d39e01f174e1aaae653ce1ed7aecaa624 |
10 years ago |
Julius Volz | 7f5d3c2c29 |
Fix and improve the fp locker.
Benchmark: $ go test -bench 'Fingerprint' -test.run 'Fingerprint' -test.cpu=1,2,4 OLD BenchmarkFingerprintLockerParallel 500000 3618 ns/op BenchmarkFingerprintLockerParallel-2 100000 12257 ns/op BenchmarkFingerprintLockerParallel-4 500000 10164 ns/op BenchmarkFingerprintLockerSerial 10000000 283 ns/op BenchmarkFingerprintLockerSerial-2 10000000 284 ns/op BenchmarkFingerprintLockerSerial-4 10000000 288 ns/op NEW BenchmarkFingerprintLockerParallel 1000000 1018 ns/op BenchmarkFingerprintLockerParallel-2 1000000 1164 ns/op BenchmarkFingerprintLockerParallel-4 2000000 910 ns/op BenchmarkFingerprintLockerSerial 50000000 56.0 ns/op BenchmarkFingerprintLockerSerial-2 50000000 47.9 ns/op BenchmarkFingerprintLockerSerial-4 50000000 54.5 ns/op Change-Id: I3c65a43822840e7e64c3c3cfe759e1de51272581 |
10 years ago |
Julius Volz | e7ed39c9a6 |
Initial experimental snapshot of next-gen storage.
Change-Id: Ifb8709960dbedd1d9f5efd88cdd359ee9fa9d26d |
10 years ago |
Julius Volz | 01f652cb4c |
Separate storage implementation from interfaces.
This was initially motivated by wanting to distribute the rule checker tool under `tools/rule_checker`. However, this was not possible without also distributing the LevelDB dynamic libraries because the tool transitively depended on Levigo: rule checker -> query layer -> tiered storage layer -> leveldb This change separates external storage interfaces from the implementation (tiered storage, leveldb storage, memory storage) by putting them into separate packages: - storage/metric: public, implementation-agnostic interfaces - storage/metric/tiered: tiered storage implementation, including memory and LevelDB storage. I initially also considered splitting up the implementation into separate packages for tiered storage, memory storage, and LevelDB storage, but these are currently so intertwined that it would be another major project in itself. The query layers and most other parts of Prometheus now have notion of the storage implementation anymore and just use whatever implementation they get passed in via interfaces. The rule_checker is now a static binary :) Change-Id: I793bbf631a8648ca31790e7e772ecf9c2b92f7a0 |
11 years ago |
Julius Volz | 86fc13a52e |
Convert metric.Values to slice of values.
The initial impetus for this was that it made unmarshalling sample values much faster. Other relevant benchmark changes in ns/op: Benchmark old new speedup ================================================================== BenchmarkMarshal 179170 127996 1.4x BenchmarkUnmarshal 404984 132186 3.1x BenchmarkMemoryGetValueAtTime 57801 50050 1.2x BenchmarkMemoryGetBoundaryValues 64496 53194 1.2x BenchmarkMemoryGetRangeValues 66585 54065 1.2x BenchmarkStreamAdd 45.0 75.3 0.6x BenchmarkAppendSample1 1157 1587 0.7x BenchmarkAppendSample10 4090 4284 0.95x BenchmarkAppendSample100 45660 44066 1.0x BenchmarkAppendSample1000 579084 582380 1.0x BenchmarkMemoryAppendRepeatingValues 22796594 22005502 1.0x Overall, this gives us good speedups in the areas where they matter most: decoding values from disk and accessing the memory storage (which is also used for views). Some of the smaller append examples take minimally longer, but the cost seems to get amortized over larger appends, so I'm not worried about these. Also, we're currently not bottlenecked on the write path and have plenty of other optimizations available in that area if it becomes necessary. Memory allocations during appends don't change measurably at all. Change-Id: I7dc7394edea09506976765551f35b138518db9e8 |
11 years ago |
Julius Volz | 740d448983 |
Use custom timestamp type for sample timestamps and related code.
So far we've been using Go's native time.Time for anything related to sample timestamps. Since the range of time.Time is much bigger than what we need, this has created two problems: - there could be time.Time values which were out of the range/precision of the time type that we persist to disk, therefore causing incorrectly ordered keys. One bug caused by this was: https://github.com/prometheus/prometheus/issues/367 It would be good to use a timestamp type that's more closely aligned with what the underlying storage supports. - sizeof(time.Time) is 192, while Prometheus should be ok with a single 64-bit Unix timestamp (possibly even a 32-bit one). Since we store samples in large numbers, this seriously affects memory usage. Furthermore, copying/working with the data will be faster if it's smaller. *MEMORY USAGE RESULTS* Initial memory usage comparisons for a running Prometheus with 1 timeseries and 100,000 samples show roughly a 13% decrease in total (VIRT) memory usage. In my tests, this advantage for some reason decreased a bit the more samples the timeseries had (to 5-7% for millions of samples). This I can't fully explain, but perhaps garbage collection issues were involved. *WHEN TO USE THE NEW TIMESTAMP TYPE* The new clientmodel.Timestamp type should be used whenever time calculations are either directly or indirectly related to sample timestamps. For example: - the timestamp of a sample itself - all kinds of watermarks - anything that may become or is compared to a sample timestamp (like the timestamp passed into Target.Scrape()). When to still use time.Time: - for measuring durations/times not related to sample timestamps, like duration telemetry exporting, timers that indicate how frequently to execute some action, etc. *NOTE ON OPERATOR OPTIMIZATION TESTS* We don't use operator optimization code anymore, but it still lives in the code as dead code. It still has tests, but I couldn't get all of them to pass with the new timestamp format. I commented out the failing cases for now, but we should probably remove the dead code soon. I just didn't want to do that in the same change as this. Change-Id: I821787414b0debe85c9fffaeb57abd453727af0f |
11 years ago |
Matt T. Proud | 30b1cf80b5 |
WIP - Snapshot of Moving to Client Model.
|
12 years ago |
Julius Volz | 138334fb31 |
Fix handling of negative deltas for non-counter values.
|
12 years ago |
Julius Volz | 750f862d9a |
Use GetBoundaryValues() for non-counter deltas.
|
12 years ago |
Bernerd Schaefer | 428d91c86f |
Rename test helper files to helpers_test.go
This ensures that these files are properly included only in testing. |
12 years ago |