rbbcc 0.3.0 → 0.3.1
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/.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
|
-
[](https://badge.fury.io/rb/rbbcc)
|
3
|
+
[](https://badge.fury.io/rb/rbbcc) [](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: {}
|