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 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