trace_visualization 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.
@@ -10,7 +10,7 @@ module TraceVisualization
10
10
 
11
11
  # Get the start position of lines
12
12
  def self.lines_pos(str)
13
- TraceVisualization.assert_instance_of(str, String)
13
+ TraceVisualization.assert_instance_of(str, Mapping)
14
14
 
15
15
  lines_pos = [0]
16
16
  pos = -1
@@ -1,3 +1,3 @@
1
1
  module TraceVisualization
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -6,28 +6,28 @@ module TraceVisualization
6
6
 
7
7
  GRN = "\033[1;32m"
8
8
  YLW = "\033[1;33m"
9
- FNSH = "\033[0m"
9
+ FINISH = "\033[0m"
10
10
 
11
- def self.hl(str, repetition)
12
- raise "repetition must be instance of TraceVisualization::Data::Repetition" if not repetition.instance_of? TraceVisualization::Data::Repetition
11
+ def self.hl(mapping, repetition)
12
+ raise 'repetition must be instance of TraceVisualization::Data::Repetition' if not repetition.instance_of? TraceVisualization::Data::Repetition
13
13
 
14
- result = ""
14
+ result = ''
15
15
  prev_position = 0
16
16
  positions = repetition.build_positions
17
17
 
18
18
  positions.each do |position|
19
- result += str[prev_position ... position[0][0]]
19
+ result += mapping.restore(prev_position, position[0][0])
20
20
 
21
21
  for i in 0 ... position.size
22
22
  pos, len = position[i]
23
- result += GRN + "#{str[pos ... pos + len]}" + FNSH
24
- result += YLW + "#{str[pos + len ... position[i + 1][0]]}" + FNSH if i < position.size - 1
23
+ result += GRN + "#{mapping.restore(pos, pos + len)}" + FINISH
24
+ result += YLW + "#{mapping.restore(pos + len, position[i + 1][0])}" + FINISH if i < position.size - 1
25
25
  end
26
26
 
27
27
  prev_position = position[-1][0] + position[-1][1]
28
28
  end
29
29
 
30
- result += str[prev_position .. -1]
30
+ result += mapping.restore(prev_position, -1)
31
31
  end
32
32
  end
33
33
  end
@@ -48,9 +48,7 @@ describe TraceVisualization::BurrowsWheelerTransform do
48
48
  ws.to_str.should eq " "
49
49
  a.to_str.should eq "a"
50
50
  b.to_str.should eq "b"
51
-
52
- puts "ip.ord = #{ip.ord}, ws.ord = #{ws.ord}, a = #{a.ord}, b = #{b.ord}"
53
-
51
+
54
52
  sa = TraceVisualization::SuffixArray.effective(mapped_str)
55
53
 
56
54
  (sa.length == mapped_str.length).should be_true
@@ -60,9 +58,9 @@ describe TraceVisualization::BurrowsWheelerTransform do
60
58
 
61
59
  if ip < ws
62
60
  bwt.should eq [ip, ip, a, ws, ws, b, ws]
63
- bwt_str.should eq "127.0.0.1127.0.0.1a b "
61
+ bwt_str.should eq '127.0.0.1127.0.0.1a b '
64
62
  else
65
- sadasfa
63
+ # TODO Implement!
66
64
  end
67
65
  end
68
66
 
@@ -6,7 +6,7 @@ describe TraceVisualization::LongestCommonPrefix do
6
6
 
7
7
  context '.effective' do
8
8
  it 'should return array with longest common prefix in linear time' do
9
- str = "mississippi"
9
+ str = 'mississippi'
10
10
 
11
11
  sa = TraceVisualization::SuffixArray.effective(str)
12
12
  lcp = TraceVisualization::LongestCommonPrefix.effective(str, sa, str.size)
@@ -16,10 +16,17 @@ describe TraceVisualization::LongestCommonPrefix do
16
16
 
17
17
  it 'should return correct result for mapped string', :current => true do
18
18
  str = "127.0.0.1 foo\r\n127.0.0.1 bar"
19
- mapped_str = TraceVisualization::Mapping.new(str)
19
+
20
+ mapping = TraceVisualization::Mapping.init do
21
+ default_tokens
22
+ end
23
+
24
+ mapping.process do
25
+ from_string(str)
26
+ end
20
27
 
