cmetrics 0.2.0 → 0.2.4
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/apt.yml +39 -0
- data/.github/workflows/linux.yml +2 -2
- data/.github/workflows/macos.yml +2 -2
- data/.github/workflows/windows.yml +2 -2
- data/.github/workflows/yum.yml +39 -0
- data/Gemfile +7 -1
- data/ci/apt-test.sh +40 -0
- data/ci/yum-test.sh +77 -0
- data/cmetrics-ruby.gemspec +2 -1
- 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 +61 -3
- data/ext/cmetrics/cmetrics_untyped.c +19 -3
- data/ext/cmetrics/extconf.rb +21 -3
- data/lib/cmetrics/version.rb +1 -1
- metadata +25 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f7a2ed53936604ee92cc24e2aa15bfa07389c54e1612170c266d8953fb113a2
|
4
|
+
data.tar.gz: e25ebd242bbfc84b994545675c3de1fa66276e643b57d6acaff2e8009e611c89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3848618b6b384afb7867db62133784c9492335757f53f92641c11a75ee82269a9a21150a8a73e81361ff2a6be252bfc6477c2269392ce75cb50f356d62b2ebb9
|
7
|
+
data.tar.gz: 360bf386dfb723f5daf2cf14e028c23ed7a546aa9e51a5ef9a403c19ffc9f380199f47eed82f0e8978991b939e64418a38839e88b4a333680888a5e64ed9842b
|
@@ -0,0 +1,39 @@
|
|
1
|
+
name: Apt based Linux
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
pull_request:
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
name: Build
|
8
|
+
strategy:
|
9
|
+
fail-fast: false
|
10
|
+
matrix:
|
11
|
+
label:
|
12
|
+
- Debian GNU/Linux Bullseye amd64
|
13
|
+
- Debian GNU/Linux Buster amd64
|
14
|
+
- Ubuntu Bionic amd64
|
15
|
+
- Ubuntu Focal amd64
|
16
|
+
include:
|
17
|
+
- label: Debian GNU/Linux Bullseye amd64
|
18
|
+
test-docker-image: debian:bullseye
|
19
|
+
test-script: ci/apt-test.sh
|
20
|
+
- label: Debian GNU/Linux Buster amd64
|
21
|
+
test-docker-image: debian:buster
|
22
|
+
test-script: ci/apt-test.sh
|
23
|
+
- label: Ubuntu Bionic amd64
|
24
|
+
test-docker-image: ubuntu:bionic
|
25
|
+
test-script: ci/apt-test.sh
|
26
|
+
- label: Ubuntu Focal amd64
|
27
|
+
test-docker-image: ubuntu:focal
|
28
|
+
test-script: ci/apt-test.sh
|
29
|
+
runs-on: ubuntu-latest
|
30
|
+
steps:
|
31
|
+
- uses: actions/checkout@master
|
32
|
+
- name: rake compile & rake test
|
33
|
+
run: |
|
34
|
+
docker run \
|
35
|
+
--rm \
|
36
|
+
--tty \
|
37
|
+
--volume ${PWD}:/cmetrics-ruby \
|
38
|
+
${{ matrix.test-docker-image }} \
|
39
|
+
/cmetrics-ruby/${{ matrix.test-script }}
|
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
|
@@ -0,0 +1,39 @@
|
|
1
|
+
name: Yum based Linux
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
pull_request:
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
name: Build
|
8
|
+
strategy:
|
9
|
+
fail-fast: false
|
10
|
+
matrix:
|
11
|
+
label:
|
12
|
+
- CentOS 7 x86_64
|
13
|
+
- CentOS 8 x86_64
|
14
|
+
- Fedora 34 x86_64
|
15
|
+
- AmazonLinux 2 x86_64
|
16
|
+
include:
|
17
|
+
- label: CentOS 7 x86_64
|
18
|
+
test-docker-image: centos:7
|
19
|
+
test-script: ci/yum-test.sh
|
20
|
+
- label: CentOS 8 x86_64
|
21
|
+
test-docker-image: centos:8
|
22
|
+
test-script: ci/yum-test.sh
|
23
|
+
- label: Fedora 34 x86_64
|
24
|
+
test-docker-image: fedora:34
|
25
|
+
test-script: ci/yum-test.sh
|
26
|
+
- label: AmazonLinux 2 x86_64
|
27
|
+
test-docker-image: amazonlinux:2
|
28
|
+
test-script: ci/yum-test.sh
|
29
|
+
runs-on: ubuntu-latest
|
30
|
+
steps:
|
31
|
+
- uses: actions/checkout@master
|
32
|
+
- name: rake compile & rake test
|
33
|
+
run: |
|
34
|
+
docker run \
|
35
|
+
--rm \
|
36
|
+
--tty \
|
37
|
+
--volume ${PWD}:/cmetrics-ruby \
|
38
|
+
${{ matrix.test-docker-image }} \
|
39
|
+
/cmetrics-ruby/${{ matrix.test-script }}
|
data/Gemfile
CHANGED
@@ -7,4 +7,10 @@ gemspec
|
|
7
7
|
|
8
8
|
gem "rake", "~> 13.0"
|
9
9
|
|
10
|
-
gem "test-unit", "~> 3.
|
10
|
+
gem "test-unit", "~> 3.4"
|
11
|
+
|
12
|
+
local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
|
13
|
+
if File.exist?(local_gemfile)
|
14
|
+
puts "Loading Gemfile.local ..." if $DEBUG # `ruby -d` or `bundle -v`
|
15
|
+
instance_eval File.read(local_gemfile)
|
16
|
+
end
|
data/ci/apt-test.sh
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -exu
|
4
|
+
|
5
|
+
export DEBIAN_FRONTEND=noninteractive
|
6
|
+
|
7
|
+
if [ -f /etc/lsb-release ]; then
|
8
|
+
. /etc/lsb-release
|
9
|
+
distribution=$DISTRIB_ID
|
10
|
+
version=${DISTRIB_RELEASE%%.*}
|
11
|
+
codename=${DISTRIB_CODENAME%%.*}
|
12
|
+
else
|
13
|
+
distribution="Debian"
|
14
|
+
version=$(cat /etc/debian_version | cut -d'.' -f1)
|
15
|
+
fi
|
16
|
+
|
17
|
+
apt update
|
18
|
+
|
19
|
+
case "$distribution" in
|
20
|
+
"Ubuntu")
|
21
|
+
case "$codename" in
|
22
|
+
"bionic")
|
23
|
+
apt install -V -y wget gpg
|
24
|
+
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \
|
25
|
+
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null && \
|
26
|
+
apt update
|
27
|
+
;;
|
28
|
+
*)
|
29
|
+
;;
|
30
|
+
esac
|
31
|
+
;;
|
32
|
+
esac
|
33
|
+
|
34
|
+
apt install -V -y lsb-release
|
35
|
+
|
36
|
+
apt install -V -y ruby-dev git build-essential pkg-config cmake
|
37
|
+
cd /cmetrics-ruby && \
|
38
|
+
gem install bundler --no-document && \
|
39
|
+
bundle install && \
|
40
|
+
bundle exec rake
|
data/ci/yum-test.sh
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -exu
|
4
|
+
|
5
|
+
USE_SCL=0
|
6
|
+
USE_AMZN_EXT=0
|
7
|
+
|
8
|
+
distribution=$(cat /etc/system-release-cpe | awk '{print substr($0, index($1, "o"))}' | cut -d: -f2)
|
9
|
+
version=$(cat /etc/system-release-cpe | awk '{print substr($0, index($1, "o"))}' | cut -d: -f4)
|
10
|
+
USE_SCL=0
|
11
|
+
USE_AMZN_EXT=0
|
12
|
+
|
13
|
+
case ${distribution} in
|
14
|
+
amazon)
|
15
|
+
case ${version} in
|
16
|
+
2)
|
17
|
+
DNF=yum
|
18
|
+
USE_AMZN_EXT=1
|
19
|
+
;;
|
20
|
+
esac
|
21
|
+
;;
|
22
|
+
centos)
|
23
|
+
case ${version} in
|
24
|
+
7)
|
25
|
+
DNF=yum
|
26
|
+
USE_SCL=1
|
27
|
+
;;
|
28
|
+
*)
|
29
|
+
DNF="dnf --enablerepo=powertools"
|
30
|
+
;;
|
31
|
+
esac
|
32
|
+
;;
|
33
|
+
fedoraproject)
|
34
|
+
case ${version} in
|
35
|
+
33|34)
|
36
|
+
DNF=yum
|
37
|
+
;;
|
38
|
+
esac
|
39
|
+
;;
|
40
|
+
esac
|
41
|
+
|
42
|
+
${DNF} groupinstall -y "Development Tools"
|
43
|
+
|
44
|
+
if [ $USE_SCL -eq 1 ]; then
|
45
|
+
${DNF} install -y centos-release-scl && \
|
46
|
+
${DNF} install -y epel-release && \
|
47
|
+
${DNF} install -y \
|
48
|
+
rh-ruby26-ruby-devel \
|
49
|
+
rh-ruby26-rubygems \
|
50
|
+
rh-ruby26-rubygem-rake \
|
51
|
+
rpm-build \
|
52
|
+
cmake3
|
53
|
+
elif [ $USE_AMZN_EXT -eq 1 ]; then
|
54
|
+
yum update -y && \
|
55
|
+
yum install -y yum-utils && \
|
56
|
+
yum-config-manager --enable epel && \
|
57
|
+
amazon-linux-extras install -y ruby2.6 && \
|
58
|
+
${DNF} install -y ruby-devel \
|
59
|
+
cmake3
|
60
|
+
else
|
61
|
+
${DNF} install -y ruby-devel \
|
62
|
+
rubygems \
|
63
|
+
rpm-build \
|
64
|
+
cmake \
|
65
|
+
libarchive
|
66
|
+
fi
|
67
|
+
|
68
|
+
if [ $USE_SCL -eq 1 ]; then
|
69
|
+
# For unbound variable error
|
70
|
+
export MANPATH=
|
71
|
+
cd /cmetrics-ruby && source /opt/rh/rh-ruby26/enable && gem install bundler --no-document && bundle install && bundle exec rake
|
72
|
+
else
|
73
|
+
if [ $USE_AMZN_EXT -eq 1 ]; then
|
74
|
+
echo 'gem "io-console"' > /cmetrics-ruby/Gemfile.local
|
75
|
+
fi
|
76
|
+
cd /cmetrics-ruby && gem install bundler --no-document && bundle install && bundle exec rake
|
77
|
+
fi
|
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
|
-
spec.add_dependency 'mini_portile2', '~> 2.
|
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,14 @@
|
|
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>
|
23
24
|
|
24
25
|
VALUE rb_cSerde;
|
25
26
|
|
27
|
+
extern VALUE rb_cCounter;
|
28
|
+
extern VALUE rb_cGauge;
|
29
|
+
extern VALUE rb_cUntyped;
|
30
|
+
|
26
31
|
static void serde_free(void* ptr);
|
27
32
|
|
28
33
|
static const rb_data_type_t rb_cmetrics_serde_type = { "cmetrics/serde",
|
@@ -41,8 +46,8 @@ serde_free(void* ptr)
|
|
41
46
|
{
|
42
47
|
struct CMetricsSerde* cmetricsSerde = (struct CMetricsSerde*)ptr;
|
43
48
|
|
44
|
-
if (
|
45
|
-
if (
|
49
|
+
if (cmetricsSerde) {
|
50
|
+
if (cmetricsSerde->instance) {
|
46
51
|
cmt_destroy(cmetricsSerde->instance);
|
47
52
|
}
|
48
53
|
}
|
@@ -135,13 +140,14 @@ rb_cmetrics_serde_from_msgpack_feed_each_impl(VALUE self, VALUE rb_msgpack_buffe
|
|
135
140
|
struct CMetricsSerde* cmetricsSerde;
|
136
141
|
struct cmt *cmt = NULL;
|
137
142
|
int ret = 0;
|
143
|
+
size_t offset = 0;
|
138
144
|
|
139
145
|
RETURN_ENUMERATOR(self, 0, 0);
|
140
146
|
|
141
147
|
TypedData_Get_Struct(
|
142
148
|
self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
|
143
149
|
|
144
|
-
for (
|
150
|
+
for (offset = 0; offset <= msgpack_length; ) {
|
145
151
|
ret = cmt_decode_msgpack_create(&cmt, StringValuePtr(rb_msgpack_buffer), msgpack_length, &offset);
|
146
152
|
if (ret == 0) {
|
147
153
|
cmetricsSerde->instance = cmt;
|
@@ -167,6 +173,41 @@ rb_cmetrics_serde_from_msgpack_feed_each(VALUE self, VALUE rb_data)
|
|
167
173
|
}
|
168
174
|
}
|
169
175
|
|
176
|
+
static VALUE
|
177
|
+
rb_cmetrics_serde_concat_metric(VALUE self, VALUE rb_data)
|
178
|
+
{
|
179
|
+
struct CMetricsSerde* cmetricsSerde = NULL;
|
180
|
+
struct CMetricsCounter* cmetricsCounter = NULL;
|
181
|
+
struct CMetricsGauge* cmetricsGauge = NULL;
|
182
|
+
struct CMetricsUntyped* cmetricsUntyped = NULL;
|
183
|
+
|
184
|
+
TypedData_Get_Struct(
|
185
|
+
self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
|
186
|
+
|
187
|
+
if (!NIL_P(rb_data)) {
|
188
|
+
if (cmetricsSerde->instance == NULL) {
|
189
|
+
cmetricsSerde->instance = cmt_create();
|
190
|
+
}
|
191
|
+
|
192
|
+
if (rb_obj_is_kind_of(rb_data, rb_cCounter)) {
|
193
|
+
cmetricsCounter = (struct CMetricsCounter *)cmetrics_counter_get_ptr(rb_data);
|
194
|
+
cmt_cat(cmetricsSerde->instance, cmetricsCounter->instance);
|
195
|
+
} else if (rb_obj_is_kind_of(rb_data, rb_cGauge)) {
|
196
|
+
cmetricsGauge = (struct CMetricsGauge *)cmetrics_gauge_get_ptr(rb_data);
|
197
|
+
cmt_cat(cmetricsSerde->instance, cmetricsGauge->instance);
|
198
|
+
} else if (rb_obj_is_kind_of(rb_data, rb_cUntyped)) {
|
199
|
+
cmetricsUntyped = (struct CMetricsUntyped *)cmetrics_untyped_get_ptr(rb_data);
|
200
|
+
cmt_cat(cmetricsSerde->instance, cmetricsUntyped->instance);
|
201
|
+
} else {
|
202
|
+
rb_raise(rb_eArgError, "specified type of instance is not supported.");
|
203
|
+
}
|
204
|
+
} else {
|
205
|
+
rb_raise(rb_eArgError, "nil is not valid value for concatenating");
|
206
|
+
}
|
207
|
+
|
208
|
+
return Qnil;
|
209
|
+
}
|
210
|
+
|
170
211
|
static VALUE
|
171
212
|
rb_cmetrics_serde_to_prometheus(VALUE self)
|
172
213
|
{
|
@@ -177,6 +218,10 @@ rb_cmetrics_serde_to_prometheus(VALUE self)
|
|
177
218
|
TypedData_Get_Struct(
|
178
219
|
self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
|
179
220
|
|
221
|
+
if (cmetricsSerde->instance == NULL) {
|
222
|
+
rb_raise(rb_eRuntimeError, "Invalid cmt context");
|
223
|
+
}
|
224
|
+
|
180
225
|
prom = cmt_encode_prometheus_create(cmetricsSerde->instance, CMT_TRUE);
|
181
226
|
|
182
227
|
str = rb_str_new2(prom);
|
@@ -196,6 +241,10 @@ rb_cmetrics_serde_to_influx(VALUE self)
|
|
196
241
|
TypedData_Get_Struct(
|
197
242
|
self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
|
198
243
|
|
244
|
+
if (cmetricsSerde->instance == NULL) {
|
245
|
+
rb_raise(rb_eRuntimeError, "Invalid cmt context");
|
246
|
+
}
|
247
|
+
|
199
248
|
prom = cmt_encode_influx_create(cmetricsSerde->instance);
|
200
249
|
|
201
250
|
str = rb_str_new2(prom);
|
@@ -215,6 +264,10 @@ rb_cmetrics_serde_to_msgpack(VALUE self)
|
|
215
264
|
TypedData_Get_Struct(
|
216
265
|
self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
|
217
266
|
|
267
|
+
if (cmetricsSerde->instance == NULL) {
|
268
|
+
rb_raise(rb_eRuntimeError, "Invalid cmt context");
|
269
|
+
}
|
270
|
+
|
218
271
|
ret = cmt_encode_msgpack_create(cmetricsSerde->instance, &buffer, &buffer_size);
|
219
272
|
|
220
273
|
if (ret == 0) {
|
@@ -234,6 +287,10 @@ rb_cmetrics_serde_to_text(VALUE self)
|
|
234
287
|
TypedData_Get_Struct(
|
235
288
|
self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
|
236
289
|
|
290
|
+
if (cmetricsSerde->instance == NULL) {
|
291
|
+
rb_raise(rb_eRuntimeError, "Invalid cmt context");
|
292
|
+
}
|
293
|
+
|
237
294
|
buffer = cmt_encode_text_create(cmetricsSerde->instance);
|
238
295
|
if (buffer == NULL) {
|
239
296
|
return Qnil;
|
@@ -398,6 +455,7 @@ void Init_cmetrics_serde(VALUE rb_mCMetrics)
|
|
398
455
|
rb_define_alloc_func(rb_cSerde, rb_cmetrics_serde_alloc);
|
399
456
|
|
400
457
|
rb_define_method(rb_cSerde, "initialize", rb_cmetrics_serde_initialize, 0);
|
458
|
+
rb_define_method(rb_cSerde, "concat", rb_cmetrics_serde_concat_metric, 1);
|
401
459
|
rb_define_method(rb_cSerde, "from_msgpack", rb_cmetrics_serde_from_msgpack, -1);
|
402
460
|
rb_define_method(rb_cSerde, "to_prometheus", rb_cmetrics_serde_to_prometheus, 0);
|
403
461
|
rb_define_method(rb_cSerde, "to_influx", rb_cmetrics_serde_to_influx, 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
@@ -13,17 +13,35 @@ def windows?
|
|
13
13
|
RUBY_PLATFORM =~ /mingw|mswin/
|
14
14
|
end
|
15
15
|
|
16
|
+
def determine_preferred_command(bin, default_bin)
|
17
|
+
printf "checking for whether %s or %s is usable... ", bin, default_bin
|
18
|
+
STDOUT.flush
|
19
|
+
bin += RbConfig::CONFIG['EXEEXT']
|
20
|
+
path = ENV['PATH'].split(RbConfig::CONFIG['PATH_SEPARATOR'])
|
21
|
+
for dir in path
|
22
|
+
file = File.join(dir, bin)
|
23
|
+
if FileTest.executable?(file)
|
24
|
+
printf "%s\n", bin
|
25
|
+
return bin
|
26
|
+
else
|
27
|
+
next
|
28
|
+
end
|
29
|
+
end
|
30
|
+
printf "%s\n", default_bin
|
31
|
+
return default_bin
|
32
|
+
end
|
33
|
+
|
16
34
|
class BuildCMetrics
|
17
35
|
|
18
36
|
attr_reader :recipe
|
19
37
|
|
20
|
-
def initialize(version=nil)
|
38
|
+
def initialize(version=nil, **kwargs)
|
21
39
|
@version = if version
|
22
40
|
version
|
23
41
|
else
|
24
42
|
"master".freeze
|
25
43
|
end
|
26
|
-
@recipe = MiniPortileCMake.new("cmetrics", @version)
|
44
|
+
@recipe = MiniPortileCMake.new("cmetrics", @version, **kwargs)
|
27
45
|
@checkpoint = ".#{@recipe.name}-#{@recipe.version}.installed"
|
28
46
|
@recipe.target = File.join(ROOT, "ports")
|
29
47
|
@recipe.files << {
|
@@ -52,7 +70,7 @@ class BuildCMetrics
|
|
52
70
|
end
|
53
71
|
end
|
54
72
|
|
55
|
-
cmetrics = BuildCMetrics.new("0.2.1")
|
73
|
+
cmetrics = BuildCMetrics.new("0.2.1", cmake_command: determine_preferred_command("cmake3", "cmake"))
|
56
74
|
cmetrics.build
|
57
75
|
|
58
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.4
|
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-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,20 +66,34 @@ 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
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '2.
|
89
|
+
version: '2.7'
|
76
90
|
type: :runtime
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '2.
|
96
|
+
version: '2.7'
|
83
97
|
description: C binding for cmetric library.
|
84
98
|
email:
|
85
99
|
- cosmo0920.oucc@gmail.com
|
@@ -88,9 +102,11 @@ extensions:
|
|
88
102
|
- ext/cmetrics/extconf.rb
|
89
103
|
extra_rdoc_files: []
|
90
104
|
files:
|
105
|
+
- ".github/workflows/apt.yml"
|
91
106
|
- ".github/workflows/linux.yml"
|
92
107
|
- ".github/workflows/macos.yml"
|
93
108
|
- ".github/workflows/windows.yml"
|
109
|
+
- ".github/workflows/yum.yml"
|
94
110
|
- ".gitignore"
|
95
111
|
- Gemfile
|
96
112
|
- LICENSE
|
@@ -98,6 +114,8 @@ files:
|
|
98
114
|
- Rakefile
|
99
115
|
- bin/console
|
100
116
|
- bin/setup
|
117
|
+
- ci/apt-test.sh
|
118
|
+
- ci/yum-test.sh
|
101
119
|
- cmetrics-ruby.gemspec
|
102
120
|
- ext/cmetrics/cmetrics.c
|
103
121
|
- ext/cmetrics/cmetrics_c.h
|
@@ -114,7 +132,7 @@ licenses:
|
|
114
132
|
metadata:
|
115
133
|
homepage_uri: https://github.com/calyptia/cmetrics-ruby
|
116
134
|
changelog_uri: https://github.com/calyptia/cmetrics-ruby/blob/master/CHANGELOG.md
|
117
|
-
post_install_message:
|
135
|
+
post_install_message:
|
118
136
|
rdoc_options: []
|
119
137
|
require_paths:
|
120
138
|
- lib
|
@@ -130,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
148
|
version: '0'
|
131
149
|
requirements: []
|
132
150
|
rubygems_version: 3.2.22
|
133
|
-
signing_key:
|
151
|
+
signing_key:
|
134
152
|
specification_version: 4
|
135
153
|
summary: C binding for cmetric library.
|
136
154
|
test_files: []
|