cmetrics 0.2.1 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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: []
|