cmetrics 0.2.1 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2886740550218bbb68b6248676ffefa606939d2c2f6fabb5043e9b08f2cb152f
4
- data.tar.gz: 4b73350710d2c56349fdb83af9e45565e4e38cffb62f48344f25244c27688cce
3
+ metadata.gz: 17d74002b1bf99b4f6be2b1b2ce5d79409da9305d7915e2006014f42c8c01429
4
+ data.tar.gz: 75fc26e6fa974c990f83fae2e16484b185bf00262713ac24d07e607e6d2a7095
5
5
  SHA512:
6
- metadata.gz: 0e93ebcde84cfd9c2835f68516891f6616c3c77785b789d195c3bf0fe2d5b384314c700f34413f640680da91190cbe16f03961f540dd326515647dc754237265
7
- data.tar.gz: b1c4c88fb1416047862f5d5027ce7c92bed28fe0e1172707fa3394af947cc320a64833ab9cbbcfa510ced7f14201ab4ea6b9958a16b5af9fd28a1be26bd00d98
6
+ metadata.gz: bd95645446f591377adfa1b4561a45bb22cc20446e60ebe577c13b4c67325cd9d1c9c87c3c215f786585853da71eb05449a37ace48339f12c2e3c422c69b68f4
7
+ data.tar.gz: 85ccdb531c1cb45df65b477352e1a9c555b105a6a658b5cea977e987123d92e05b827148b4ddc4e11e1f129413c602bacccd77da32e0ded9bee6e51a68e1e5d1
@@ -10,9 +10,9 @@ jobs:
10
10
  - name: Set up Ruby
11
11
  uses: ruby/setup-ruby@v1
12
12
  with:
13
- ruby-version: 3.0.1
13
+ ruby-version: '3.0'
14
14
  - name: Run the default task
15
15
  run: |
16
- gem install bundler -v 2.2.15
16
+ gem install bundler -v 2.2.26
17
17
  bundle install
18
18
  bundle exec rake
@@ -10,9 +10,9 @@ jobs:
10
10
  - name: Set up Ruby
11
11
  uses: ruby/setup-ruby@v1
12
12
  with:
13
- ruby-version: 3.0.1
13
+ ruby-version: '3.0'
14
14
  - name: Run the default task
15
15
  run: |
16
- gem install bundler -v 2.2.15
16
+ gem install bundler -v 2.2.26
17
17
  bundle install
18
18
  bundle exec rake
@@ -10,9 +10,9 @@ jobs:
10
10
  - name: Set up Ruby
11
11
  uses: ruby/setup-ruby@v1
12
12
  with:
13
- ruby-version: 3.0.1
13
+ ruby-version: '3.0'
14
14
  - name: Run the default task
15
15
  run: |
16
- gem install bundler -v 2.2.15
16
+ gem install bundler -v 2.2.26
17
17
  ridk exec bundle install
18
18
  ridk exec bundle exec rake
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "rake", ">= 0"
30
30
  spec.add_development_dependency "rake-compiler", "~> 1.0"
31
31
  spec.add_development_dependency "rake-compiler-dock", "~> 1.0"
32
+ spec.add_development_dependency "msgpack", "~> 1.4.2"
32
33
 
33
34
  spec.add_dependency 'mini_portile2', '~> 2.7'
34
35
  end
@@ -65,5 +65,8 @@ void Init_cmetrics_counter(VALUE rb_mCMetrics);
65
65
  void Init_cmetrics_gauge(VALUE rb_mCMetrics);
66
66
  void Init_cmetrics_serde(VALUE rb_mCMetrics);
67
67
  void Init_cmetrics_untyped(VALUE rb_mCMetrics);
68
+ const struct CMetricsCounter *cmetrics_counter_get_ptr(VALUE rb_mCMetrics);
69
+ const struct CMetricsGauge *cmetrics_gauge_get_ptr(VALUE rb_mCMetrics);
70
+ const struct CMetricsUntyped *cmetrics_untyped_get_ptr(VALUE rb_mCMetrics);
68
71
 
