From 7991b83e72e69a12733d4e9c02ed967befd9d8a7 Mon Sep 17 00:00:00 2001 From: Samad Yar Khan Date: Thu, 18 Apr 2024 16:52:09 +0530 Subject: [PATCH] Make pure funcs for deployment freq and trends --- .../dora/service/deployments/analytics.py | 84 +++++++++++-------- 1 file changed, 51 insertions(+), 33 deletions(-) diff --git a/apiserver/dora/service/deployments/analytics.py b/apiserver/dora/service/deployments/analytics.py index 57475c354..6d7ea8401 100644 --- a/apiserver/dora/service/deployments/analytics.py +++ b/apiserver/dora/service/deployments/analytics.py @@ -97,39 +97,8 @@ def get_team_deployment_frequency_metrics( ) ) - team_daily_deployments = generate_expanded_buckets( - team_successful_deployments, interval, "conducted_at", "daily" - ) - team_weekly_deployments = generate_expanded_buckets( - team_successful_deployments, interval, "conducted_at", "weekly" - ) - team_monthly_deployments = generate_expanded_buckets( - team_successful_deployments, interval, "conducted_at", "monthly" - ) - - daily_deployment_frequency = ( - self._get_deployment_frequency_from_date_to_deployment_map( - team_daily_deployments - ) - ) - - weekly_deployment_frequency = ( - self._get_deployment_frequency_from_date_to_deployment_map( - team_weekly_deployments - ) - ) - - monthly_deployment_frequency = ( - self._get_deployment_frequency_from_date_to_deployment_map( - team_monthly_deployments - ) - ) - - return DeploymentFrequencyMetrics( - len(team_successful_deployments), - daily_deployment_frequency, - weekly_deployment_frequency, - monthly_deployment_frequency, + return self._get_deployment_frequency_metrics( + team_successful_deployments, interval ) def get_weekly_deployment_frequency_trends( @@ -218,6 +187,55 @@ def _get_deployment_frequency_from_date_to_deployment_map( return get_average_of_dict_values(date_to_deployment_count_map) + def _get_deployment_frequency_metrics( + self, successful_deployments: List[Deployment], interval: Interval + ) -> DeploymentFrequencyMetrics: + + team_daily_deployments = generate_expanded_buckets( + successful_deployments, interval, "conducted_at", "daily" + ) + team_weekly_deployments = generate_expanded_buckets( + successful_deployments, interval, "conducted_at", "weekly" + ) + team_monthly_deployments = generate_expanded_buckets( + successful_deployments, interval, "conducted_at", "monthly" + ) + + daily_deployment_frequency = ( + self._get_deployment_frequency_from_date_to_deployment_map( + team_daily_deployments + ) + ) + + weekly_deployment_frequency = ( + self._get_deployment_frequency_from_date_to_deployment_map( + team_weekly_deployments + ) + ) + + monthly_deployment_frequency = ( + self._get_deployment_frequency_from_date_to_deployment_map( + team_monthly_deployments + ) + ) + + return DeploymentFrequencyMetrics( + len(successful_deployments), + daily_deployment_frequency, + weekly_deployment_frequency, + monthly_deployment_frequency, + ) + + def _get_weekly_deployment_frequency_trends( + self, successful_deployments: List[Deployment], interval: Interval + ) -> Dict[datetime, int]: + + team_weekly_deployments = generate_expanded_buckets( + successful_deployments, interval, "conducted_at", "weekly" + ) + + return get_key_to_count_map_from_key_to_list_map(team_weekly_deployments) + def get_deployment_analytics_service() -> DeploymentAnalyticsService: return DeploymentAnalyticsService(get_deployments_service(), CodeRepoService())