Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/requests/api/ci')
-rw-r--r--spec/requests/api/ci/jobs_spec.rb8
-rw-r--r--spec/requests/api/ci/runner/jobs_request_post_spec.rb61
2 files changed, 67 insertions, 2 deletions
diff --git a/spec/requests/api/ci/jobs_spec.rb b/spec/requests/api/ci/jobs_spec.rb
index c7b7131a600..19ac673308b 100644
--- a/spec/requests/api/ci/jobs_spec.rb
+++ b/spec/requests/api/ci/jobs_spec.rb
@@ -463,6 +463,14 @@ RSpec.describe API::Ci::Jobs, feature_category: :continuous_integration do
it { expect(response).to have_gitlab_http_status(:bad_request) }
end
+
+ it_behaves_like 'an endpoint with keyset pagination' do
+ let_it_be(:another_build) { create(:ci_build, :success, :tags, project: project, pipeline: pipeline) }
+
+ let(:first_record) { project.builds.last }
+ let(:second_record) { project.builds.first }
+ let(:api_call) { api("/projects/#{project.id}/jobs", user) }
+ end
end
context 'unauthorized user' do
diff --git a/spec/requests/api/ci/runner/jobs_request_post_spec.rb b/spec/requests/api/ci/runner/jobs_request_post_spec.rb
index ca57208eb1d..7f9c9a13311 100644
--- a/spec/requests/api/ci/runner/jobs_request_post_spec.rb
+++ b/spec/requests/api/ci/runner/jobs_request_post_spec.rb
@@ -260,7 +260,7 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state, feature_catego
expect(runner.reload.platform).to eq('darwin')
expect(json_response['id']).to eq(job.id)
expect(json_response['token']).to eq(job.token)
- expect(json_response['job_info']).to eq(expected_job_info)
+ expect(json_response['job_info']).to include(expected_job_info)
expect(json_response['git_info']).to eq(expected_git_info)
expect(json_response['image']).to eq(
{ 'name' => 'image:1.0', 'entrypoint' => '/bin/sh', 'ports' => [], 'pull_policy' => nil }
@@ -672,7 +672,7 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state, feature_catego
expect(runner.reload.platform).to eq('darwin')
expect(json_response['id']).to eq(job.id)
expect(json_response['token']).to eq(job.token)
- expect(json_response['job_info']).to eq(expected_job_info)
+ expect(json_response['job_info']).to include(expected_job_info)
expect(json_response['git_info']).to eq(expected_git_info)
expect(json_response['artifacts']).to eq(expected_artifacts)
end
@@ -785,6 +785,63 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state, feature_catego
end
end
end
+
+ describe 'time_in_queue_seconds support' do
+ let(:job) do
+ create(:ci_build, :pending, :queued, pipeline: pipeline,
+ name: 'spinach', stage: 'test', stage_idx: 0,
+ queued_at: 60.seconds.ago)
+ end
+
+ it 'presents the time_in_queue_seconds info in the payload' do
+ request_job
+
+ expect(response).to have_gitlab_http_status(:created)
+ expect(json_response['job_info']['time_in_queue_seconds']).to be >= 60.seconds
+ end
+ end
+
+ describe 'project_jobs_running_on_instance_runners_count support' do
+ context 'when runner is not instance_type' do
+ it 'presents the project_jobs_running_on_instance_runners_count info in the payload as +Inf' do
+ request_job
+
+ expect(response).to have_gitlab_http_status(:created)
+ expect(json_response['job_info']['project_jobs_running_on_instance_runners_count']).to eq('+Inf')
+ end
+ end
+
+ context 'when runner is instance_type' do
+ let(:project) { create(:project, namespace: group, shared_runners_enabled: true) }
+ let(:runner) { create(:ci_runner, :instance) }
+
+ context 'when less than Project::INSTANCE_RUNNER_RUNNING_JOBS_MAX_BUCKET running jobs assigned to an instance runner are on the list' do
+ it 'presents the project_jobs_running_on_instance_runners_count info in the payload as a correct number in a string format' do
+ request_job
+
+ expect(response).to have_gitlab_http_status(:created)
+ expect(json_response['job_info']['project_jobs_running_on_instance_runners_count']).to eq('0')
+ end
+ end
+
+ context 'when at least Project::INSTANCE_RUNNER_RUNNING_JOBS_MAX_BUCKET running jobs assigned to an instance runner are on the list' do
+ let(:other_runner) { create(:ci_runner, :instance) }
+
+ before do
+ stub_const('Project::INSTANCE_RUNNER_RUNNING_JOBS_MAX_BUCKET', 1)
+
+ create(:ci_running_build, runner: other_runner, runner_type: other_runner.runner_type, project: project)
+ end
+
+ it 'presents the project_jobs_running_on_instance_runners_count info in the payload as Project::INSTANCE_RUNNER_RUNNING_JOBS_MAX_BUCKET+' do
+ request_job
+
+ expect(response).to have_gitlab_http_status(:created)
+ expect(json_response['job_info']['project_jobs_running_on_instance_runners_count']).to eq('1+')
+ end
+ end
+ end
+ end
end
describe 'port support' do