@@ -8,27 +8,124 @@ import OpenTelemetryApi
88import XCTest
99
1010class StableMetricDataTests : XCTestCase {
11+ let resource = Resource ( attributes: [ " foo " : AttributeValue ( " bar " ) ] )
12+ let instrumentationScopeInfo = InstrumentationScopeInfo ( name: " test " )
13+ let metricName = " name "
14+ let metricDescription = " description "
15+ let emptyPointData = [ PointData] ( )
16+ let unit = " unit "
17+
1118 func testStableMetricDataCreation( ) {
12- let resource = Resource ( attributes: [ " foo " : AttributeValue ( " bar " ) ] )
13- let instrumentationScopeInfo = InstrumentationScopeInfo ( name: " test " )
14- let name = " name "
15- let description = " description "
16- let unit = " unit "
1719 let type = MetricDataType . Summary
18- let data = StableMetricData . Data ( points: [ PointData ] ( ) )
20+ let data = StableMetricData . Data ( points: emptyPointData )
1921
20- let metricData = StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: name, description: description, unit: unit, type: type, data: data)
21-
22- XCTAssertEqual ( metricData. resource, resource)
23- XCTAssertEqual ( metricData. instrumentationScopeInfo, instrumentationScopeInfo)
24- XCTAssertEqual ( metricData. name, name)
25- XCTAssertEqual ( metricData. description, description)
26- XCTAssertEqual ( metricData. unit, unit)
22+ let metricData = StableMetricData ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: metricName, description: metricDescription, unit: unit, type: type, data: data)
23+
24+ assertCommon ( metricData)
2725 XCTAssertEqual ( metricData. type, type)
2826 XCTAssertEqual ( metricData. data, data)
2927 }
3028
3129 func testEmptyStableMetricData( ) {
3230 XCTAssertEqual ( StableMetricData . empty, StableMetricData ( resource: Resource . empty, instrumentationScopeInfo: InstrumentationScopeInfo ( ) , name: " " , description: " " , unit: " " , type: . Summary, data: StableMetricData . Data ( points: [ PointData] ( ) ) ) )
3331 }
32+
33+ func testCreateExponentialHistogram( ) {
34+ let type = MetricDataType . ExponentialHistogram
35+ let histogramData = StableExponentialHistogramData ( aggregationTemporality: . delta, points: emptyPointData)
36+
37+ let metricData = StableMetricData . createExponentialHistogram ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: metricName, description: metricDescription, unit: unit, data: histogramData)
38+
39+ assertCommon ( metricData)
40+ XCTAssertEqual ( metricData. type, type)
41+ XCTAssertEqual ( metricData. data, histogramData)
42+ }
43+
44+ func testCreateHistogram( ) {
45+ let type = MetricDataType . Histogram
46+
47+ let boundaries = [ Double] ( )
48+ let sum : Double = 0
49+ let min = Double . greatestFiniteMagnitude
50+ let max : Double = - 1
51+ let count = 0
52+ let counts = Array ( repeating: 0 , count: boundaries. count + 1 )
53+
54+ let histogramPointData = HistogramPointData ( startEpochNanos: 0 , endEpochNanos: 1 , attributes: [ : ] , exemplars: [ ExemplarData] ( ) , sum: sum, count: UInt64 ( count) , min: min, max: max, boundaries: boundaries, counts: counts, hasMin: count > 0 , hasMax: count > 0 )
55+
56+ let points = [ histogramPointData]
57+ let histogramData = StableHistogramData ( aggregationTemporality: . cumulative, points: points)
58+ let metricData = StableMetricData . createHistogram ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: metricName, description: metricDescription, unit: unit, data: histogramData)
59+
60+ assertCommon ( metricData)
61+ XCTAssertEqual ( metricData. type, type)
62+ XCTAssertEqual ( metricData. data, histogramData)
63+
64+ XCTAssertFalse ( metricData. isEmpty ( ) )
65+
66+ let hpd = metricData. getHistogramData ( )
67+ XCTAssertNotNil ( hpd)
68+ XCTAssertEqual ( 1 , hpd. count)
69+ }
70+
71+ func testCreateDoubleGuage( ) {
72+ let type = MetricDataType . DoubleGauge
73+ let d : Double = 22.22222
74+
75+ let point : PointData = DoublePointData ( startEpochNanos: 0 , endEpochNanos: 1 , attributes: [ : ] , exemplars: [ ] , value: d)
76+ let guageData = StableGaugeData ( aggregationTemporality: . cumulative, points: [ point] )
77+ let metricData = StableMetricData . createDoubleGauge ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: metricName, description: metricDescription, unit: unit, data: guageData)
78+
79+ assertCommon ( metricData)
80+ XCTAssertEqual ( metricData. type, type)
81+ XCTAssertEqual ( metricData. data. points. first, point)
82+ }
83+
84+ func testCreateDoubleSum( ) {
85+ let type = MetricDataType . DoubleSum
86+ let d : Double = 44.4444
87+
88+ let point : PointData = DoublePointData ( startEpochNanos: 0 , endEpochNanos: 1 , attributes: [ : ] , exemplars: [ ] , value: d)
89+ let sumData = StableSumData ( aggregationTemporality: . cumulative, points: [ point] )
90+ let metricData = StableMetricData . createDoubleSum ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: metricName, description: metricDescription, unit: unit, data: sumData)
91+
92+ assertCommon ( metricData)
93+ XCTAssertEqual ( metricData. type, type)
94+ XCTAssertEqual ( metricData. data. points. first, point)
95+ }
96+
97+ func testCreateLongGuage( ) {
98+ let type = MetricDataType . LongGauge
99+ let point : PointData = LongPointData ( startEpochNanos: 0 , endEpochNanos: 1 , attributes: [ : ] , exemplars: [ ] , value: 33 )
100+ let guageData = StableGaugeData ( aggregationTemporality: . cumulative, points: [ point] )
101+
102+ let metricData = StableMetricData . createLongGauge ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: metricName, description: metricDescription, unit: unit, data: guageData)
103+
104+ assertCommon ( metricData)
105+ XCTAssertEqual ( metricData. type, type)
106+ XCTAssertEqual ( metricData. data. points. first, point)
107+ }
108+
109+ func testCreateLongSum( ) {
110+ let type = MetricDataType . LongSum
111+ let point : PointData = LongPointData ( startEpochNanos: 0 , endEpochNanos: 1 , attributes: [ : ] , exemplars: [ ] , value: 55 )
112+ let sumData = StableSumData ( aggregationTemporality: . cumulative, points: [ point] )
113+
114+ let metricData = StableMetricData . createLongSum ( resource: resource, instrumentationScopeInfo: instrumentationScopeInfo, name: metricName, description: metricDescription, unit: unit, data: sumData)
115+
116+ assertCommon ( metricData)
117+ XCTAssertEqual ( metricData. type, type)
118+ XCTAssertEqual ( metricData. data. points. first, point)
119+ }
120+
121+
122+
123+
124+ func assertCommon( _ metricData: StableMetricData ) {
125+ XCTAssertEqual ( metricData. resource, resource)
126+ XCTAssertEqual ( metricData. instrumentationScopeInfo, instrumentationScopeInfo)
127+ XCTAssertEqual ( metricData. name, metricName)
128+ XCTAssertEqual ( metricData. description, metricDescription)
129+ XCTAssertEqual ( metricData. unit, unit)
130+ }
34131}
0 commit comments