Commit 243f282decae20aee8e6db4d66d4cb77eacaae8f

Authored by Diego Camarinha
Committed by João M. M. da Silva
1 parent 8bfb7c93

[Mezuro] Finished refactoring project result model to processing model.

plugins/mezuro/lib/kalibro/processing.rb 0 → 100644
... ... @@ -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   -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
plugins/mezuro/test/fixtures/processing_fixtures.rb 0 → 100644
... ... @@ -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   -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
plugins/mezuro/test/unit/kalibro/processing_test.rb 0 → 100644
... ... @@ -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   -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