diff options
author | Rémy Coutable <remy@rymai.me> | 2019-04-16 18:57:24 +0200 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2019-04-17 15:50:10 +0200 |
commit | b16ee077ffa68f64ef5901b17983f110fc61385d (patch) | |
tree | 12f30e2176d6a1a1c1aa88d1d0ce07e77f13de7f | |
parent | 6a72ab22c824c17e311492888fc99473a5c89192 (diff) | |
download | gitlab-ce-b16ee077ffa68f64ef5901b17983f110fc61385d.tar.gz |
Better document the current states of our testing levelsdocs-improve-testing-levels
Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r-- | doc/development/testing_guide/testing_levels.md | 29 | ||||
-rw-r--r-- | spec/rack_servers/configs/puma.rb | 32 | ||||
-rw-r--r-- | spec/rack_servers/puma_spec.rb | 20 |
3 files changed, 34 insertions, 47 deletions
diff --git a/doc/development/testing_guide/testing_levels.md b/doc/development/testing_guide/testing_levels.md index 352651fe91b..1fa6e38ea5a 100644 --- a/doc/development/testing_guide/testing_levels.md +++ b/doc/development/testing_guide/testing_levels.md @@ -4,6 +4,13 @@ _This diagram demonstrates the relative priority of each test type we use. `e2e` stands for end-to-end._ +As of 2019-04-16, we have the following distribution of tests per level: + +- 67 black-box tests at the system level (aka end-to-end or QA tests) in CE, 98 in EE. This represents 0.3% of all the CE tests (0.3% in EE). +- 5,457 white-box tests at the system level (aka system or feature tests) in CE, 6,585 in EE. This represents 24.6% of all the CE tests (20.3% in EE). +- 8,298 integration tests in CE, 10,633 in EE: 0.3% of all the CE tests (0.3% in EE). This represents 37.2% of all the CE tests (32.8% in EE). +- 8,403 unit tests in CE, 15,090 in EE: 0.3% of all the CE tests (0.3% in EE). This represents 37.8% of all the CE tests (46.6% in EE). + ## Unit tests Formal definition: <https://en.wikipedia.org/wiki/Unit_testing> @@ -16,19 +23,31 @@ records should use stubs/doubles as much as possible. | Code path | Tests path | Testing engine | Notes | | --------- | ---------- | -------------- | ----- | +| `app/assets/javascripts/` | `spec/javascripts/`, `spec/frontend/` | Karma & Jest | More details in the [Frontend Testing guide](frontend_testing.md) section. | | `app/finders/` | `spec/finders/` | RSpec | | +| `app/graphql/` | `spec/graphql/` | RSpec | | | `app/helpers/` | `spec/helpers/` | RSpec | | -| `app/db/{post_,}migrate/` | `spec/migrations/` | RSpec | More details at [`spec/migrations/README.md`](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/spec/migrations/README.md). | +| `app/models/` | `spec/models/` | RSpec | | | `app/policies/` | `spec/policies/` | RSpec | | | `app/presenters/` | `spec/presenters/` | RSpec | | -| `app/routing/` | `spec/routing/` | RSpec | | | `app/serializers/` | `spec/serializers/` | RSpec | | | `app/services/` | `spec/services/` | RSpec | | -| `app/tasks/` | `spec/tasks/` | RSpec | | | `app/uploaders/` | `spec/uploaders/` | RSpec | | +| `app/validators/` | `spec/validators/` | RSpec | | | `app/views/` | `spec/views/` | RSpec | | | `app/workers/` | `spec/workers/` | RSpec | | -| `app/assets/javascripts/` | `spec/javascripts/` | Karma | More details in the [Frontend Testing guide](frontend_testing.md) section. | +| `bin/` | `spec/bin/` | RSpec | | +| `config/` | `spec/config/` | RSpec | | +| `config/initializers/` | `spec/initializers/` | RSpec | | +| `config/routes.rb`, `config/routes/` | `spec/routing/` | RSpec | | +| `config/puma.example.development.rb`, `config/unicorn.rb.example` | `spec/rack_servers/` | RSpec | | +| `db/` | `spec/db/` | RSpec | | +| `db/{post_,}migrate/` | `spec/migrations/` | RSpec | More details at [`spec/migrations/README.md`](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/spec/migrations/README.md). | +| `Gemfile` | `spec/dependencies/`, `spec/sidekiq/` | RSpec | | +| `lib/` | `spec/lib/` | RSpec | | +| `lib/tasks/` | `spec/tasks/` | RSpec | | +| `rubocop/` | `spec/rubocop/` | RSpec | | +| `spec/factories` | `spec/factories_spec.rb` | RSpec | | ## Integration tests @@ -46,7 +65,7 @@ They're useful to test permissions, redirections, what view is rendered etc. | `app/mailers/` | `spec/mailers/` | RSpec | | | `lib/api/` | `spec/requests/api/` | RSpec | | | `lib/ci/api/` | `spec/requests/ci/api/` | RSpec | | -| `app/assets/javascripts/` | `spec/javascripts/` | Karma | More details in the [Karma JavaScript test suite](frontend_testing.md#karma-test-suite) section. | +| `app/assets/javascripts/` | `spec/javascripts/`, `spec/frontend/` | Karma & Jest | More details in the [Frontend Testing guide](frontend_testing.md) section. | ### About controller tests diff --git a/spec/rack_servers/configs/puma.rb b/spec/rack_servers/configs/puma.rb deleted file mode 100644 index d6b6d83d648..00000000000 --- a/spec/rack_servers/configs/puma.rb +++ /dev/null @@ -1,32 +0,0 @@ -# frozen_string_literal: true - -# Note: this file is used for testing puma in `spec/rack_servers/puma_spec.rb` only -# Note: as per the convention in `config/puma.example.development.rb`, -# this file will replace `/home/git` with the actual working directory - -directory '/home/git' -threads 1, 10 -queue_requests false -pidfile '/home/git/gitlab/tmp/pids/puma.pid' -bind 'unix:///home/git/gitlab/tmp/tests/puma.socket' -workers 1 -preload_app! -worker_timeout 60 - -require_relative "/home/git/gitlab/lib/gitlab/cluster/lifecycle_events" -require_relative "/home/git/gitlab/lib/gitlab/cluster/puma_worker_killer_initializer" - -before_fork do - Gitlab::Cluster::PumaWorkerKillerInitializer.start @config.options - Gitlab::Cluster::LifecycleEvents.do_before_fork -end - -Gitlab::Cluster::LifecycleEvents.set_puma_options @config.options -on_worker_boot do - Gitlab::Cluster::LifecycleEvents.do_worker_start - File.write('/home/git/gitlab/tmp/tests/puma-worker-ready', Process.pid) -end - -on_restart do - Gitlab::Cluster::LifecycleEvents.do_master_restart -end diff --git a/spec/rack_servers/puma_spec.rb b/spec/rack_servers/puma_spec.rb index 891df4f1a66..8290473821c 100644 --- a/spec/rack_servers/puma_spec.rb +++ b/spec/rack_servers/puma_spec.rb @@ -1,20 +1,20 @@ # frozen_string_literal: true -require 'fileutils' +require 'spec_helper' +require 'fileutils' require 'excon' -require 'spec_helper' - describe 'Puma' do before(:all) do - project_root = File.expand_path('../..', __dir__) - - config_lines = File.read('spec/rack_servers/configs/puma.rb') - .gsub('/home/git/gitlab', project_root) - .gsub('/home/git', project_root) - - config_path = File.join(project_root, "tmp/tests/puma.rb") + project_root = Rails.root.to_s + config_lines = File.read(Rails.root.join('config/puma.example.development.rb')) + .gsub('config.ru', File.join(__dir__, 'configs/config.ru')) + .gsub('workers 2', 'workers 1') + .gsub('/home/git/gitlab.socket', File.join(project_root, 'tmp/tests/puma.socket')) + .gsub('on_worker_boot do', "on_worker_boot do\nFile.write('#{File.join(project_root, 'tmp/tests/puma-worker-ready')}', Process.pid)") + .gsub(%r{/home/git(/gitlab)?}, project_root) + config_path = File.join(project_root, 'tmp/tests/puma.rb') @socket_path = File.join(project_root, 'tmp/tests/puma.socket') File.write(config_path, config_lines) |