21
- sa = TraceVisualization::SuffixArray.effective(mapped_str)
22
- lcp = TraceVisualization::LongestCommonPrefix.effective(mapped_str, sa, mapped_str.length)
28
+ sa = TraceVisualization::SuffixArray.effective(mapping)
29
+ lcp = TraceVisualization::LongestCommonPrefix.effective(mapping, sa, mapping.length)
23
30
 
24
31
  sa.should eq([6, 5, 8, 1, 10, 9, 2, 4, 3, 11, 7, 0])
25
32
  lcp.should eq([0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2])
@@ -5,8 +5,14 @@ require 'trace_visualization/data/repetition'
5
5
  describe TraceVisualization::RepetitionsConcatenation do
6
6
  it "process common positions" do
7
7
  str = "aaaxbbbyaaazbbbvaaawbbb"
8
-
9
- context = TraceVisualization::Repetitions::Context.new(str, [])
8
+
9
+ mapping = TraceVisualization::Mapping.init do
10
+ default_tokens
11
+ end
12
+
13
+ mapping.process { from_string(str) }
14
+
15
+ context = TraceVisualization::Repetitions::Context.new(mapping, [])
10
16
 
11
17
  lpos = [0, 8, 16]
12
18
  rpos = [4, 12, 20]
@@ -1,13 +1,12 @@
1
1
  require 'trace_visualization'
2
- require 'trace_visualization/repetitions_psy'
3
2
  require 'trace_visualization/suffix_array'
4
3
  require 'trace_visualization/longest_common_prefix'
5
4
  require 'trace_visualization/bwt'
6
- require 'trace_visualization/mapping'
5
+
7
6
 
8
7
  describe TraceVisualization::Repetitions do
9
8
  it 'simple test PSY1' do
