classbench 0.0.2 → 0.0.3
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/Gemfile +5 -5
- data/Gemfile.lock +4 -30
- data/VERSION +1 -1
- data/classbench.gemspec +60 -0
- data/lib/classbench/tier.rb +42 -0
- data/lib/classbench/tier_node.rb +31 -0
- data/lib/classbench.rb +9 -3
- data/test/test_docopt.rb +23 -0
- metadata +11 -35
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 36de8ab8ecd1c0cf26aba7cf4313975fac9d853c
|
|
4
|
+
data.tar.gz: eff25cbca6958cc159171bb801312409c87f2281
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a2aedb99efd751401e1fbb73c534b78ca4e59779266e4088733cc318accaca03b9d46574ba3cad044d37f82e33f734a4cca6ef612914c2c0406cb27a7724f88f
|
|
7
|
+
data.tar.gz: 72594c05c6fa23843e776de0cd071f5cad30fbb2b114f9a8db03ac92579e657e1b4e4d1d8f085f44ed0f8073bd0c82282d3d9a22cb43474bde0e6dc39c5bd8dc
|
data/Gemfile
CHANGED
|
@@ -3,9 +3,9 @@ source "http://rubygems.org"
|
|
|
3
3
|
# Add dependencies to develop your gem here.
|
|
4
4
|
# Include everything needed to run rake, tests, features, etc.
|
|
5
5
|
group :development do
|
|
6
|
-
gem "shoulda", "
|
|
7
|
-
gem "rdoc"
|
|
8
|
-
gem "bundler"
|
|
9
|
-
gem "jeweler"
|
|
10
|
-
gem "simplecov"
|
|
6
|
+
# gem "shoulda", "~> 0"
|
|
7
|
+
gem "rdoc" #, "~> 3.12"
|
|
8
|
+
gem "bundler" #, "~> 1.0"
|
|
9
|
+
gem "jeweler" #, "~> 2.0", '>= 2.0.1'
|
|
10
|
+
# gem "simplecov"
|
|
11
11
|
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
GEM
|
|
2
2
|
remote: http://rubygems.org/
|
|
3
3
|
specs:
|
|
4
|
-
activesupport (4.2.2)
|
|
5
|
-
i18n (~> 0.7)
|
|
6
|
-
json (~> 1.7, >= 1.7.7)
|
|
7
|
-
minitest (~> 5.1)
|
|
8
|
-
thread_safe (~> 0.3, >= 0.3.4)
|
|
9
|
-
tzinfo (~> 1.1)
|
|
10
4
|
addressable (2.3.8)
|
|
11
5
|
builder (3.2.2)
|
|
12
6
|
descendants_tracker (0.0.4)
|
|
13
7
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
14
|
-
docile (1.1.5)
|
|
15
8
|
faraday (0.9.1)
|
|
16
9
|
multipart-post (>= 1.2, < 3)
|
|
17
10
|
git (1.2.9.1)
|
|
@@ -25,7 +18,6 @@ GEM
|
|
|
25
18
|
oauth2
|
|
26
19
|
hashie (3.4.2)
|
|
27
20
|
highline (1.7.2)
|
|
28
|
-
i18n (0.7.0)
|
|
29
21
|
jeweler (2.0.1)
|
|
30
22
|
builder
|
|
31
23
|
bundler (>= 1.0)
|
|
@@ -35,10 +27,8 @@ GEM
|
|
|
35
27
|
nokogiri (>= 1.5.10)
|
|
36
28
|
rake
|
|
37
29
|
rdoc
|
|
38
|
-
json (1.8.3)
|
|
39
30
|
jwt (1.5.0)
|
|
40
31
|
mini_portile (0.6.2)
|
|
41
|
-
minitest (5.7.0)
|
|
42
32
|
multi_json (1.11.1)
|
|
43
33
|
multi_xml (0.5.5)
|
|
44
34
|
multipart-post (2.0.0)
|
|
@@ -52,29 +42,13 @@ GEM
|
|
|
52
42
|
rack (~> 1.2)
|
|
53
43
|
rack (1.6.4)
|
|
54
44
|
rake (10.4.2)
|
|
55
|
-
rdoc (
|
|
56
|
-
json (~> 1.4)
|
|
57
|
-
shoulda (3.5.0)
|
|
58
|
-
shoulda-context (~> 1.0, >= 1.0.1)
|
|
59
|
-
shoulda-matchers (>= 1.4.1, < 3.0)
|
|
60
|
-
shoulda-context (1.2.1)
|
|
61
|
-
shoulda-matchers (2.8.0)
|
|
62
|
-
activesupport (>= 3.0.0)
|
|
63
|
-
simplecov (0.10.0)
|
|
64
|
-
docile (~> 1.1.0)
|
|
65
|
-
json (~> 1.8)
|
|
66
|
-
simplecov-html (~> 0.10.0)
|
|
67
|
-
simplecov-html (0.10.0)
|
|
45
|
+
rdoc (4.2.0)
|
|
68
46
|
thread_safe (0.3.5)
|
|
69
|
-
tzinfo (1.2.2)
|
|
70
|
-
thread_safe (~> 0.1)
|
|
71
47
|
|
|
72
48
|
PLATFORMS
|
|
73
49
|
ruby
|
|
74
50
|
|
|
75
51
|
DEPENDENCIES
|
|
76
|
-
bundler
|
|
77
|
-
jeweler
|
|
78
|
-
rdoc
|
|
79
|
-
shoulda
|
|
80
|
-
simplecov
|
|
52
|
+
bundler
|
|
53
|
+
jeweler
|
|
54
|
+
rdoc
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.3
|
data/classbench.gemspec
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Generated by jeweler
|
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
|
+
# -*- encoding: utf-8 -*-
|
|
5
|
+
# stub: classbench 0.0.3 ruby lib
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |s|
|
|
8
|
+
s.name = "classbench"
|
|
9
|
+
s.version = "0.0.3"
|
|
10
|
+
|
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
12
|
+
s.require_paths = ["lib"]
|
|
13
|
+
s.authors = ["Adam Lucansky", "Gianni Antichi", "Jiri Matousek"]
|
|
14
|
+
s.date = "2015-06-20"
|
|
15
|
+
s.description = "Statistical generation of firewall/OpenFLOW rules based on seed file (IN DEVELOPMENT)"
|
|
16
|
+
s.email = "adamlucansky@gmail.com"
|
|
17
|
+
s.extra_rdoc_files = [
|
|
18
|
+
"LICENSE.txt",
|
|
19
|
+
"README.rdoc"
|
|
20
|
+
]
|
|
21
|
+
s.files = [
|
|
22
|
+
".document",
|
|
23
|
+
"Gemfile",
|
|
24
|
+
"Gemfile.lock",
|
|
25
|
+
"LICENSE.txt",
|
|
26
|
+
"README.rdoc",
|
|
27
|
+
"Rakefile",
|
|
28
|
+
"VERSION",
|
|
29
|
+
"classbench.gemspec",
|
|
30
|
+
"lib/classbench.rb",
|
|
31
|
+
"lib/classbench/tier.rb",
|
|
32
|
+
"lib/classbench/tier_node.rb",
|
|
33
|
+
"test/helper.rb",
|
|
34
|
+
"test/test_classbench.rb",
|
|
35
|
+
"test/test_docopt.rb"
|
|
36
|
+
]
|
|
37
|
+
s.homepage = "http://github.com/lucansky/classbench"
|
|
38
|
+
s.licenses = ["MIT"]
|
|
39
|
+
s.rubygems_version = "2.4.6"
|
|
40
|
+
s.summary = "Utility for firewall/OpenFLOW rules generation"
|
|
41
|
+
|
|
42
|
+
if s.respond_to? :specification_version then
|
|
43
|
+
s.specification_version = 4
|
|
44
|
+
|
|
45
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
46
|
+
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
|
47
|
+
s.add_development_dependency(%q<bundler>, [">= 0"])
|
|
48
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
|
49
|
+
else
|
|
50
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
|
51
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
|
52
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
53
|
+
end
|
|
54
|
+
else
|
|
55
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
|
56
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
|
57
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module Classbench
|
|
2
|
+
|
|
3
|
+
# Class for representation of a n-ary prefix tree - trie.
|
|
4
|
+
class Tier
|
|
5
|
+
attr_accessor :root
|
|
6
|
+
|
|
7
|
+
def insert(prefix)
|
|
8
|
+
self.root = TierNode.new(0) if not root
|
|
9
|
+
|
|
10
|
+
# Empty prefix
|
|
11
|
+
if prefix.size == 0
|
|
12
|
+
root.increment_prefixes
|
|
13
|
+
return
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
current_node = self.root
|
|
17
|
+
next_node = nil
|
|
18
|
+
|
|
19
|
+
# For each char
|
|
20
|
+
prefix.split('').each_with_index do |ch, i|
|
|
21
|
+
next_node = current_node.subtree[ch]
|
|
22
|
+
|
|
23
|
+
if next_node.nil?
|
|
24
|
+
next_node = TierNode.new(i+1)
|
|
25
|
+
current_node.subtree[ch] = next_node
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
current_node = next_node
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
current_node.increment_prefixes
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Erase not implemented/neccessary
|
|
35
|
+
|
|
36
|
+
def get_stats
|
|
37
|
+
return if not root
|
|
38
|
+
|
|
39
|
+
root.compute_weights
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class TierNode
|
|
2
|
+
attr_accessor :level # depth of node
|
|
3
|
+
attr_accessor :prefixes_count # number of occurences of the prefix
|
|
4
|
+
|
|
5
|
+
attr_accessor :subtree # Hash mapping character -> TierNode
|
|
6
|
+
attr_accessor :subtree_weights
|
|
7
|
+
|
|
8
|
+
def initialize(level)
|
|
9
|
+
self.prefixes_count = 0
|
|
10
|
+
|
|
11
|
+
self.subtree = {}
|
|
12
|
+
self.subtree_weights = {}
|
|
13
|
+
|
|
14
|
+
self.level = level
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def compute_weights
|
|
18
|
+
weight = 0
|
|
19
|
+
|
|
20
|
+
subtree.each do |char, st|
|
|
21
|
+
self.subtree_weights[char] = st.compute_weights
|
|
22
|
+
weight += self.subtree_weights[char]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
weight += self.prefixes_count
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def increment_prefixes
|
|
29
|
+
self.prefixes_count += 1
|
|
30
|
+
end
|
|
31
|
+
end
|
data/lib/classbench.rb
CHANGED
data/test/test_docopt.rb
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require "docopt"
|
|
2
|
+
doc = <<DOCOPT
|
|
3
|
+
Classbench utility
|
|
4
|
+
Firewall/openflow rule generator.
|
|
5
|
+
|
|
6
|
+
Usage:
|
|
7
|
+
#{__FILE__} analyse FILE [--output=FILE]
|
|
8
|
+
#{__FILE__} -h | --help
|
|
9
|
+
#{__FILE__} --version
|
|
10
|
+
|
|
11
|
+
Options:
|
|
12
|
+
-h --help Show this screen.
|
|
13
|
+
-o --output=FILE Output file
|
|
14
|
+
--version Show version.
|
|
15
|
+
|
|
16
|
+
DOCOPT
|
|
17
|
+
|
|
18
|
+
begin
|
|
19
|
+
require "pp"
|
|
20
|
+
pp Docopt::docopt(doc)
|
|
21
|
+
rescue Docopt::Exit => e
|
|
22
|
+
puts e.message
|
|
23
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: classbench
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adam Lucansky
|
|
@@ -10,10 +10,10 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2015-06-
|
|
13
|
+
date: 2015-06-20 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
|
-
name:
|
|
16
|
+
name: rdoc
|
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
|
18
18
|
requirements:
|
|
19
19
|
- - ">="
|
|
@@ -26,50 +26,22 @@ dependencies:
|
|
|
26
26
|
- - ">="
|
|
27
27
|
- !ruby/object:Gem::Version
|
|
28
28
|
version: '0'
|
|
29
|
-
- !ruby/object:Gem::Dependency
|
|
30
|
-
name: rdoc
|
|
31
|
-
requirement: !ruby/object:Gem::Requirement
|
|
32
|
-
requirements:
|
|
33
|
-
- - "~>"
|
|
34
|
-
- !ruby/object:Gem::Version
|
|
35
|
-
version: '3.12'
|
|
36
|
-
type: :development
|
|
37
|
-
prerelease: false
|
|
38
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
39
|
-
requirements:
|
|
40
|
-
- - "~>"
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
version: '3.12'
|
|
43
29
|
- !ruby/object:Gem::Dependency
|
|
44
30
|
name: bundler
|
|
45
31
|
requirement: !ruby/object:Gem::Requirement
|
|
46
32
|
requirements:
|
|
47
|
-
- - "
|
|
33
|
+
- - ">="
|
|
48
34
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: '
|
|
35
|
+
version: '0'
|
|
50
36
|
type: :development
|
|
51
37
|
prerelease: false
|
|
52
38
|
version_requirements: !ruby/object:Gem::Requirement
|
|
53
39
|
requirements:
|
|
54
|
-
- - "
|
|
40
|
+
- - ">="
|
|
55
41
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: '
|
|
42
|
+
version: '0'
|
|
57
43
|
- !ruby/object:Gem::Dependency
|
|
58
44
|
name: jeweler
|
|
59
|
-
requirement: !ruby/object:Gem::Requirement
|
|
60
|
-
requirements:
|
|
61
|
-
- - "~>"
|
|
62
|
-
- !ruby/object:Gem::Version
|
|
63
|
-
version: 2.0.1
|
|
64
|
-
type: :development
|
|
65
|
-
prerelease: false
|
|
66
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
67
|
-
requirements:
|
|
68
|
-
- - "~>"
|
|
69
|
-
- !ruby/object:Gem::Version
|
|
70
|
-
version: 2.0.1
|
|
71
|
-
- !ruby/object:Gem::Dependency
|
|
72
|
-
name: simplecov
|
|
73
45
|
requirement: !ruby/object:Gem::Requirement
|
|
74
46
|
requirements:
|
|
75
47
|
- - ">="
|
|
@@ -98,9 +70,13 @@ files:
|
|
|
98
70
|
- README.rdoc
|
|
99
71
|
- Rakefile
|
|
100
72
|
- VERSION
|
|
73
|
+
- classbench.gemspec
|
|
101
74
|
- lib/classbench.rb
|
|
75
|
+
- lib/classbench/tier.rb
|
|
76
|
+
- lib/classbench/tier_node.rb
|
|
102
77
|
- test/helper.rb
|
|
103
78
|
- test/test_classbench.rb
|
|
79
|
+
- test/test_docopt.rb
|
|
104
80
|
homepage: http://github.com/lucansky/classbench
|
|
105
81
|
licenses:
|
|
106
82
|
- MIT
|