@@ -46,7 +46,7 @@ void testSerializeLessThan100Metrics() throws JsonProcessingException, InvalidMe
46
46
List <String > events = mc .serialize ();
47
47
Assertions .assertEquals (1 , events .size ());
48
48
49
- List <MetricDefinition > metrics = parseMetrics (events .get (0 ));
49
+ List <MetricDefinition > metrics = parseMetricDefinitions (events .get (0 ));
50
50
Assertions .assertEquals (metrics .size (), metricCount );
51
51
for (MetricDefinition metric : metrics ) {
52
52
MetricDefinition originalMetric =
@@ -71,7 +71,7 @@ void testSerializeMoreThen100Metrics() throws JsonProcessingException, InvalidMe
71
71
72
72
List <MetricDefinition > allMetrics = new ArrayList <>();
73
73
for (String event : events ) {
74
- allMetrics .addAll (parseMetrics (event ));
74
+ allMetrics .addAll (parseMetricDefinitions (event ));
75
75
}
76
76
Assertions .assertEquals (metricCount , allMetrics .size ());
77
77
for (MetricDefinition metric : allMetrics ) {
@@ -97,7 +97,7 @@ void testSerializeAMetricWith101DataPoints()
97
97
Assertions .assertEquals (expectedEventCount , events .size ());
98
98
List <MetricDefinition > allMetrics = new ArrayList <>();
99
99
for (String event : events ) {
100
- allMetrics .addAll (parseMetrics (event ));
100
+ allMetrics .addAll (parseMetricDefinitions (event ));
101
101
}
102
102
List <Double > expectedValues = new ArrayList <>();
103
103
for (int i = 0 ; i < Constants .MAX_DATAPOINTS_PER_METRIC ; i ++) {
@@ -122,8 +122,8 @@ void testSerializeMetricsWith101DataPoints()
122
122
List <String > events = mc .serialize ();
123
123
Assertions .assertEquals (expectedEventCount , events .size ());
124
124
125
- List <MetricDefinition > metricsFromEvent1 = parseMetrics (events .get (0 ));
126
- List <MetricDefinition > metricsFromEvent2 = parseMetrics (events .get (1 ));
125
+ List <MetricDefinition > metricsFromEvent1 = parseMetricDefinitions (events .get (0 ));
126
+ List <MetricDefinition > metricsFromEvent2 = parseMetricDefinitions (events .get (1 ));
127
127
128
128
Assertions .assertEquals (2 , metricsFromEvent1 .size ());
129
129
List <Double > expectedValues = new ArrayList <>();
@@ -155,6 +155,23 @@ void testSerializeZeroMetric()
155
155
Assertions .assertFalse (rootNode .containsKey ("_aws" ));
156
156
}
157
157
158
+ @ Test
159
+ void testSerializeStatisticSetMetric () throws JsonProcessingException {
160
+ MetricsContext mc = new MetricsContext ();
161
+ int dataPointCount = 100 ;
162
+ String metricName = "metric1" ;
163
+ for (int i = 0 ; i < dataPointCount ; i ++) {
164
+ mc .putMetric (metricName , i , AggregationType .STATISTIC_SET );
165
+ }
166
+
167
+ List <String > events = mc .serialize ();
168
+ System .out .println (events );
169
+ List <StatisticSet > statisticSets = parseStatisticSetMetrics (events .get (0 ));
170
+ Assertions .assertEquals (1 , statisticSets .size ());
171
+ Assertions .assertEquals (
172
+ new Statistics (99. , 0. , 100 , 4950. ), statisticSets .get (0 ).getValues ());
173
+ }
174
+
158
175
@ Test
159
176
@ SuppressWarnings ("unchecked" )
160
177
void testSetTimestamp ()
@@ -189,7 +206,8 @@ void testPutMetadata() {
189
206
}
190
207
191
208
@ SuppressWarnings ("unchecked" )
192
- private ArrayList <MetricDefinition > parseMetrics (String event ) throws JsonProcessingException {
209
+ private ArrayList <MetricDefinition > parseMetricDefinitions (String event )
210
+ throws JsonProcessingException {
193
211
Map <String , Object > rootNode = parseRootNode (event );
194
212
Map <String , Object > metadata = (Map <String , Object >) rootNode .get ("_aws" );
195
213
ArrayList <Map <String , Object >> metricDirectives =
@@ -215,6 +233,35 @@ private ArrayList<MetricDefinition> parseMetrics(String event) throws JsonProces
215
233
return metricDefinitions ;
216
234
}
217
235
236
+ @ SuppressWarnings ("unchecked" )
237
+ private ArrayList <StatisticSet > parseStatisticSetMetrics (String event )
238
+ throws JsonProcessingException {
239
+ Map <String , Object > rootNode = parseRootNode (event );
240
+ Map <String , Object > metadata = (Map <String , Object >) rootNode .get ("_aws" );
241
+ ArrayList <Map <String , Object >> metricDirectives =
242
+ (ArrayList <Map <String , Object >>) metadata .get ("CloudWatchMetrics" );
243
+ ArrayList <Map <String , String >> metrics =
244
+ (ArrayList <Map <String , String >>) metricDirectives .get (0 ).get ("Metrics" );
245
+
246
+ ArrayList <StatisticSet > statisticSets = new ArrayList <>();
247
+ for (Map <String , String > metric : metrics ) {
248
+ String name = metric .get ("Name" );
249
+ Unit unit = Unit .fromValue (metric .get ("Unit" ));
250
+ Map value = (Map ) rootNode .get (name );
251
+ statisticSets .add (
252
+ new StatisticSet (
253
+ name ,
254
+ unit ,
255
+ StorageResolution .STANDARD ,
256
+ new Statistics (
257
+ (Double ) value .get ("Max" ),
258
+ (Double ) value .get ("Min" ),
259
+ (int ) value .get ("Count" ),
260
+ (Double ) value .get ("Sum" ))));
261
+ }
262
+ return statisticSets ;
263
+ }
264
+
218
265
private Map <String , Object > parseRootNode (String event ) throws JsonProcessingException {
219
266
return new JsonMapper ().readValue (event , new TypeReference <Map <String , Object >>() {});
220
267
}
0 commit comments