classbench 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 974d73db164acb263c207f91dd845b01990b68d7
4
- data.tar.gz: bc66219c1d0e8d2779a8f194a971ce271c4cc714
3
+ metadata.gz: 36de8ab8ecd1c0cf26aba7cf4313975fac9d853c
4
+ data.tar.gz: eff25cbca6958cc159171bb801312409c87f2281
5
5
  SHA512:
6
- metadata.gz: dc9360740a9d6c246f805933fe12aa37a1c48708f37a50379d6a4dd79b346eb4041a878adf0db83ef194c08ce969762d3ef5b168d51db08bda8ea62f39bbd959
7
- data.tar.gz: 6803fd033423c07bdf5248733861b651f156b51e2904e20414f5d083d6d93b937664642607d231cf6e0c4bc2b06b216afc554c8b01c6ba350c50579f34d5bba1
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", ">= 0"
7
- gem "rdoc", "~> 3.12"
8
- gem "bundler", "~> 1.0"
9
- gem "jeweler", "~> 2.0.1"
10
- gem "simplecov", ">= 0"
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 (3.12.2)
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 (~> 1.0)
77
- jeweler (~> 2.0.1)
78
- rdoc (~> 3.12)
79
- shoulda
80
- simplecov
52
+ bundler
53
+ jeweler
54
+ rdoc
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -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
@@ -1,5 +1,11 @@
1
- class Classbench
1
+ require 'classbench/tier'
2
+ require 'classbench/tier_node'
3
+
4
+ module Classbench
2
5
  def self.hi
3
- puts "Hello world"
4
- end
6
+ #puts "Hello world"
7
+ t = Tier.new
8
+ t.insert "1010000"
9
+
10
+ end
5
11
  end
@@ -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.2
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-19 00:00:00.000000000 Z
13
+ date: 2015-06-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: shoulda
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: '1.0'
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: '1.0'
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