rbbcc 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +5 -1
- data/.semaphore/semaphore.yml +19 -0
- data/Gemfile.lock +3 -1
- data/README.md +1 -1
- data/Rakefile +8 -1
- data/lib/rbbcc/clib.rb +17 -9
- data/lib/rbbcc/table.rb +26 -0
- data/lib/rbbcc/version.rb +1 -1
- data/rbbcc.gemspec +1 -0
- data/semaphore.sh +73 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 162758633aea60cbe4979dd77f61603a7f2032d624594b523f990d703d9fc0e6
|
4
|
+
data.tar.gz: 39b9b0b9fd390f45a5a242d6182197d9e39de0fb0444f06c94872a42b5dd4d5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e807d4903cbd8683eb58b073700a24993824e23027de3445d2729728e9cbe7d556a7948a15efaf5c5e7462521675854ec40e32e9776d64c637778fcbad4ad79c
|
7
|
+
data.tar.gz: fcecb00f5eb34f247987b445c59daa221b99ed477ffcd5355e965ac20c97cbe748b3650f2066de1b6575e4ffaf97c7cf21bf9751a7e55ec02cfb0a1837f3e7be
|
data/.gitignore
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
version: v1.0
|
2
|
+
name: Ruby Test
|
3
|
+
agent:
|
4
|
+
machine:
|
5
|
+
type: e1-standard-2
|
6
|
+
os_image: ubuntu1804
|
7
|
+
blocks:
|
8
|
+
- name: Basic Test
|
9
|
+
task:
|
10
|
+
jobs:
|
11
|
+
- name: ruby test
|
12
|
+
matrix:
|
13
|
+
- env_var: LIBBCC_VERSION
|
14
|
+
values: [ "0.12.0", "0.11.0", "0.10.0" ]
|
15
|
+
commands:
|
16
|
+
- sem-version c 7
|
17
|
+
- sem-version ruby 2.6.5
|
18
|
+
- checkout
|
19
|
+
- ./semaphore.sh
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rbbcc (0.
|
4
|
+
rbbcc (0.3.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
coderay (1.1.2)
|
10
10
|
method_source (0.9.2)
|
11
|
+
minitest (5.14.0)
|
11
12
|
pry (0.12.2)
|
12
13
|
coderay (~> 1.1.0)
|
13
14
|
method_source (~> 0.9.0)
|
@@ -18,6 +19,7 @@ PLATFORMS
|
|
18
19
|
|
19
20
|
DEPENDENCIES
|
20
21
|
bundler (~> 2.0)
|
22
|
+
minitest
|
21
23
|
pry
|
22
24
|
rake (~> 10.0)
|
23
25
|
rbbcc!
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# RbBCC
|
2
2
|
|
3
|
-
[![Gem Version](https://badge.fury.io/rb/rbbcc.svg)](https://badge.fury.io/rb/rbbcc)
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/rbbcc.svg)](https://badge.fury.io/rb/rbbcc) [![CI status](https://udzura.semaphoreci.com/badges/rbbcc.svg)](https://udzura.semaphoreci.com/projects/rbbcc)
|
4
4
|
|
5
5
|
RbBCC is a port of [BCC](https://github.com/iovisor/bcc) in MRI. See iovisor project page.
|
6
6
|
|
data/Rakefile
CHANGED
data/lib/rbbcc/clib.rb
CHANGED
@@ -25,15 +25,22 @@ module RbBCC
|
|
25
25
|
end
|
26
26
|
|
27
27
|
extend Fiddle::Importer
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
targets = %w(0.12.0 0.11.0 0.10.0)
|
29
|
+
if default_load = ENV['LIBBCC_VERSION']
|
30
|
+
targets.unshift(default_load)
|
31
|
+
targets.uniq!
|
32
|
+
end
|
33
|
+
|
34
|
+
targets.each do |to_load|
|
35
|
+
begin
|
36
|
+
dlload "libbcc.so.#{to_load}"
|
37
|
+
self.libbcc_version = to_load
|
38
|
+
break
|
39
|
+
rescue Fiddle::DLError => e
|
40
|
+
if targets.last == to_load
|
41
|
+
raise LoadError, "no target libbcc to load"
|
42
|
+
end
|
43
|
+
end
|
37
44
|
end
|
38
45
|
typealias "size_t", "int"
|
39
46
|
|
@@ -70,6 +77,7 @@ module RbBCC
|
|
70
77
|
extern 'char * bpf_table_key_desc(void *, char *)'
|
71
78
|
extern 'char * bpf_table_leaf_desc(void *, char *)'
|
72
79
|
extern 'int bpf_update_elem(int fd, void *key, void *value, unsigned long long flags)'
|
80
|
+
extern 'int bpf_delete_elem(int fd, void *key)'
|
73
81
|
|
74
82
|
extern 'int bpf_attach_kprobe(int, int, char *, char *, unsigned long, int)'
|
75
83
|
extern 'int bpf_detach_kprobe(char *)'
|
data/lib/rbbcc/table.rb
CHANGED
@@ -96,6 +96,14 @@ module RbBCC
|
|
96
96
|
if res < 0
|
97
97
|
raise SystemCallError.new("Could not update table", Fiddle.last_error)
|
98
98
|
end
|
99
|
+
leaf
|
100
|
+
end
|
101
|
+
|
102
|
+
def delete(key)
|
103
|
+
res = Clib.bpf_delete_elem(self.map_fd, key)
|
104
|
+
if res < 0
|
105
|
+
raise KeyError, "key not found"
|
106
|
+
end
|
99
107
|
res
|
100
108
|
end
|
101
109
|
|
@@ -127,6 +135,11 @@ module RbBCC
|
|
127
135
|
enum_for(:each_pair).to_a
|
128
136
|
end
|
129
137
|
|
138
|
+
def clear
|
139
|
+
each_key {|key| self.delete(key) }
|
140
|
+
return items # reload contents
|
141
|
+
end
|
142
|
+
|
130
143
|
def print_log2_hist(val_type="value",
|
131
144
|
section_header: "Bucket ptr",
|
132
145
|
section_print_fn: nil,
|
@@ -198,6 +211,19 @@ module RbBCC
|
|
198
211
|
super(normalize_key(key))
|
199
212
|
end
|
200
213
|
|
214
|
+
def []=(key, value)
|
215
|
+
super(normalize_key(key), value)
|
216
|
+
end
|
217
|
+
|
218
|
+
def clearitem(key)
|
219
|
+
self[key] = byref(0, @leafsize)
|
220
|
+
end
|
221
|
+
|
222
|
+
def delete(key)
|
223
|
+
# Delete in Array type does not have an effect, so zero out instead
|
224
|
+
clearitem(key)
|
225
|
+
end
|
226
|
+
|
201
227
|
def each(&b)
|
202
228
|
each_value do |v|
|
203
229
|
b.call(v.to_bcc_value)
|
data/lib/rbbcc/version.rb
CHANGED
data/rbbcc.gemspec
CHANGED
data/semaphore.sh
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# packages
|
4
|
+
|
5
|
+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD
|
6
|
+
echo "deb https://repo.iovisor.org/apt/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/iovisor.list
|
7
|
+
sudo apt -y update
|
8
|
+
sudo apt -y install libbcc
|
9
|
+
|
10
|
+
# build libbcc 0.11/0.12
|
11
|
+
ORIG_DIR=$(pwd)
|
12
|
+
sudo mkdir -p /opt/bcc
|
13
|
+
|
14
|
+
cd /
|
15
|
+
sudo chown $(whoami) /opt/bcc
|
16
|
+
cache has_key libbcc-so && cache restore libbcc-so
|
17
|
+
sudo chown -R root /opt/bcc
|
18
|
+
cd -
|
19
|
+
|
20
|
+
if test "$(ls /opt/bcc | wc -l)" -le "0"; then
|
21
|
+
sudo apt -y install bison build-essential cmake flex git libedit-dev \
|
22
|
+
libllvm6.0 llvm-6.0-dev libclang-6.0-dev python zlib1g-dev libelf-dev
|
23
|
+
|
24
|
+
sudo mkdir -p /opt/bcc-work
|
25
|
+
sudo chown $(whoami) /opt/bcc-work
|
26
|
+
cd /opt/bcc-work
|
27
|
+
git clone https://github.com/iovisor/bcc.git
|
28
|
+
mkdir bcc/build
|
29
|
+
cd bcc
|
30
|
+
|
31
|
+
git checkout v0.11.0
|
32
|
+
git submodule init
|
33
|
+
git submodule sync
|
34
|
+
git submodule update
|
35
|
+
cd build
|
36
|
+
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/bcc
|
37
|
+
make -j$(nproc)
|
38
|
+
sudo make install
|
39
|
+
make clean
|
40
|
+
cd ..
|
41
|
+
|
42
|
+
V0_12_HASH=2d099cd8c5cb1598d6e911c0b389132ebc7c101b
|
43
|
+
git checkout $V0_12_HASH
|
44
|
+
git submodule init
|
45
|
+
git submodule sync
|
46
|
+
git submodule update
|
47
|
+
cd build
|
48
|
+
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/bcc
|
49
|
+
make -j$(nproc)
|
50
|
+
sudo make install
|
51
|
+
|
52
|
+
cd /
|
53
|
+
cache has_key libbcc-so && cache clear libbcc-so
|
54
|
+
cache store libbcc-so opt/bcc
|
55
|
+
cd -
|
56
|
+
fi
|
57
|
+
cd $ORIG_DIR
|
58
|
+
|
59
|
+
# link all tha objects under /lib from /opt/bcc
|
60
|
+
sudo ln -sf /opt/bcc/lib/libbcc.so.0.11.0 /opt/bcc/lib/libbcc.so.0.12.0 /usr/lib/x86_64-linux-gnu/
|
61
|
+
|
62
|
+
# Doing tests
|
63
|
+
set -e
|
64
|
+
|
65
|
+
bundle install --path vendor/bundle
|
66
|
+
|
67
|
+
bundle exec ruby -e "require 'rbbcc'; puts 'Using rbbcc: %s && libbcc: %s' % [RbBCC::VERSION, RbBCC::Clib.libbcc_version.to_s]"
|
68
|
+
if test "$(bundle exec ruby -e 'require %q(rbbcc); print RbBCC::Clib.libbcc_version.to_s')" != "${LIBBCC_VERSION}"; then
|
69
|
+
echo "Test target mismatch"
|
70
|
+
exit 127
|
71
|
+
fi
|
72
|
+
|
73
|
+
sudo -E env PATH=$PATH bundle exec rake test
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbbcc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Uchio Kondo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: BCC port for MRI. See https://github.com/iovisor/bcc
|
56
70
|
email:
|
57
71
|
- udzura@udzura.jp
|
@@ -60,6 +74,7 @@ extensions: []
|
|
60
74
|
extra_rdoc_files: []
|
61
75
|
files:
|
62
76
|
- ".gitignore"
|
77
|
+
- ".semaphore/semaphore.yml"
|
63
78
|
- Dockerfile
|
64
79
|
- Dockerfile.dfm-example
|
65
80
|
- Gemfile
|
@@ -103,6 +118,7 @@ files:
|
|
103
118
|
- lib/rbbcc/version.rb
|
104
119
|
- misc/rbbcc-dfm-ruby
|
105
120
|
- rbbcc.gemspec
|
121
|
+
- semaphore.sh
|
106
122
|
homepage: https://github.com/udzura/rbbcc
|
107
123
|
licenses: []
|
108
124
|
metadata: {}
|