From 9f0cea5f74bf821de69ee44a8ed1ca07df46f7f0 Mon Sep 17 00:00:00 2001 From: Alper Akgun <aakgun@gitlab.com> Date: Mon, 10 Mar 2025 19:38:46 +0300 Subject: [PATCH] Mlflow get run to return less metrics data Changelog: changed --- lib/api/entities/ml/mlflow/run.rb | 2 +- spec/lib/api/entities/ml/mlflow/get_run_spec.rb | 9 +++++---- spec/lib/api/entities/ml/mlflow/run_spec.rb | 8 ++++---- spec/lib/api/entities/ml/mlflow/search_runs_spec.rb | 8 ++++---- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/api/entities/ml/mlflow/run.rb b/lib/api/entities/ml/mlflow/run.rb index 10e2434521d8c..7d8ff8546beac 100644 --- a/lib/api/entities/ml/mlflow/run.rb +++ b/lib/api/entities/ml/mlflow/run.rb @@ -7,7 +7,7 @@ module Mlflow class Run < Grape::Entity expose :itself, using: RunInfo, as: :info expose :data do - expose :metrics, using: Metric + expose :latest_metrics, as: :metrics, using: Metric expose :params, using: KeyValue expose :metadata, as: :tags, using: KeyValue end diff --git a/spec/lib/api/entities/ml/mlflow/get_run_spec.rb b/spec/lib/api/entities/ml/mlflow/get_run_spec.rb index 513ecdeee3c6b..a9e89b520f6af 100644 --- a/spec/lib/api/entities/ml/mlflow/get_run_spec.rb +++ b/spec/lib/api/entities/ml/mlflow/get_run_spec.rb @@ -3,7 +3,8 @@ require 'spec_helper' RSpec.describe API::Entities::Ml::Mlflow::GetRun, feature_category: :mlops do - let_it_be(:candidate) { build(:ml_candidates, :with_metrics_and_params) } + let_it_be(:candidate) { create(:ml_candidates, :with_metrics_and_params) } + let_it_be(:metrics) { candidate.latest_metrics } subject { described_class.new(candidate).as_json } @@ -16,12 +17,12 @@ end it 'presents the metrics' do - expect(subject.dig(:run, :data, :metrics).size).to eq(candidate.metrics.size) + expect(subject.dig(:run, :data, :metrics).size).to eq(metrics.size) end it 'presents metrics correctly' do presented_metric = subject.dig(:run, :data, :metrics)[0] - metric = candidate.metrics[0] + metric = metrics[0] expect(presented_metric[:key]).to eq(metric.name) expect(presented_metric[:value]).to eq(metric.value) @@ -43,7 +44,7 @@ context 'when candidate has no metrics' do before do - allow(candidate).to receive(:metrics).and_return([]) + allow(candidate).to receive(:latest_metrics).and_return([]) end it 'returns empty data' do diff --git a/spec/lib/api/entities/ml/mlflow/run_spec.rb b/spec/lib/api/entities/ml/mlflow/run_spec.rb index 58148212a7b6f..7fc5e0ba0665f 100644 --- a/spec/lib/api/entities/ml/mlflow/run_spec.rb +++ b/spec/lib/api/entities/ml/mlflow/run_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe API::Entities::Ml::Mlflow::Run do - let_it_be(:candidate) { build(:ml_candidates, :with_metrics_and_params) } + let_it_be(:candidate) { create(:ml_candidates, :with_metrics_and_params) } subject { described_class.new(candidate).as_json } @@ -12,12 +12,12 @@ end it 'presents the metrics' do - expect(subject.dig(:data, :metrics).size).to eq(candidate.metrics.size) + expect(subject.dig(:data, :metrics).size).to eq(candidate.latest_metrics.size) end it 'presents metrics correctly' do presented_metric = subject.dig(:data, :metrics)[0] - metric = candidate.metrics[0] + metric = candidate.latest_metrics[0] expect(presented_metric[:key]).to eq(metric.name) expect(presented_metric[:value]).to eq(metric.value) @@ -39,7 +39,7 @@ context 'when candidate has no metrics' do before do - allow(candidate).to receive(:metrics).and_return([]) + allow(candidate).to receive(:latest_metrics).and_return([]) end it 'returns empty data' do diff --git a/spec/lib/api/entities/ml/mlflow/search_runs_spec.rb b/spec/lib/api/entities/ml/mlflow/search_runs_spec.rb index 6ed59d454fa56..7821b775b8266 100644 --- a/spec/lib/api/entities/ml/mlflow/search_runs_spec.rb +++ b/spec/lib/api/entities/ml/mlflow/search_runs_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' RSpec.describe API::Entities::Ml::Mlflow::SearchRuns, feature_category: :mlops do - let_it_be(:candidates) { [build_stubbed(:ml_candidates, :with_metrics_and_params), build_stubbed(:ml_candidates)] } - + let_it_be(:candidates) { [create(:ml_candidates, :with_metrics_and_params), create(:ml_candidates)] } + let_it_be(:metrics) { candidates[0].latest_metrics } let(:next_page_token) { 'abcdef' } subject { described_class.new({ candidates: candidates, next_page_token: next_page_token }).as_json } @@ -16,11 +16,11 @@ end it 'presents metrics', :aggregate_failures do - expect(subject.dig(:runs, 0, :data, :metrics).size).to eq(candidates[0].metrics.size) + expect(subject.dig(:runs, 0, :data, :metrics).size).to eq(metrics.size) expect(subject.dig(:runs, 1, :data, :metrics).size).to eq(0) presented_metric = subject.dig(:runs, 0, :data, :metrics, 0, :key) - metric = candidates[0].metrics[0].name + metric = metrics[0].name expect(presented_metric).to eq(metric) end -- GitLab