69
72
  #endif // _CMETRICS_C_H
@@ -34,16 +34,32 @@ static const rb_data_type_t rb_cmetrics_counter_type = { "cmetrics/counter",
34
34
  RUBY_TYPED_FREE_IMMEDIATELY };
35
35
 
36
36
 
37
+ const struct CMetricsCounter *cmetrics_counter_get_ptr(VALUE self)
38
+ {
39
+ struct CMetricsCounter *cmetricsCounter = NULL;
40
+
41
+ TypedData_Get_Struct(
42
+ self, struct CMetricsCounter, &rb_cmetrics_counter_type, cmetricsCounter);
43
+
44
+ if (NIL_P(self)) {
45
+ rb_raise(rb_eRuntimeError, "Given CMetrics argument must not be nil");
46
+ }
47
+ if (!cmetricsCounter->counter) {
48
+ rb_raise(rb_eRuntimeError, "Create counter with CMetrics::Counter#create first.");
49
+ }
50
+ return cmetricsCounter;
51
+ }
52
+
37
53
  static void
38
54
  counter_free(void* ptr)
39
55
  {
40
56
  struct CMetricsCounter* cmetricsCounter = (struct CMetricsCounter*)ptr;
41
57
 
42
- if (!cmetricsCounter) {
43
- if (!cmetricsCounter->counter) {
58
+ if (cmetricsCounter) {
59
+ if (cmetricsCounter->counter) {
44
60
  cmt_counter_destroy(cmetricsCounter->counter);
45
61
  }
46
- if (!cmetricsCounter->instance) {
62
+ if (cmetricsCounter->instance) {
47
63
  cmt_destroy(cmetricsCounter->instance);
48
64
  }
49
65
  }
@@ -34,16 +34,32 @@ static const rb_data_type_t rb_cmetrics_gauge_type = { "cmetrics/gauge",
34
34
  RUBY_TYPED_FREE_IMMEDIATELY };
35
35
 
36
36
 
37
+ const struct CMetricsGauge *cmetrics_gauge_get_ptr(VALUE self)
38
+ {
39
+ struct CMetricsGauge *cmetricsGauge = NULL;
40
+
41
+ TypedData_Get_Struct(
42
+ self, struct CMetricsGauge, &rb_cmetrics_gauge_type, cmetricsGauge);
43
+
44
+ if (NIL_P(self)) {
45
+ rb_raise(rb_eRuntimeError, "Given CMetrics argument must not be nil");
46
+ }
47
+ if (!cmetricsGauge->gauge) {
48
+ rb_raise(rb_eRuntimeError, "Create gauge with CMetrics::Gauge#create first.");
49
+ }
50
+ return cmetricsGauge;
51
+ }
52
+
37
53
  static void
38
54
  gauge_free(void* ptr)
39
55
  {
40
56
  struct CMetricsGauge* cmetricsGauge = (struct CMetricsGauge*)ptr;
41
57
 
42
- if (!cmetricsGauge) {
43
- if (!cmetricsGauge->gauge) {
58
+ if (cmetricsGauge) {
59
+ if (cmetricsGauge->gauge) {
44
60
  cmt_gauge_destroy(cmetricsGauge->gauge);
45
61
  }
46
- if (!cmetricsGauge->instance) {
62
+ if (cmetricsGauge->instance) {
47
63
  cmt_destroy(cmetricsGauge->instance);
48
64
  }
49
65
  }
@@ -20,9 +20,15 @@
20
20
  #include "cmetrics_c.h"
21
21
  #include <cmetrics/cmt_map.h>
22
22
  #include <cmetrics/cmt_metric.h>
23
+ #include <cmetrics/cmt_cat.h>
24
+ #include <cmetrics/cmt_encode_prometheus_remote_write.h>
23
25
 
24
26
  VALUE rb_cSerde;
25
27
 
28
+ extern VALUE rb_cCounter;
29
+ extern VALUE rb_cGauge;
30
+ extern VALUE rb_cUntyped;
31
+
26
32
  static void serde_free(void* ptr);
27
33
 
28
34
  static const rb_data_type_t rb_cmetrics_serde_type = { "cmetrics/serde",
@@ -41,8 +47,8 @@ serde_free(void* ptr)
41
47
  {
42
48
  struct CMetricsSerde* cmetricsSerde = (struct CMetricsSerde*)ptr;
43
49
 
44
- if (!cmetricsSerde) {
45
- if (!cmetricsSerde->instance) {
50
+ if (cmetricsSerde) {
51
+ if (cmetricsSerde->instance) {
46
52
  cmt_destroy(cmetricsSerde->instance);
47
53
  }
48
54
  }
@@ -98,7 +104,7 @@ rb_cmetrics_serde_from_msgpack(int argc, VALUE *argv, VALUE self)
98
104
  rb_scan_args(argc, argv, "12", &rb_msgpack_buffer, &rb_msgpack_length, &rb_offset);
99
105
  if (!NIL_P(rb_msgpack_length)) {
100
106
  Check_Type(rb_msgpack_length, T_FIXNUM);
101
- msgpack_length = INT2NUM(rb_msgpack_length);
107
+ msgpack_length = ULONG2NUM(rb_msgpack_length);
102
108
  } else {
103
109
  msgpack_length = RSTRING_LEN(rb_msgpack_buffer);
104
110
  }
@@ -168,6 +174,64 @@ rb_cmetrics_serde_from_msgpack_feed_each(VALUE self, VALUE rb_data)
168
174
  }
169
175
  }
170
176
 
177
+ static VALUE
178
+ rb_cmetrics_serde_concat_metric(VALUE self, VALUE rb_data)
179
+ {
180
+ struct CMetricsSerde* cmetricsSerde = NULL;
181
+ struct CMetricsCounter* cmetricsCounter = NULL;
182
+ struct CMetricsGauge* cmetricsGauge = NULL;
183
+ struct CMetricsUntyped* cmetricsUntyped = NULL;
184
+
185
+ TypedData_Get_Struct(
186
+ self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
187
+
188
+ if (!NIL_P(rb_data)) {
189
+ if (cmetricsSerde->instance == NULL) {
190
+ cmetricsSerde->instance = cmt_create();
191
+ }
192
+
193
+ if (rb_obj_is_kind_of(rb_data, rb_cCounter)) {
194
+ cmetricsCounter = (struct CMetricsCounter *)cmetrics_counter_get_ptr(rb_data);
195
+ cmt_cat(cmetricsSerde->instance, cmetricsCounter->instance);
196
+ } else if (rb_obj_is_kind_of(rb_data, rb_cGauge)) {
197
+ cmetricsGauge = (struct CMetricsGauge *)cmetrics_gauge_get_ptr(rb_data);
198
+ cmt_cat(cmetricsSerde->instance, cmetricsGauge->instance);
199
+ } else if (rb_obj_is_kind_of(rb_data, rb_cUntyped)) {
200
+ cmetricsUntyped = (struct CMetricsUntyped *)cmetrics_untyped_get_ptr(rb_data);
201
+ cmt_cat(cmetricsSerde->instance, cmetricsUntyped->instance);
202
+ } else {
203
+ rb_raise(rb_eArgError, "specified type of instance is not supported.");
204
+ }
205
+ } else {
206
+ rb_raise(rb_eArgError, "nil is not valid value for concatenating");
207
+ }
208
+
209
+ return Qnil;
210
+ }
211
+
212
+ static VALUE
213
+ rb_metrics_serde_prometheus_remote_write(VALUE self)
214
+ {
215
+ struct CMetricsSerde* cmetricsSerde;
216
+ cmt_sds_t prom;
217
+ VALUE str;
218
+
219
+ TypedData_Get_Struct(
220
+ self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
221
+
222
+ if (cmetricsSerde->instance == NULL) {
223
+ rb_raise(rb_eRuntimeError, "Invalid cmt context");
224
+ }
225
+
226
+ prom = cmt_encode_prometheus_remote_write_create(cmetricsSerde->instance);
227
+
228
+ str = rb_str_new2(prom);
229
+
230
+ cmt_encode_prometheus_remote_write_destroy(prom);
231
+
232
+ return str;
233
+ }
234
+
171
235
  static VALUE
172
236
  rb_cmetrics_serde_to_prometheus(VALUE self)
173
237
  {
@@ -178,6 +242,10 @@ rb_cmetrics_serde_to_prometheus(VALUE self)
178
242
  TypedData_Get_Struct(
179
243
  self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
180
244
 
245
+ if (cmetricsSerde->instance == NULL) {
246
+ rb_raise(rb_eRuntimeError, "Invalid cmt context");
247
+ }
248
+
181
249
  prom = cmt_encode_prometheus_create(cmetricsSerde->instance, CMT_TRUE);
182
250
 
183
251
  str = rb_str_new2(prom);
@@ -197,6 +265,10 @@ rb_cmetrics_serde_to_influx(VALUE self)
197
265
  TypedData_Get_Struct(
198
266
  self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
199
267
 
268
+ if (cmetricsSerde->instance == NULL) {
269
+ rb_raise(rb_eRuntimeError, "Invalid cmt context");
270
+ }
271
+
200
272
  prom = cmt_encode_influx_create(cmetricsSerde->instance);
201
273
 
202
274
  str = rb_str_new2(prom);
@@ -216,6 +288,10 @@ rb_cmetrics_serde_to_msgpack(VALUE self)
216
288
  TypedData_Get_Struct(
217
289
  self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
218
290
 
291
+ if (cmetricsSerde->instance == NULL) {
292
+ rb_raise(rb_eRuntimeError, "Invalid cmt context");
293
+ }
294
+
219
295
  ret = cmt_encode_msgpack_create(cmetricsSerde->instance, &buffer, &buffer_size);
220
296
 
221
297
  if (ret == 0) {
@@ -235,6 +311,10 @@ rb_cmetrics_serde_to_text(VALUE self)
235
311
  TypedData_Get_Struct(
236
312
  self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
237
313
 
314
+ if (cmetricsSerde->instance == NULL) {
315
+ rb_raise(rb_eRuntimeError, "Invalid cmt context");
316
+ }
317
+
238
318
  buffer = cmt_encode_text_create(cmetricsSerde->instance);
239
319
  if (buffer == NULL) {
240
320
  return Qnil;
@@ -399,7 +479,9 @@ void Init_cmetrics_serde(VALUE rb_mCMetrics)
399
479
  rb_define_alloc_func(rb_cSerde, rb_cmetrics_serde_alloc);
400
480
 
401
481
  rb_define_method(rb_cSerde, "initialize", rb_cmetrics_serde_initialize, 0);
482
+ rb_define_method(rb_cSerde, "concat", rb_cmetrics_serde_concat_metric, 1);
402
483
  rb_define_method(rb_cSerde, "from_msgpack", rb_cmetrics_serde_from_msgpack, -1);
484
+ rb_define_method(rb_cSerde, "prometheus_remote_write", rb_metrics_serde_prometheus_remote_write, 0);
403
485
  rb_define_method(rb_cSerde, "to_prometheus", rb_cmetrics_serde_to_prometheus, 0);
404
486
  rb_define_method(rb_cSerde, "to_influx", rb_cmetrics_serde_to_influx, 0);
405
487
  rb_define_method(rb_cSerde, "to_msgpack", rb_cmetrics_serde_to_msgpack, 0);
@@ -34,16 +34,32 @@ static const rb_data_type_t rb_cmetrics_untyped_type = { "cmetrics/untyped",
34
34
  RUBY_TYPED_FREE_IMMEDIATELY };
35
35
 
36
36
 
37
+ const struct CMetricsUntyped *cmetrics_untyped_get_ptr(VALUE self)
38
+ {
39
+ struct CMetricsUntyped *cmetricsUntyped = NULL;
40
+
41
+ TypedData_Get_Struct(
42
+ self, struct CMetricsUntyped, &rb_cmetrics_untyped_type, cmetricsUntyped);
43
+
44
+ if (NIL_P(self)) {
45
+ rb_raise(rb_eRuntimeError, "Given CMetrics argument must not be nil");
46
+ }
47
+ if (!cmetricsUntyped->untyped) {
48
+ rb_raise(rb_eRuntimeError, "Create untyped with CMetrics::Untyped#create first.");
49
+ }
50
+ return cmetricsUntyped;
51
+ }
52
+
37
53
  static void
38
54
  untyped_free(void* ptr)
39
55
  {
40
56
  struct CMetricsUntyped* cmetricsUntyped = (struct CMetricsUntyped*)ptr;
41
57
 
42
- if (!cmetricsUntyped) {
43
- if (!cmetricsUntyped->untyped) {
58
+ if (cmetricsUntyped) {
59
+ if (cmetricsUntyped->untyped) {
44
60
  cmt_untyped_destroy(cmetricsUntyped->untyped);
45
61
  }
46
- if (!cmetricsUntyped->instance) {
62
+ if (cmetricsUntyped->instance) {
47
63
  cmt_destroy(cmetricsUntyped->instance);
48
64
  }
49
65
  }
@@ -46,7 +46,7 @@ class BuildCMetrics
46
46
  @recipe.target = File.join(ROOT, "ports")
47
47
  @recipe.files << {
48
48
  url: "https://codeload.github.com/calyptia/cmetrics/tar.gz/v#{version}",
49
- sha256sum: "f0c79707ad4d18980bf0d1d64ed8cb73a40c586c36a4caf38233ae8d9a4c6cc7",
49
+ sha256sum: "922965a3ccc5aeb9a423d9b82be06e7aaf37f2bc8736ad6e70ac1c8845155710",
50
50
  }
51
51
  end
52
52
 
@@ -70,7 +70,7 @@ class BuildCMetrics
70
70
  end
71
71
  end
72
72
 
73
- cmetrics = BuildCMetrics.new("0.2.1", cmake_command: determine_preferred_command("cmake3", "cmake"))
73
+ cmetrics = BuildCMetrics.new("0.2.2", cmake_command: determine_preferred_command("cmake3", "cmake"))
74
74
  cmetrics.build
75
75
 
76
76
  libdir = RbConfig::CONFIG["libdir"]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CMetrics
4
- VERSION = "0.2.1"
4
+ VERSION = "0.2.5"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmetrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi Hatake
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-01 00:00:00.000000000 Z
11
+ date: 2021-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: msgpack
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.4.2
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.4.2
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: mini_portile2
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -118,7 +132,7 @@ licenses:
118
132
  metadata:
119
133
  homepage_uri: https://github.com/calyptia/cmetrics-ruby
120
134
  changelog_uri: https://github.com/calyptia/cmetrics-ruby/blob/master/CHANGELOG.md
121
- post_install_message:
135
+ post_install_message:
122
136
  rdoc_options: []
123
137
  require_paths:
124
138
  - lib
@@ -134,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
148
  version: '0'
135
149
  requirements: []
136
150
  rubygems_version: 3.2.22
137
- signing_key:
151
+ signing_key:
138
152
  specification_version: 4
139
153
  summary: C binding for cmetric library.
140
154
  test_files: []