diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-19 12:08:42 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-19 12:08:42 +0300 |
commit | b76ae638462ab0f673e5915986070518dd3f9ad3 (patch) | |
tree | bdab0533383b52873be0ec0eb4d3c66598ff8b91 /spec/requests/api/graphql/ci | |
parent | 434373eabe7b4be9593d18a585fb763f1e5f1a6f (diff) |
Add latest changes from gitlab-org/gitlab@14-2-stable-eev14.2.0-rc42
Diffstat (limited to 'spec/requests/api/graphql/ci')
-rw-r--r-- | spec/requests/api/graphql/ci/jobs_spec.rb | 33 | ||||
-rw-r--r-- | spec/requests/api/graphql/ci/runner_spec.rb | 38 |
2 files changed, 59 insertions, 12 deletions
diff --git a/spec/requests/api/graphql/ci/jobs_spec.rb b/spec/requests/api/graphql/ci/jobs_spec.rb index 10f05efa1b8..e6362fdde88 100644 --- a/spec/requests/api/graphql/ci/jobs_spec.rb +++ b/spec/requests/api/graphql/ci/jobs_spec.rb @@ -117,14 +117,19 @@ RSpec.describe 'Query.project.pipeline' do ) end - it 'avoids N+1 queries' do - control_count = ActiveRecord::QueryRecorder.new do - post_graphql(query, current_user: user, variables: first_n.with(1)) + it 'does not generate N+1 queries', :request_store, :use_sql_query_cache do + post_graphql(query, current_user: user) + + control = ActiveRecord::QueryRecorder.new(skip_cached: false) do + post_graphql(query, current_user: user) end + create(:ci_build, name: 'test-a', pipeline: pipeline) + create(:ci_build, name: 'test-b', pipeline: pipeline) + expect do - post_graphql(query, current_user: user, variables: first_n.with(3)) - end.not_to exceed_query_limit(control_count) + post_graphql(query, current_user: user) + end.not_to exceed_all_query_limit(control) end end end @@ -137,11 +142,19 @@ RSpec.describe 'Query.project.pipeline' do query { project(fullPath: "#{project.full_path}") { pipeline(iid: "#{pipeline.iid}") { - jobs { + stages { nodes { - artifacts { + groups{ nodes { - downloadPath + jobs { + nodes { + artifacts { + nodes { + downloadPath + } + } + } + } } } } @@ -158,7 +171,7 @@ RSpec.describe 'Query.project.pipeline' do post_graphql(query, current_user: user) - job_data = graphql_data.dig('project', 'pipeline', 'jobs', 'nodes').first + job_data = graphql_data_at(:project, :pipeline, :stages, :nodes, :groups, :nodes, :jobs, :nodes).first expect(job_data.dig('artifacts', 'nodes').count).to be(2) end end @@ -169,7 +182,7 @@ RSpec.describe 'Query.project.pipeline' do post_graphql(query, current_user: user) - job_data = graphql_data.dig('project', 'pipeline', 'jobs', 'nodes').first + job_data = graphql_data_at(:project, :pipeline, :stages, :nodes, :groups, :nodes, :jobs, :nodes).first expect(job_data['artifacts']).to be_nil end end diff --git a/spec/requests/api/graphql/ci/runner_spec.rb b/spec/requests/api/graphql/ci/runner_spec.rb index cdd46ca4ecc..74547196445 100644 --- a/spec/requests/api/graphql/ci/runner_spec.rb +++ b/spec/requests/api/graphql/ci/runner_spec.rb @@ -52,14 +52,14 @@ RSpec.describe 'Query.runner(id)' do 'version' => runner.version, 'shortSha' => runner.short_sha, 'revision' => runner.revision, - 'locked' => runner.locked, + 'locked' => false, 'active' => runner.active, 'status' => runner.status.to_s.upcase, 'maximumTimeout' => runner.maximum_timeout, 'accessLevel' => runner.access_level.to_s.upcase, 'runUntagged' => runner.run_untagged, 'ipAddress' => runner.ip_address, - 'runnerType' => 'INSTANCE_TYPE', + 'runnerType' => runner.instance_type? ? 'INSTANCE_TYPE' : 'PROJECT_TYPE', 'jobCount' => 0, 'projectCount' => nil ) @@ -109,6 +109,40 @@ RSpec.describe 'Query.runner(id)' do end end + describe 'for project runner' do + using RSpec::Parameterized::TableSyntax + + where(is_locked: [true, false]) + + with_them do + let(:project_runner) do + create(:ci_runner, :project, description: 'Runner 3', contacted_at: 1.day.ago, active: false, locked: is_locked, + version: 'adfe157', revision: 'b', ip_address: '10.10.10.10', access_level: 1, run_untagged: true) + end + + let(:query) do + wrap_fields(query_graphql_path(query_path, all_graphql_fields_for('CiRunner'))) + end + + let(:query_path) do + [ + [:runner, { id: project_runner.to_global_id.to_s }] + ] + end + + it 'retrieves correct locked value' do + post_graphql(query, current_user: user) + + runner_data = graphql_data_at(:runner) + + expect(runner_data).to match a_hash_including( + 'id' => "gid://gitlab/Ci::Runner/#{project_runner.id}", + 'locked' => is_locked + ) + end + end + end + describe 'for inactive runner' do it_behaves_like 'runner details fetch', :inactive_instance_runner end |