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 +4 -4
- data/.github/workflows/linux.yml +2 -2
- data/.github/workflows/macos.yml +2 -2
- data/.github/workflows/windows.yml +2 -2
- data/cmetrics-ruby.gemspec +1 -0
- data/ext/cmetrics/cmetrics_c.h +3 -0
- data/ext/cmetrics/cmetrics_counter.c +19 -3
- data/ext/cmetrics/cmetrics_gauge.c +19 -3
- data/ext/cmetrics/cmetrics_serde.c +85 -3
- data/ext/cmetrics/cmetrics_untyped.c +19 -3
- data/ext/cmetrics/extconf.rb +2 -2
- data/lib/cmetrics/version.rb +1 -1
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17d74002b1bf99b4f6be2b1b2ce5d79409da9305d7915e2006014f42c8c01429
|
4
|
+
data.tar.gz: 75fc26e6fa974c990f83fae2e16484b185bf00262713ac24d07e607e6d2a7095
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd95645446f591377adfa1b4561a45bb22cc20446e60ebe577c13b4c67325cd9d1c9c87c3c215f786585853da71eb05449a37ace48339f12c2e3c422c69b68f4
|
7
|
+
data.tar.gz: 85ccdb531c1cb45df65b477352e1a9c555b105a6a658b5cea977e987123d92e05b827148b4ddc4e11e1f129413c602bacccd77da32e0ded9bee6e51a68e1e5d1
|
data/.github/workflows/linux.yml
CHANGED
@@ -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
|
13
|
+
ruby-version: '3.0'
|
14
14
|
- name: Run the default task
|
15
15
|
run: |
|
16
|
-
gem install bundler -v 2.2.
|
16
|
+
gem install bundler -v 2.2.26
|
17
17
|
bundle install
|
18
18
|
bundle exec rake
|
data/.github/workflows/macos.yml
CHANGED
@@ -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
|
13
|
+
ruby-version: '3.0'
|
14
14
|
- name: Run the default task
|
15
15
|
run: |
|
16
|
-
gem install bundler -v 2.2.
|
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
|
13
|
+
ruby-version: '3.0'
|
14
14
|
- name: Run the default task
|
15
15
|
run: |
|
16
|
-
gem install bundler -v 2.2.
|
16
|
+
gem install bundler -v 2.2.26
|
17
17
|
ridk exec bundle install
|
18
18
|
ridk exec bundle exec rake
|
data/cmetrics-ruby.gemspec
CHANGED
@@ -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
|
data/ext/cmetrics/cmetrics_c.h
CHANGED
@@ -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 (
|
43
|
-
if (
|
58
|
+
if (cmetricsCounter) {
|
59
|
+
if (cmetricsCounter->counter) {
|
44
60
|
cmt_counter_destroy(cmetricsCounter->counter);
|
45
61
|
}
|
46
|
-
if (
|
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 (
|
43
|
-
if (
|
58
|
+
if (cmetricsGauge) {
|
59
|
+
if (cmetricsGauge->gauge) {
|
44
60
|
cmt_gauge_destroy(cmetricsGauge->gauge);
|
45
61
|
}
|
46
|
-
if (
|
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 (
|
45
|
-
if (
|
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 =
|
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 (
|
43
|
-
if (
|
58
|
+
if (cmetricsUntyped) {
|
59
|
+
if (cmetricsUntyped->untyped) {
|
44
60
|
cmt_untyped_destroy(cmetricsUntyped->untyped);
|
45
61
|
}
|
46
|
-
if (
|
62
|
+
if (cmetricsUntyped->instance) {
|
47
63
|
cmt_destroy(cmetricsUntyped->instance);
|
48
64
|
}
|
49
65
|
}
|
data/ext/cmetrics/extconf.rb
CHANGED
@@ -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: "
|
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.
|
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"]
|
data/lib/cmetrics/version.rb
CHANGED
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.
|
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-
|
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: []
|