diff options
author | James Lopez <james@jameslopez.es> | 2016-11-21 17:15:25 +0100 |
---|---|---|
committer | James Lopez <james@jameslopez.es> | 2017-01-17 11:32:54 +0100 |
commit | a998276223510ceee67f686dfc3ef536c0252c5a (patch) | |
tree | dbc30d5ef3b26fcad6c856c7741d8d32cccf7b23 | |
parent | 3268e3779166c7ddf47ecc0d78397cd75cf2f0e8 (diff) | |
download | gitlab-ce-a998276223510ceee67f686dfc3ef536c0252c5a.tar.gz |
added analytics stage serializer and moved some info to the stage classes from the controller
-rw-r--r-- | app/serializers/analytics_stage_entity.rb | 12 | ||||
-rw-r--r-- | app/serializers/analytics_stage_serializer.rb | 3 | ||||
-rw-r--r-- | lib/gitlab/cycle_analytics/base_stage.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/cycle_analytics/code_stage.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/cycle_analytics/issue_stage.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/cycle_analytics/plan_stage.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/cycle_analytics/production_stage.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/cycle_analytics/review_stage.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/cycle_analytics/staging_stage.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/cycle_analytics/test_stage.rb | 6 |
10 files changed, 59 insertions, 0 deletions
diff --git a/app/serializers/analytics_stage_entity.rb b/app/serializers/analytics_stage_entity.rb new file mode 100644 index 00000000000..72a587c8c1d --- /dev/null +++ b/app/serializers/analytics_stage_entity.rb @@ -0,0 +1,12 @@ +class AnalyticsStageEntity < Grape::Entity + include EntityDateHelper + + expose :stage, as: :title do |object| + object[:stage].to_s.capitalize + end + expose :description + + expose :median, as: :value do |stage| + stage[:median] && !stage[:median].zero? ? distance_of_time_in_words(stage[:median]) : nil + end +end diff --git a/app/serializers/analytics_stage_serializer.rb b/app/serializers/analytics_stage_serializer.rb new file mode 100644 index 00000000000..613cf6874d8 --- /dev/null +++ b/app/serializers/analytics_stage_serializer.rb @@ -0,0 +1,3 @@ +class AnalyticsStageSerializer < BaseSerializer + entity AnalyticsStageEntity +end diff --git a/lib/gitlab/cycle_analytics/base_stage.rb b/lib/gitlab/cycle_analytics/base_stage.rb index 70f1e1018c9..49d1e6304a9 100644 --- a/lib/gitlab/cycle_analytics/base_stage.rb +++ b/lib/gitlab/cycle_analytics/base_stage.rb @@ -1,6 +1,8 @@ module Gitlab module CycleAnalytics class BaseStage + attr_reader :stage, :description + def initialize(project:, options:, stage: stage) @project = project @options = options diff --git a/lib/gitlab/cycle_analytics/code_stage.rb b/lib/gitlab/cycle_analytics/code_stage.rb index 9d28393ce53..f72989c9a72 100644 --- a/lib/gitlab/cycle_analytics/code_stage.rb +++ b/lib/gitlab/cycle_analytics/code_stage.rb @@ -1,6 +1,12 @@ module Gitlab module CycleAnalytics class CodeStage < BaseStage + def initialize(*args) + super(*args) + + @description = "Time until first merge request" + end + def median @fetcher.calculate_metric(:code, Issue::Metrics.arel_table[:first_mentioned_in_commit_at], diff --git a/lib/gitlab/cycle_analytics/issue_stage.rb b/lib/gitlab/cycle_analytics/issue_stage.rb index 6793cc77976..a2ada238cd2 100644 --- a/lib/gitlab/cycle_analytics/issue_stage.rb +++ b/lib/gitlab/cycle_analytics/issue_stage.rb @@ -1,6 +1,12 @@ module Gitlab module CycleAnalytics class IssueStage < BaseStage + def initialize(*args) + super(*args) + + @description = "Time before an issue gets scheduled" + end + def median @fetcher.calculate_metric(:issue, Issue.arel_table[:created_at], diff --git a/lib/gitlab/cycle_analytics/plan_stage.rb b/lib/gitlab/cycle_analytics/plan_stage.rb index 772237087c0..c836068c4ef 100644 --- a/lib/gitlab/cycle_analytics/plan_stage.rb +++ b/lib/gitlab/cycle_analytics/plan_stage.rb @@ -1,6 +1,12 @@ module Gitlab module CycleAnalytics class PlanStage < BaseStage + def initialize(*args) + super(*args) + + @description = "Time before an issue starts implementation" + end + def median @fetcher.calculate_metric(:plan, [Issue::Metrics.arel_table[:first_associated_with_milestone_at], diff --git a/lib/gitlab/cycle_analytics/production_stage.rb b/lib/gitlab/cycle_analytics/production_stage.rb index 2fb087a8cac..d46d37e1acc 100644 --- a/lib/gitlab/cycle_analytics/production_stage.rb +++ b/lib/gitlab/cycle_analytics/production_stage.rb @@ -1,6 +1,12 @@ module Gitlab module CycleAnalytics class ProductionStage < BaseStage + def initialize(*args) + super(*args) + + @description = "From issue creation until deploy to production" + end + def median @fetcher.calculate_metric(:production, Issue.arel_table[:created_at], diff --git a/lib/gitlab/cycle_analytics/review_stage.rb b/lib/gitlab/cycle_analytics/review_stage.rb index ec9f07319e8..4159ba5d70d 100644 --- a/lib/gitlab/cycle_analytics/review_stage.rb +++ b/lib/gitlab/cycle_analytics/review_stage.rb @@ -1,6 +1,12 @@ module Gitlab module CycleAnalytics class ReviewStage < BaseStage + def initialize(*args) + super(*args) + + @description = "Time between merge request creation and merge/close" + end + def median @fetcher.calculate_metric(:review, MergeRequest.arel_table[:created_at], diff --git a/lib/gitlab/cycle_analytics/staging_stage.rb b/lib/gitlab/cycle_analytics/staging_stage.rb index 9c67a2aa6fe..cb4398f15ac 100644 --- a/lib/gitlab/cycle_analytics/staging_stage.rb +++ b/lib/gitlab/cycle_analytics/staging_stage.rb @@ -1,6 +1,12 @@ module Gitlab module CycleAnalytics class StagingStage < BaseStage + def initialize(*args) + super(*args) + + @description = "From merge request merge until deploy to production" + end + def median @fetcher.calculate_metric(:staging, MergeRequest::Metrics.arel_table[:merged_at], diff --git a/lib/gitlab/cycle_analytics/test_stage.rb b/lib/gitlab/cycle_analytics/test_stage.rb index 6bedfdbba61..3ab93bebd87 100644 --- a/lib/gitlab/cycle_analytics/test_stage.rb +++ b/lib/gitlab/cycle_analytics/test_stage.rb @@ -1,6 +1,12 @@ module Gitlab module CycleAnalytics class TestStage < BaseStage + def initialize(*args) + super(*args) + + @description = "Total test time for all commits/merges" + end + def median @fetcher.calculate_metric(:test, MergeRequest::Metrics.arel_table[:latest_build_started_at], |