Commit 243f282decae20aee8e6db4d66d4cb77eacaae8f
Committed by
João M. M. da Silva
1 parent
8bfb7c93
Exists in
master
and in
28 other branches
[Mezuro] Finished refactoring project result model to processing model.
Showing
6 changed files
with
201 additions
and
223 deletions
Show diff stats
@@ -0,0 +1,49 @@ | @@ -0,0 +1,49 @@ | ||
1 | +class Kalibro::Processing < Kalibro::Model | ||
2 | + | ||
3 | + attr_accessor :id, :date, :state, :error, :process_times, :results_root_id | ||
4 | + | ||
5 | + def self.has_processing(repository_id) | ||
6 | + request('Processing', :has_processing, {:repository_id => repository_id})[:exists] | ||
7 | + end | ||
8 | + | ||
9 | + def self.has_ready_processing(repository_id) | ||
10 | + request('Processing', :has_ready_processing, {:repository_id => repository_id})[:exists] | ||
11 | + end | ||
12 | + | ||
13 | + def self.has_processing_after(repository_id, date) | ||
14 | + request('Processing', :has_processing_after, {:repository_id => repository_id, :date => date})[:exists] | ||
15 | + end | ||
16 | + | ||
17 | + def self.has_processing_before(repository_id, date) | ||
18 | + request('Processing', :has_processing_before, {:repository_id => repository_id, :date => date})[:exists] | ||
19 | + end | ||
20 | + | ||
21 | + def self.last_processing_state_of(repository_id) | ||
22 | + request('Processing', :last_processing_state, {:repository_id => repository_id})[:process_state] | ||
23 | + end | ||
24 | + | ||
25 | + def self.last_ready_processing_of(repository_id) | ||
26 | + new request('Processing', :last_ready_processing, {:repository_id => repository_id})[:processing] | ||
27 | + end | ||
28 | + | ||
29 | + def self.first_processing_of(repository_id) | ||
30 | + new request('Processing', :first_processing, {:repository_id => repository_id})[:processing] | ||
31 | + end | ||
32 | + | ||
33 | + def self.last_processing_of(repository_id) | ||
34 | + new request('Processing', :last_processing, {:repository_id => repository_id})[:processing] | ||
35 | + end | ||
36 | + | ||
37 | + def self.first_processing_after(repository_id, date) | ||
38 | + new request('Processing', :first_processing_after, {:repository_id => repository_id, :date => date})[:processing] | ||
39 | + end | ||
40 | + | ||
41 | + def self.last_processing_before(repository_id, date) | ||
42 | + new request('Processing', :last_processing_before, {:repository_id => repository_id, :date => date})[:processing] | ||
43 | + end | ||
44 | + | ||
45 | + def date=(value) | ||
46 | + @date = value.is_a?(String) ? DateTime.parse(value) : value | ||
47 | + end | ||
48 | + | ||
49 | +end |
plugins/mezuro/lib/kalibro/project_result.rb
@@ -1,100 +0,0 @@ | @@ -1,100 +0,0 @@ | ||
1 | -class Kalibro::ProjectResult < Kalibro::Model | ||
2 | - | ||
3 | - attr_accessor :project, :date, :load_time, :analysis_time, :source_tree, :collect_time | ||
4 | - | ||
5 | - def self.last_result(project_name) | ||
6 | - new request('ProjectResult', :get_last_result_of, {:project_name => project_name})[:project_result] | ||
7 | - end | ||
8 | - | ||
9 | - def self.first_result(project_name) | ||
10 | - new request('ProjectResult', :get_first_result_of, {:project_name => project_name})[:project_result] | ||
11 | - end | ||
12 | - | ||
13 | - def self.first_result_after(project_name, date) | ||
14 | - new request('ProjectResult', :get_first_result_after, {:project_name => project_name, :date => date})[:project_result] | ||
15 | - end | ||
16 | - | ||
17 | - def self.last_result_before(project_name, date) | ||
18 | - new request('ProjectResult', :get_last_result_before, {:project_name => project_name, :date => date})[:project_result] | ||
19 | - end | ||
20 | - | ||
21 | - def self.has_results?(project_name) | ||
22 | - request('ProjectResult', :has_results_for, {:project_name => project_name})[:has_results] | ||
23 | - end | ||
24 | - | ||
25 | - def self.has_results_before?(project_name, date) | ||
26 | - request('ProjectResult', :has_results_before, {:project_name => project_name, :date => date})[:has_results] | ||
27 | - end | ||
28 | - | ||
29 | - def self.has_results_after?(project_name, date) | ||
30 | - request('ProjectResult', :has_results_after, {:project_name => project_name, :date => date})[:has_results] | ||
31 | - end | ||
32 | - | ||
33 | - def project=(value) | ||
34 | - @project = (value.kind_of?(Hash)) ? Kalibro::Project.new(value) : value | ||
35 | - end | ||
36 | - | ||
37 | - def date=(value) | ||
38 | - @date = value.is_a?(String) ? DateTime.parse(value) : value | ||
39 | - end | ||
40 | - | ||
41 | - def load_time=(value) | ||
42 | - @load_time = value.to_i | ||
43 | - end | ||
44 | - | ||
45 | - def collect_time=(value) | ||
46 | - @collect_time = value.to_i | ||
47 | - end | ||
48 | - | ||
49 | - def analysis_time=(value) | ||
50 | - @analysis_time = value.to_i | ||
51 | - end | ||
52 | - | ||
53 | - def source_tree=(value) | ||
54 | - @source_tree = value.kind_of?(Hash) ? Kalibro::ModuleNode.new(value) : value | ||
55 | - end | ||
56 | - | ||
57 | - def formatted_load_time | ||
58 | - format_milliseconds(@load_time) | ||
59 | - end | ||
60 | - | ||
61 | - def formatted_analysis_time | ||
62 | - format_milliseconds(@analysis_time) | ||
63 | - end | ||
64 | - | ||
65 | - def format_milliseconds(value) | ||
66 | - seconds = value.to_i/1000 | ||
67 | - hours = seconds/3600 | ||
68 | - seconds -= hours * 3600 | ||
69 | - minutes = seconds/60 | ||
70 | - seconds -= minutes * 60 | ||
71 | - "#{format(hours)}:#{format(minutes)}:#{format(seconds)}" | ||
72 | - end | ||
73 | - | ||
74 | - def format(amount) | ||
75 | - ('%2d' % amount).sub(/\s/, '0') | ||
76 | - end | ||
77 | - | ||
78 | - def node(module_name) | ||
79 | - if module_name.nil? or module_name == project.name | ||
80 | - node = source_tree | ||
81 | - else | ||
82 | - path = Kalibro::Module.parent_names(module_name) | ||
83 | - parent = @source_tree | ||
84 | - path.each do |node_name| | ||
85 | - parent = get_leaf_from(parent, node_name) | ||
86 | - end | ||
87 | - parent | ||
88 | - end | ||
89 | - end | ||
90 | - | ||
91 | - private | ||
92 | - | ||
93 | - def get_leaf_from(node, module_name) | ||
94 | - node.children.each do |child_node| | ||
95 | - return child_node if child_node.module.name == module_name | ||
96 | - end | ||
97 | - nil | ||
98 | - end | ||
99 | - | ||
100 | -end |
@@ -0,0 +1,19 @@ | @@ -0,0 +1,19 @@ | ||
1 | +require File.dirname(__FILE__) + '/process_time_fixtures' | ||
2 | + | ||
3 | +class ProcessingFixtures | ||
4 | + | ||
5 | + def self.processing | ||
6 | + Kalibro::Processing.new processing_hash | ||
7 | + end | ||
8 | + | ||
9 | + def self.processing_hash | ||
10 | + { | ||
11 | + :id => 31, | ||
12 | + :date => '2011-10-20T18:26:43.151+00:00', | ||
13 | + :state => 'READY', | ||
14 | + :process_times => [ProcessTimeFixtures.process_time_hash], | ||
15 | + :results_root_id => 13 | ||
16 | + } | ||
17 | + end | ||
18 | + | ||
19 | +end |
plugins/mezuro/test/fixtures/project_result_fixtures.rb
@@ -1,35 +0,0 @@ | @@ -1,35 +0,0 @@ | ||
1 | -require File.dirname(__FILE__) + '/project_fixtures' | ||
2 | -require File.dirname(__FILE__) + '/module_node_fixtures' | ||
3 | -require File.dirname(__FILE__) + '/module_result_fixtures' | ||
4 | - | ||
5 | -class ProjectResultFixtures | ||
6 | - | ||
7 | - def self.project_result | ||
8 | - Kalibro::ProjectResult.new project_result_hash | ||
9 | - end | ||
10 | - | ||
11 | - def self.project_result_hash | ||
12 | - { | ||
13 | - :project => ProjectFixtures.project_hash, | ||
14 | - :date => ModuleResultFixtures.module_result_hash[:date], | ||
15 | - :load_time => 14878, | ||
16 | - :analysis_time => 1022, | ||
17 | - :source_tree => ModuleNodeFixtures.module_node_hash, | ||
18 | - :collect_time => 14878, | ||
19 | - :attributes! => | ||
20 | - { | ||
21 | - :source_tree => | ||
22 | - { | ||
23 | - "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
24 | - "xsi:type"=>"kalibro:moduleNodeXml" | ||
25 | - }, | ||
26 | - :project => | ||
27 | - { | ||
28 | - "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
29 | - "xsi:type"=>"kalibro:projectXml" | ||
30 | - } | ||
31 | - } | ||
32 | - } | ||
33 | - end | ||
34 | - | ||
35 | -end |
@@ -0,0 +1,133 @@ | @@ -0,0 +1,133 @@ | ||
1 | +require "test_helper" | ||
2 | + | ||
3 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/processing_fixtures" | ||
4 | + | ||
5 | +class ProcessingTest < ActiveSupport::TestCase | ||
6 | + | ||
7 | + def setup | ||
8 | + @hash = ProcessingFixtures.processing_hash | ||
9 | + @processing = ProcessingFixtures.processing | ||
10 | + | ||
11 | + @repository_id = 31 | ||
12 | + | ||
13 | +=begin | ||
14 | + @project_name = @processing.project.name | ||
15 | + @date = @processing.date | ||
16 | + @flag = DateTime.now.sec % 2 == 0 #random choose between true or false | ||
17 | + | ||
18 | + @request = {:project_name => @project_name} | ||
19 | + @request_with_date = {:project_name => @project_name, :date => @date} | ||
20 | + @flag_response = {:has_results => @flag} | ||
21 | + @result_response = {:processing => @processing.to_hash} | ||
22 | +=end | ||
23 | + end | ||
24 | + | ||
25 | + should 'create project result from hash' do | ||
26 | + assert_equal @processing.results_root_id, Kalibro::Processing.new(@hash).results_root_id | ||
27 | + end | ||
28 | + | ||
29 | + should 'convert project result to hash' do | ||
30 | + assert_equal @hash, @processing.to_hash | ||
31 | + end | ||
32 | + | ||
33 | + should 'verify if a repository has a processing' do | ||
34 | + true_repository_id = 31 | ||
35 | + false_repository_id = 32 | ||
36 | + | ||
37 | + Kalibro::Processing.expects(:request).with('Processing',:has_processing, {:repository_id => true_repository_id}).returns({:exists => true}) | ||
38 | + Kalibro::Processing.expects(:request).with('Processing',:has_processing, {:repository_id => false_repository_id}).returns({:exists => false}) | ||
39 | + | ||
40 | + assert Kalibro::Processing.has_processing(true_repository_id) | ||
41 | + assert !Kalibro::Processing.has_processing(false_repository_id) | ||
42 | + end | ||
43 | + | ||
44 | + should 'verify if a repository has a ready processing' do | ||
45 | + true_repository_id = 31 | ||
46 | + false_repository_id = 32 | ||
47 | + | ||
48 | + Kalibro::Processing.expects(:request).with('Processing',:has_ready_processing, {:repository_id => true_repository_id}).returns({:exists => true}) | ||
49 | + Kalibro::Processing.expects(:request).with('Processing',:has_ready_processing, {:repository_id => false_repository_id}).returns({:exists => false}) | ||
50 | + | ||
51 | + assert Kalibro::Processing.has_ready_processing(true_repository_id) | ||
52 | + assert !Kalibro::Processing.has_ready_processing(false_repository_id) | ||
53 | + end | ||
54 | + | ||
55 | + should 'verify if a repository has a processing after a date' do | ||
56 | + true_repository_id = 31 | ||
57 | + false_repository_id = 32 | ||
58 | + | ||
59 | + Kalibro::Processing.expects(:request).with('Processing',:has_processing_after, {:repository_id => true_repository_id, :date => @processing.date}).returns({:exists => true}) | ||
60 | + Kalibro::Processing.expects(:request).with('Processing',:has_processing_after, {:repository_id => false_repository_id, :date => @processing.date}).returns({:exists => false}) | ||
61 | + | ||
62 | + assert Kalibro::Processing.has_processing_after(true_repository_id, @processing.date) | ||
63 | + assert !Kalibro::Processing.has_processing_after(false_repository_id, @processing.date) | ||
64 | + end | ||
65 | + | ||
66 | + should 'verify if a repository has a processing before a date' do | ||
67 | + true_repository_id = 31 | ||
68 | + false_repository_id = 32 | ||
69 | + | ||
70 | + Kalibro::Processing.expects(:request).with('Processing',:has_processing_before, {:repository_id => true_repository_id, :date => @processing.date}).returns({:exists => true}) | ||
71 | + Kalibro::Processing.expects(:request).with('Processing',:has_processing_before, {:repository_id => false_repository_id, :date => @processing.date}).returns({:exists => false}) | ||
72 | + | ||
73 | + assert Kalibro::Processing.has_processing_before(true_repository_id, @processing.date) | ||
74 | + assert !Kalibro::Processing.has_processing_before(false_repository_id, @processing.date) | ||
75 | + end | ||
76 | + | ||
77 | + should 'get last processing state of a repository' do | ||
78 | + Kalibro::Processing.expects(:request).with('Processing',:last_processing_state, {:repository_id => @repository_id}).returns({:process_state => @processing.state}) | ||
79 | + assert_equal @processing.state, Kalibro::Processing.last_processing_state_of(@repository_id) | ||
80 | + end | ||
81 | + | ||
82 | + should 'get last ready processing of a repository' do | ||
83 | + Kalibro::Processing.expects(:request).with('Processing', :last_ready_processing, {:repository_id => @repository_id}).returns({:processing => @hash}) | ||
84 | + assert_equal @processing.id, Kalibro::Processing.last_ready_processing_of(@repository_id).id | ||
85 | + end | ||
86 | + | ||
87 | + should 'get first processing of a repository' do | ||
88 | + Kalibro::Processing.expects(:request).with('Processing', :first_processing, {:repository_id => @repository_id}).returns({:processing => @hash}) | ||
89 | + assert_equal @processing.id, Kalibro::Processing.first_processing_of(@repository_id).id | ||
90 | + end | ||
91 | + | ||
92 | + should 'get last processing of a repository' do | ||
93 | + Kalibro::Processing.expects(:request).with('Processing', :last_processing, {:repository_id => @repository_id}).returns({:processing => @hash}) | ||
94 | + assert_equal @processing.id, Kalibro::Processing.last_processing_of(@repository_id).id | ||
95 | + end | ||
96 | + | ||
97 | + should 'get first processing after a date of a repository' do | ||
98 | + Kalibro::Processing.expects(:request).with('Processing', :first_processing_after, {:repository_id => @repository_id, :date => @processing.date}).returns({:processing => @hash}) | ||
99 | + assert_equal @processing.id, Kalibro::Processing.first_processing_after(@repository_id, @processing.date).id | ||
100 | + end | ||
101 | + | ||
102 | + should 'get last processing before a date of a repository' do | ||
103 | + Kalibro::Processing.expects(:request).with('Processing', :last_processing_before, {:repository_id => @repository_id, :date => @processing.date}).returns({:processing => @hash}) | ||
104 | + assert_equal @processing.id, Kalibro::Processing.last_processing_before(@repository_id, @processing.date).id | ||
105 | + end | ||
106 | + | ||
107 | +=begin | ||
108 | + | ||
109 | + should 'retrieve formatted load time' do | ||
110 | + assert_equal '00:00:14', @processing.formatted_load_time | ||
111 | + end | ||
112 | + | ||
113 | + should 'retrieve formatted analysis time' do | ||
114 | + assert_equal '00:00:01', @processing.formatted_analysis_time | ||
115 | + end | ||
116 | + | ||
117 | + should 'retrive complex module' do | ||
118 | + assert_equal @hash[:source_tree][:child][0][:child].first, @processing.node("org.Window").to_hash | ||
119 | + end | ||
120 | + | ||
121 | + should 'return source tree node when nil is given' do | ||
122 | + assert_equal @hash[:source_tree], @processing.node(nil).to_hash | ||
123 | + end | ||
124 | + | ||
125 | + should 'return source tree node when project name is given' do | ||
126 | + assert_equal @hash[:source_tree], @processing.node(@processing.project.name).to_hash | ||
127 | + end | ||
128 | + | ||
129 | + should 'return correct node when module name is given' do | ||
130 | + assert_equal @hash[:source_tree][:child][2], @processing.node("main").to_hash | ||
131 | + end | ||
132 | +=end | ||
133 | +end |
plugins/mezuro/test/unit/kalibro/project_result_test.rb
@@ -1,88 +0,0 @@ | @@ -1,88 +0,0 @@ | ||
1 | -require "test_helper" | ||
2 | - | ||
3 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures" | ||
4 | - | ||
5 | -class ProjectResultTest < ActiveSupport::TestCase | ||
6 | - | ||
7 | - def setup | ||
8 | - @hash = ProjectResultFixtures.project_result_hash | ||
9 | - @project_result = ProjectResultFixtures.project_result | ||
10 | - | ||
11 | - @project_name = @project_result.project.name | ||
12 | - @date = @project_result.date | ||
13 | - @flag = DateTime.now.sec % 2 == 0 #random choose between true or false | ||
14 | - | ||
15 | - @request = {:project_name => @project_name} | ||
16 | - @request_with_date = {:project_name => @project_name, :date => @date} | ||
17 | - @flag_response = {:has_results => @flag} | ||
18 | - @result_response = {:project_result => @project_result.to_hash} | ||
19 | - end | ||
20 | - | ||
21 | - should 'create project result from hash' do | ||
22 | - assert_equal @project_result.analysis_time, Kalibro::ProjectResult.new(@hash).analysis_time | ||
23 | - end | ||
24 | - | ||
25 | - should 'convert project result to hash' do | ||
26 | - assert_equal @hash, @project_result.to_hash | ||
27 | - end | ||
28 | - | ||
29 | - should 'get last result' do | ||
30 | - Kalibro::ProjectResult.expects(:request).with('ProjectResult',:get_last_result_of, @request).returns(@result_response) | ||
31 | - assert_equal @project_result.analysis_time , Kalibro::ProjectResult.last_result(@project_name).analysis_time | ||
32 | - end | ||
33 | - | ||
34 | - should 'get first result' do | ||
35 | - Kalibro::ProjectResult.expects(:request).with('ProjectResult',:get_first_result_of, @request).returns(@result_response) | ||
36 | - assert_equal @project_result.analysis_time, Kalibro::ProjectResult.first_result(@project_name).analysis_time | ||
37 | - end | ||
38 | - | ||
39 | - should 'get first result after date' do | ||
40 | - Kalibro::ProjectResult.expects(:request).with('ProjectResult',:get_first_result_after, @request_with_date).returns(@result_response) | ||
41 | - assert_equal @project_result.analysis_time, Kalibro::ProjectResult.first_result_after(@project_name, @date).analysis_time | ||
42 | - end | ||
43 | - | ||
44 | - should 'get last result before date' do | ||
45 | - Kalibro::ProjectResult.expects(:request).with('ProjectResult',:get_last_result_before, @request_with_date).returns(@result_response) | ||
46 | - assert_equal @project_result.analysis_time, Kalibro::ProjectResult.last_result_before(@project_name, @date).analysis_time | ||
47 | - end | ||
48 | - | ||
49 | - should 'verify if project has results' do | ||
50 | - Kalibro::ProjectResult.expects(:request).with('ProjectResult',:has_results_for, @request).returns(@flag_response) | ||
51 | - assert_equal @flag, Kalibro::ProjectResult.has_results?(@project_name) | ||
52 | - end | ||
53 | - | ||
54 | - should 'verify if project has results before date' do | ||
55 | - Kalibro::ProjectResult.expects(:request).with('ProjectResult',:has_results_before, @request_with_date).returns(@flag_response) | ||
56 | - assert_equal @flag, Kalibro::ProjectResult.has_results_before?(@project_name, @date) | ||
57 | - end | ||
58 | - | ||
59 | - should 'verify if project has results after date' do | ||
60 | - Kalibro::ProjectResult.expects(:request).with('ProjectResult',:has_results_after, @request_with_date).returns(@flag_response) | ||
61 | - assert_equal @flag, Kalibro::ProjectResult.has_results_after?(@project_name, @date) | ||
62 | - end | ||
63 | - | ||
64 | - should 'retrieve formatted load time' do | ||
65 | - assert_equal '00:00:14', @project_result.formatted_load_time | ||
66 | - end | ||
67 | - | ||
68 | - should 'retrieve formatted analysis time' do | ||
69 | - assert_equal '00:00:01', @project_result.formatted_analysis_time | ||
70 | - end | ||
71 | - | ||
72 | - should 'retrive complex module' do | ||
73 | - assert_equal @hash[:source_tree][:child][0][:child].first, @project_result.node("org.Window").to_hash | ||
74 | - end | ||
75 | - | ||
76 | - should 'return source tree node when nil is given' do | ||
77 | - assert_equal @hash[:source_tree], @project_result.node(nil).to_hash | ||
78 | - end | ||
79 | - | ||
80 | - should 'return source tree node when project name is given' do | ||
81 | - assert_equal @hash[:source_tree], @project_result.node(@project_result.project.name).to_hash | ||
82 | - end | ||
83 | - | ||
84 | - should 'return correct node when module name is given' do | ||
85 | - assert_equal @hash[:source_tree][:child][2], @project_result.node("main").to_hash | ||
86 | - end | ||
87 | - | ||
88 | -end |