Skip to content

Commit ece301f

Browse files
ktosoMrLotU
authored andcommitted
Fix missing newline between metrics when collecting #15 (#16)
* Fix missing newline between metrics when collecting Resolves #15 * Newline for CI * Newline for CI
1 parent 05eed57 commit ece301f

File tree

5 files changed

+56
-7
lines changed

5 files changed

+56
-7
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
/Packages
44
/*.xcodeproj
55
build/
6-
.swiftpm/
6+
.swiftpm/
7+
.idea

Package.resolved

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/Prometheus/Prometheus.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public class PrometheusClient {
5252
var buffer = ByteBufferAllocator().buffer(capacity: 0)
5353
self.metrics.forEach {
5454
$0.collect(into: &buffer)
55+
buffer.writeString("\n")
5556
}
5657
succeed(buffer)
5758
}

Tests/SwiftPrometheusTests/PrometheusMetricsTests.swift

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ final class PrometheusMetricsTests: XCTestCase {
156156
XCTAssertEqual(try! promise.futureResult.wait(), "")
157157
}
158158

159-
func testBuffer() {
159+
func testCollectIntoBuffer() {
160160
let counter = Counter(label: "my_counter")
161161
counter.increment(by: 10)
162162
let counterTwo = Counter(label: "my_counter", dimensions: [("myValue", "labels")])
@@ -169,8 +169,52 @@ final class PrometheusMetricsTests: XCTestCase {
169169
XCTAssertEqual(buffer.readString(length: buffer.readableBytes), """
170170
# TYPE my_counter counter
171171
my_counter 10
172-
my_counter{myValue=\"labels\"} 10
172+
my_counter{myValue=\"labels\"} 10\n
173173
""")
174174
}
175+
176+
func testCollectAFewMetricsIntoBuffer() {
177+
let counter = Counter(label: "my_counter")
178+
counter.increment(by: 10)
179+
let counterA = Counter(label: "my_counter", dimensions: [("a", "aaa"), ("x", "x")])
180+
counterA.increment(by: 4)
181+
let gauge = Gauge(label: "my_gauge")
182+
gauge.record(100)
183+
184+
let promise = self.eventLoop.makePromise(of: ByteBuffer.self)
185+
prom.collect(promise.succeed)
186+
var buffer = try! promise.futureResult.wait()
187+
188+
XCTAssertEqual(buffer.readString(length: buffer.readableBytes),
189+
"""
190+
# TYPE my_counter counter
191+
my_counter 10
192+
my_counter{x="x", a="aaa"} 4
193+
# TYPE my_gauge gauge
194+
my_gauge 100.0\n
195+
""")
196+
}
197+
198+
func testCollectAFewMetricsIntoString() {
199+
let counter = Counter(label: "my_counter")
200+
counter.increment(by: 10)
201+
let counterA = Counter(label: "my_counter", dimensions: [("a", "aaa"), ("x", "x")])
202+
counterA.increment(by: 4)
203+
let gauge = Gauge(label: "my_gauge")
204+
gauge.record(100)
205+
206+
let promise = self.eventLoop.makePromise(of: String.self)
207+
prom.collect(promise.succeed)
208+
let string = try! promise.futureResult.wait()
209+
210+
XCTAssertEqual(string,
211+
"""
212+
# TYPE my_counter counter
213+
my_counter 10
214+
my_counter{x="x", a="aaa"} 4
215+
# TYPE my_gauge gauge
216+
my_gauge 100.0
217+
""")
218+
}
175219
}
176220

Tests/SwiftPrometheusTests/XCTestManifests.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ extension PrometheusMetricsTests {
66
// `swift test --generate-linuxmain`
77
// to regenerate.
88
static let __allTests__PrometheusMetricsTests = [
9+
("testCollectAFewMetricsIntoBuffer", testCollectAFewMetricsIntoBuffer),
10+
("testCollectAFewMetricsIntoString", testCollectAFewMetricsIntoString),
11+
("testCollectIntoBuffer", testCollectIntoBuffer),
912
("testCounter", testCounter),
1013
("testGauge", testGauge),
1114
("testHistogram", testHistogram),

0 commit comments

Comments
 (0)