10
- TraceVisualization::Repetitions.psy1("aaabbbcccaaacccbbb", 3, false).should eq [
9
+ TraceVisualization::Repetitions.psy1('aaabbbcccaaacccbbb', 3, false).should eq [
11
10
  {:lcp=>3, :i=>0, :j=>1},
12
11
  {:lcp=>3, :i=>8, :j=>9},
13
12
  {:lcp=>3, :i=>16, :j=>17}
@@ -15,17 +14,31 @@ describe TraceVisualization::Repetitions do
15
14
  end
16
15
 
17
16
  it 'simple test PSY1 with mapping' do
18
- str = "aaa[123]aaa"
19
- mapped_str = TraceVisualization::Mapping.new(str)
17
+ str = 'aaa[123]aaa'
18
+
19
+ mapping = TraceVisualization::Mapping.init do
20
+ default_tokens
21
+ end
22
+
23
+ mapping.process do
24
+ from_string(str)
25
+ end
20
26
 
21
- TraceVisualization::Repetitions.psy1(mapped_str, 3, false).should eq [{:lcp=>3, :i=>2, :j=>3}]
27
+ TraceVisualization::Repetitions.psy1(mapping, 3, false).should eq [{:lcp=>3, :i=>2, :j=>3}]
22
28
  end
23
29
 
24
30
  it 'test decode PSY1' do
25
31
  str = "aaa[123]xyz[654]aaa[123]" # <---> "aaaXxyzYaaaX"
26
- mapped_str = TraceVisualization::Mapping.new(str)
32
+
33
+ mapping = TraceVisualization::Mapping.init do
34
+ default_tokens
35
+ end
36
+
37
+ mapping.process do
38
+ from_string(str)
39
+ end
27
40
 
28
- rs = TraceVisualization::Repetitions.psy1(mapped_str, 3)
41
+ rs = TraceVisualization::Repetitions.psy1(mapping, 3)
29
42
 
30
43
  rs.size.should eq 1
31
44
  rs[0].length.should eq 4
@@ -33,7 +46,7 @@ describe TraceVisualization::Repetitions do
33
46
 
34
47
  length = rs[0].length
35
48
  position = rs[0].left_positions[0]
36
-
37
- mapped_str.restore(position, length).should eq "aaa[123]"
49
+
50
+ mapping.restore(position, length).should eq "aaa[123]"
38
51
  end
39
52
  end
@@ -3,22 +3,29 @@ require 'trace_visualization/mapping'
3
3
 
4
4
  describe TraceVisualization::SuffixArray do
5
5
 
6
- context ".naive" do
7
- it "should return suffix array" do
8
- TraceVisualization::SuffixArray.naive("abaabaab").should eq([5, 2, 6, 3, 0, 7, 4, 1])
9
- TraceVisualization::SuffixArray.naive("abracadabra").should eq([10, 7, 0, 3, 5, 8, 1, 4, 6, 9, 2])
6
+ context '.naive' do
7
+ it 'should return suffix array' do
8
+ TraceVisualization::SuffixArray.naive('abaabaab').should eq([5, 2, 6, 3, 0, 7, 4, 1])
9
+ TraceVisualization::SuffixArray.naive('abracadabra').should eq([10, 7, 0, 3, 5, 8, 1, 4, 6, 9, 2])
10
10
  end
11
11
 
12
- it "should correct process mapped string" do
13
- str = "abc[123]def[456]ghi"
14
- mapped_str = TraceVisualization::Mapping.new(str)
12
+ it 'should correct process mapped string' do
13
+ str = 'abc[123]def[456]ghi'
14
+
15
+ mapping = TraceVisualization::Mapping.init do
16
+ default_tokens
17
+ end
18
+
19
+ mapping.process do
20
+ from_string(str)
21
+ end
15
22
 
16
- TraceVisualization::SuffixArray.naive(mapped_str).should eq([0, 1, 2, 4, 5, 6, 8, 9, 10, 3, 7])
23
+ TraceVisualization::SuffixArray.naive(mapping).should eq([0, 1, 2, 4, 5, 6, 8, 9, 10, 3, 7])
17
24
  end
18
25
  end
19
26
 
20
- context ".radix_pass" do
21
- it "do stable radix sort" do
27
+ context '.radix_pass' do
28
+ it 'do stable radix sort' do
22
29
  str = [3, 3, 2, 1, 5, 5, 4]
23
30
  a = [0, 1, 2, 3, 4, 5, 6]
24
31
  n = a.length
@@ -30,8 +37,8 @@ describe TraceVisualization::SuffixArray do
30
37
  end
31
38
  end
32
39
 
33
- context ".effective_linear" do
34
- it "should return suffix array for linear time (native function)" do
40
+ context '.effective_linear' do
41
+ it 'should return suffix array for linear time (native function)' do
35
42
  s = [3, 3, 2, 1, 5, 5, 4, 0, 0, 0]
36
43
  n = s.length - 3 # exclude last 3 zeros
37
44
  alphabet_size = 10
@@ -43,47 +50,67 @@ describe TraceVisualization::SuffixArray do
43
50
  end
44
51
  end
45
52
 
46
- context ".effective" do
47
- it "should return suffix array for linear time (wrapper function)" do
48
- TraceVisualization::SuffixArray.effective("abaabaab").should eq(TraceVisualization::SuffixArray.naive("abaabaab"))
49
- TraceVisualization::SuffixArray.effective("abracadabra").should eq(TraceVisualization::SuffixArray.naive("abracadabra"))
53
+ context '.effective' do
54
+ it 'should return suffix array for linear time (wrapper function)' do
55
+ TraceVisualization::SuffixArray.effective('abaabaab').should eq(TraceVisualization::SuffixArray.naive('abaabaab'))
56
+ TraceVisualization::SuffixArray.effective('abracadabra').should eq(TraceVisualization::SuffixArray.naive('abracadabra'))
50
57
  end
51
58
 
52
- it "should correct process mapped string" do
53
- str = "abc[123]def[456]ghi"
54
- mapped_str = TraceVisualization::Mapping.new(str)
59
+ it 'should correct process mapped string' do
60
+ str = 'abc[123]def[456]ghi'
61
+
62
+ mapping = TraceVisualization::Mapping.init do
63
+ default_tokens
64
+ end
65
+
66
+ mapping.process do
67
+ from_string(str)
68
+ end
55
69
 
56
- TraceVisualization::SuffixArray.effective(mapped_str).should eq([0, 1, 2, 4, 5, 6, 8, 9, 10, 3, 7])
70
+ TraceVisualization::SuffixArray.effective(mapping).should eq([0, 1, 2, 4, 5, 6, 8, 9, 10, 3, 7])
57
71
  end
58
72
 
59
- it "another string for mapped processing" do
73
+ it 'another string for mapped processing' do
60
74
  str = "127.0.0.1 a 127.0.0.1 b"
61
75
 
62
76
  # 'X a X b'
63
- mapped_str = TraceVisualization::Mapping.new(str)
64
-
65
- mapped_str[0].to_int.should eq 4
66
- mapped_str[1].to_int.should eq 1
67
- mapped_str[2].to_int.should eq 2
68
- mapped_str[3].to_int.should eq 1
69
- mapped_str[4].to_int.should eq 4
70
- mapped_str[5].to_int.should eq 1
71
- mapped_str[6].to_int.should eq 3
77
+ mapping = TraceVisualization::Mapping.init do
78
+ default_tokens
79
+ end
72
80
 
73
- length_before = mapped_str.length
81
+ mapping.process do
82
+ from_string(str)
83
+ end
84
+
85
+ mapping[0].to_int.should eq 4
86
+ mapping[1].to_int.should eq 1
87
+ mapping[2].to_int.should eq 2
88
+ mapping[3].to_int.should eq 1
89
+ mapping[4].to_int.should eq 4
90
+ mapping[5].to_int.should eq 1
91
+ mapping[6].to_int.should eq 3
92
+
93
+ length_before = mapping.length
74
94
 
75
- sa = TraceVisualization::SuffixArray.effective(mapped_str)
76
- mapped_str.length.should be length_before
95
+ sa = TraceVisualization::SuffixArray.effective(mapping)
96
+ mapping.length.should be length_before
77
97
 
78
98
  sa.should eq [1, 5, 3, 2, 6, 0, 4]
79
- sa.length.should be mapped_str.length
99
+ sa.length.should be mapping.length
80
100
  end
81
101
 
82
- it "bug with endless loop" do
102
+ it 'bug with endless loop' do
83
103
  str = "127.0.0.1 user login\r\n127.0.0.1 user logout"
84
- mapped_str = TraceVisualization::Mapping.new(str)
104
+
105
+ mapping = TraceVisualization::Mapping.init do
106
+ default_tokens
107
+ end
108
+
109
+ mapping.process do
110
+ from_string(str)
111
+ end
85
112
 
86
- sa = TraceVisualization::SuffixArray.effective(mapped_str)
113
+ sa = TraceVisualization::SuffixArray.effective(mapping)
87
114
  end
88
115
  end
89
116
 
@@ -4,32 +4,32 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'trace_visualization/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "trace_visualization"
7
+ spec.name = 'trace_visualization'
8
8
  spec.version = TraceVisualization::VERSION
9
- spec.authors = ["Sergey"]
10
- spec.email = ["mastedm@gmail.com"]
9
+ spec.authors = ['Sergey']
10
+ spec.email = ['mastedm@gmail.com']
11
11
  spec.description = %q{
12
12
  Intelligent visualization of software traces
13
13
  }
14
14
  spec.summary = %q{
15
15
  Software for smart trace visualization
16
16
  }
17
- spec.homepage = ""
18
- spec.license = "MIT"
17
+ spec.homepage = ''
18
+ spec.license = 'MIT'
19
19
 
20
20
  spec.files = `git ls-files`.split($/)
21
21
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
22
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
23
- spec.require_paths = ["lib"]
23
+ spec.require_paths = ['lib']
24
24
 
25
- spec.add_development_dependency "bundler", "~> 1.3"
26
- spec.add_development_dependency "rake"
25
+ spec.add_development_dependency 'bundler', '~> 1.3'
26
+ spec.add_development_dependency 'rake'
27
27
 
28
- spec.add_development_dependency "redcarpet", "~> 1.17"
29
- spec.add_development_dependency "yard", "~> 0.7.5"
28
+ spec.add_development_dependency 'redcarpet', '~> 1.17'
29
+ spec.add_development_dependency 'yard', '~> 0.7.5'
30
30
 
31
- spec.add_development_dependency "rspec-core", "~> 2.0"
32
- spec.add_development_dependency "rspec-expectations", "~> 2.0"
33
- spec.add_development_dependency "rspec-mocks"
34
- spec.add_development_dependency "rr", "~> 1.0"
31
+ spec.add_development_dependency 'rspec-core', '~> 2.0'
32
+ spec.add_development_dependency 'rspec-expectations', '~> 2.0'
33
+ spec.add_development_dependency 'rspec-mocks'
34
+ spec.add_development_dependency 'rr', '~> 1.0'
35
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trace_visualization
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
  - Sergey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-15 00:00:00.000000000 Z
11
+ date: 2013-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -125,7 +125,8 @@ dependencies:
125
125
  description: "\n Intelligent visualization of software traces \n "
126
126
  email:
127
127
  - mastedm@gmail.com
128
- executables: []
128
+ executables:
129
+ - trace_visualization
129
130
  extensions: []
130
131
  extra_rdoc_files: []
131
132
  files:
@@ -134,6 +135,7 @@ files:
134
135
  - LICENSE
135
136
  - README.md
136
137
  - Rakefile
138
+ - bin/trace_visualization
137
139
  - lib/trace_visualization.rb
138
140
  - lib/trace_visualization/assert.rb
139
141
  - lib/trace_visualization/bwt.rb
@@ -145,18 +147,6 @@ files:
145
147
  - lib/trace_visualization/lexeme_overlap_filter.rb
146
148
  - lib/trace_visualization/longest_common_prefix.rb
147
149
  - lib/trace_visualization/mapping.rb
148
- - lib/trace_visualization/preprocessor/Makefile
149
- - lib/trace_visualization/preprocessor/hashmap.c
150
- - lib/trace_visualization/preprocessor/hashmap.h
151
- - lib/trace_visualization/preprocessor/hashmap_test.cpp
152
- - lib/trace_visualization/preprocessor/lexeme.h
153
- - lib/trace_visualization/preprocessor/lexeme_table.c
154
- - lib/trace_visualization/preprocessor/lexeme_table.h
155
- - lib/trace_visualization/preprocessor/lexeme_table_cpp.h
156
- - lib/trace_visualization/preprocessor/parser_functions.c
157
- - lib/trace_visualization/preprocessor/parser_test.cpp
158
- - lib/trace_visualization/preprocessor/preprocessor.l
159
- - lib/trace_visualization/preprocessor/test_main.cpp
160
150
  - lib/trace_visualization/profile.rb
161
151
  - lib/trace_visualization/reorder.rb
162
152
  - lib/trace_visualization/repetitions.rb
@@ -164,6 +154,7 @@ files:
164
154
  - lib/trace_visualization/repetitions_context.rb
165
155
  - lib/trace_visualization/repetitions_incrementation.rb
166
156
  - lib/trace_visualization/repetitions_psy.rb
157
+ - lib/trace_visualization/repetitions_score.rb
167
158
  - lib/trace_visualization/suffix_array.rb
168
159
  - lib/trace_visualization/utils.rb
169
160
  - lib/trace_visualization/version.rb
@@ -1,43 +0,0 @@
1
- LEX = flex
2
- CC = gcc
3
- CPP = g++
4
-
5
- LDFLAGS =-lfl
6
-
7
- CPPUNIT_BIN_CFG = cppunit-config
8
- CPPUNIT_CFLAGS = `$(CPPUNIT_BIN_CFG) --cflags`
9
- CPPUNIT_LIBS = `$(CPPUNIT_BIN_CFG) --libs`
10
-
11
- CFLAGS =-O0 -Wall -g
12
- CPPFLAGS =-O0 -Wall $(CPPUNIT_CFLAGS) -g
13
- # CPPFLAGS =-O0 -Wall -std=c++11 $(CPPUNIT_CFLAGS)
14
-
15
- .cpp.o :
16
- $(CPP) $(CPPFLAGS) -o $@ -c $<
17
-
18
- .c.o :
19
- $(CC) $(CFLAGS) -o $@ -c $<
20
-
21
- %.cppo : %.c
22
- $(CPP) $(CPPFLAGS) -o $@ -c $<
23
-
24
- preprocessor: preprocessor.o parser_functions.o
25
- $(CC) -o $@ $(LDFLAGS) $^
26
-
27
- preprocessor.c: preprocessor.l
28
- $(LEX) -o $@ $^
29
-
30
- unit_tests: test_main.o hashmap.cppo hashmap_test.o \
31
- parser_functions.cppo parser_test.o \
32
- lexeme_table.cppo
33
- $(CPP) -o $@ $(CPPUNIT_LIBS) $^
34
-
35
- unit_tests_run: unit_tests
36
- ./unit_tests
37
-
38
- install: preprocessor
39
- cp preprocessor ../../../bin/
40
- make clean
41
-
42
- clean:
43
- rm -f *.o *.cppo preprocessor.c unit_tests preprocessor