From 25fe100e06c9b5cdc0fd6af6d63879f8db66acd6 Mon Sep 17 00:00:00 2001 From: tooyosi Date: Mon, 18 Nov 2024 22:11:05 +0000 Subject: [PATCH 1/2] add extractor name to prediction request for new workflow --- app/services/batch/prediction/create_job.rb | 10 +++++++++- lib/bajor/client.rb | 4 ++-- spec/lib/bajor/client_spec.rb | 6 +++--- spec/services/batch/prediction/create_job_spec.rb | 5 +++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/services/batch/prediction/create_job.rb b/app/services/batch/prediction/create_job.rb index 007f5a0..f43353a 100644 --- a/app/services/batch/prediction/create_job.rb +++ b/app/services/batch/prediction/create_job.rb @@ -14,7 +14,15 @@ def initialize(prediction_job, bajor_client = Bajor::Client.new) def run begin - bajor_job_url = bajor_client.create_prediction_job(prediction_job.manifest_url) + subject_set_id = prediction_job.subject_set_id + context = Context.where(active_subject_set_id: subject_set_id).or(Context.where(pool_subject_set_id: subject_set_id)).order(Arel.sql("CASE WHEN active_subject_set_id = #{subject_set_id} THEN 0 ELSE 1 END")) + + workflow_name = nil + if context.first.present? + workflow_name = context.first.extractor_name + end + + bajor_job_url = bajor_client.create_prediction_job(prediction_job.manifest_url, workflow_name) prediction_job.update(state: :submitted, service_job_url: bajor_job_url, message: '') rescue Bajor::Client::Error => e # mark the jobs as failed and record the client error message diff --git a/lib/bajor/client.rb b/lib/bajor/client.rb index 20517d6..7052ff8 100644 --- a/lib/bajor/client.rb +++ b/lib/bajor/client.rb @@ -36,10 +36,10 @@ def create_training_job(manifest_path, workflow_name='cosmic_dawn') bajor_training_job_tracking_url(bajor_response['id']) end - def create_prediction_job(manifest_url) + def create_prediction_job(manifest_url, workflow_name='cosmic_dawn') bajor_response = self.class.post( '/prediction/jobs/', - body: { manifest_url: manifest_url }.to_json, + body: { manifest_url: manifest_url, opts: { 'workflow_name': workflow_name } }.to_json, headers: JSON_HEADERS ) diff --git a/spec/lib/bajor/client_spec.rb b/spec/lib/bajor/client_spec.rb index 4056906..b942737 100644 --- a/spec/lib/bajor/client_spec.rb +++ b/spec/lib/bajor/client_spec.rb @@ -6,6 +6,8 @@ RSpec.describe Bajor::Client do let(:bajor_client) { described_class.new } let(:bajor_host) { 'https://bajor.zooniverse.org' } + let(:run_opts) { '--schema cosmic_dawn' } + let(:workflow_name) { 'cosmic_dawn' } let(:request_headers) do { 'Accept' => 'application/json', @@ -19,8 +21,6 @@ describe 'create_training_job' do let(:request_url) { "#{bajor_host}/training/jobs/" } let(:catalogue_manifest_path) { 'training_catalogues/manifest_path.csv' } - let(:run_opts) { '--schema cosmic_dawn' } - let(:workflow_name) { 'cosmic_dawn' } let(:request_body) do { manifest_path: catalogue_manifest_path, @@ -93,7 +93,7 @@ let(:request_url) { "#{bajor_host}/prediction/jobs/" } let(:manifest_url) { 'https://manifest-host.zooniverse.org/manifest.csv' } let(:request_body) do - { manifest_url: manifest_url } + { manifest_url: manifest_url, opts: { workflow_name: workflow_name} } end let(:job_id) { '3ed68115-dc36-4f66-838c-a52869031c9c' } let(:bajor_response_body) do diff --git a/spec/services/batch/prediction/create_job_spec.rb b/spec/services/batch/prediction/create_job_spec.rb index 1f05fcd..866e9ec 100644 --- a/spec/services/batch/prediction/create_job_spec.rb +++ b/spec/services/batch/prediction/create_job_spec.rb @@ -9,7 +9,7 @@ PredictionJob.new( manifest_url: manifest_url, state: :pending, - subject_set_id: 1, + subject_set_id: 55, probability_threshold: 0.5, randomisation_factor: 0.5 ) @@ -32,8 +32,9 @@ end it 'calls the bajor client service to create a prediction job' do + context = Context.find_by(active_subject_set_id: prediction_job.subject_set_id) prediction_create_job.run - expect(bajor_client_double).to have_received(:create_prediction_job).with(manifest_url).once + expect(bajor_client_double).to have_received(:create_prediction_job).with(manifest_url, context.extractor_name).once end it 'updates the state tracking info on the prediction job resource' do From 764236d969fdcc3c57991f5fb136d0a493e8d2ba Mon Sep 17 00:00:00 2001 From: tooyosi Date: Mon, 18 Nov 2024 22:23:48 +0000 Subject: [PATCH 2/2] fix test --- spec/services/batch/prediction/create_job_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/services/batch/prediction/create_job_spec.rb b/spec/services/batch/prediction/create_job_spec.rb index 866e9ec..e682a37 100644 --- a/spec/services/batch/prediction/create_job_spec.rb +++ b/spec/services/batch/prediction/create_job_spec.rb @@ -5,11 +5,12 @@ RSpec.describe Batch::Prediction::CreateJob do describe '#run' do let(:manifest_url) { 'https://manifest-host.zooniverse.org/manifest.csv' } + let(:context){Context.first} let(:prediction_job) do PredictionJob.new( manifest_url: manifest_url, state: :pending, - subject_set_id: 55, + subject_set_id: context.active_subject_set_id, probability_threshold: 0.5, randomisation_factor: 0.5 ) @@ -32,7 +33,6 @@ end it 'calls the bajor client service to create a prediction job' do - context = Context.find_by(active_subject_set_id: prediction_job.subject_set_id) prediction_create_job.run expect(bajor_client_double).to have_received(:create_prediction_job).with(manifest_url, context.extractor_name).once end