Skip to content

Parallel Tests #5110

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 7 commits into
base: master
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Configure parallel tests and tinker tests to pass
Add worker suffix to search index during tests
colby-swandale committed Oct 15, 2024
commit 7967c18d027b337950680a6010626d34a45d615d
3 changes: 1 addition & 2 deletions app/models/concerns/rubygem_searchable.rb
Original file line number Diff line number Diff line change
@@ -2,8 +2,7 @@ module RubygemSearchable
extend ActiveSupport::Concern

included do
searchkick index_name: Gemcutter::SEARCH_INDEX_NAME,
callbacks: false,
searchkick callbacks: false,
settings: {
number_of_shards: 1,
number_of_replicas: Gemcutter::SEARCH_NUM_REPLICAS,
25 changes: 9 additions & 16 deletions test/models/concerns/rubygem_searchable_test.rb
Original file line number Diff line number Diff line change
@@ -3,10 +3,6 @@
class RubygemSearchableTest < ActiveSupport::TestCase
include SearchKickHelper

setup do
Rubygem.searchkick_index.delete if Rubygem.searchkick_index.exists?
end

context "#search_data" do
setup do
@rubygem = create(:rubygem, name: "example_gem", downloads: 10)
@@ -128,7 +124,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase
create(:rubygem, name: "example-gem", number: "0.0.1")
create(:rubygem, name: "example_1", number: "0.0.1")
create(:rubygem, name: "example.rb", number: "0.0.1")
import_and_refresh

end

should "find all gems with matching tokens" do
@@ -147,7 +143,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase
example_2 = create(:rubygem, name: "example_2")
create(:version, rubygem: example_1, indexed: false)
create(:version, rubygem: example_2)
import_and_refresh

end

should "filter yanked gems from the result" do
@@ -167,7 +163,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase
create(:version, rubygem: example_gem1, description: "some", summary: "some")
create(:version, rubygem: example_gem2, description: "keyword", summary: "some")
create(:version, rubygem: example_gem3, summary: "keyword", description: "some")
import_and_refresh

end

should "look for keyword in name, summary and description and order them in same priority order" do
@@ -184,7 +180,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase
rubygem = create(:rubygem, name: "gem_#{downloads}", downloads: downloads)
create(:version, rubygem: rubygem)
end
import_and_refresh

end

should "boost score of result by downloads count" do
@@ -199,7 +195,6 @@ class RubygemSearchableTest < ActiveSupport::TestCase
setup do
rubygem = create(:rubygem, name: "example_gem", downloads: 10)
create(:version, rubygem: rubygem, summary: "some summary", description: "some description")
import_and_refresh
end

should "return all terms of source" do
@@ -225,7 +220,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase
example2 = create(:rubygem, name: "keywordo")
example3 = create(:rubygem, name: "keywo")
[example1, example2, example3].each { |gem| create(:version, rubygem: gem) }
import_and_refresh

end

should "suggest names of possible gems" do
@@ -249,7 +244,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase
rubygem2 = create(:rubygem, name: "web-rubygem", downloads: 99)
create(:version, rubygem: rubygem1, summary: "special word with web-rubygem")
create(:version, rubygem: rubygem2, description: "example special word")
import_and_refresh

end

should "filter gems on downloads" do
@@ -303,7 +298,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase
create(:version, rubygem: rubygem2, description: "example gems set the example")
rubygem1.update_column("updated_at", 2.days.ago)
rubygem2.update_column("updated_at", 10.days.ago)
import_and_refresh

_, @response = ElasticSearcher.new("example").search
end

@@ -326,8 +321,6 @@ class RubygemSearchableTest < ActiveSupport::TestCase

context "#search" do
context "exception handling" do
setup { import_and_refresh }

context "Searchkick::InvalidQueryError" do
setup do
@ill_formated_query = "updated:[2016-08-10 TO }"
@@ -364,7 +357,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase
rubygem = create(:rubygem, name: gem_name, downloads: 10)
create(:version, rubygem: rubygem)
end
import_and_refresh

end

should "not affect results" do
@@ -381,7 +374,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase
%w[term-ansicolor term-an].each do |gem_name|
create(:rubygem, name: gem_name, number: "0.0.1", downloads: 10)
end
import_and_refresh

end

should "return results" do
2 changes: 1 addition & 1 deletion test/models/deletion_test.rb
Original file line number Diff line number Diff line change
@@ -160,7 +160,7 @@ class DeletionTest < ActiveSupport::TestCase

perform_enqueued_jobs

response = Searchkick.client.get index: "rubygems-#{Rails.env}",
response = Searchkick.client.get index: Rubygem.searchkick_index.name,
id: @version.rubygem_id

assert response["_source"]["yanked"]
4 changes: 2 additions & 2 deletions test/models/pusher_test.rb
Original file line number Diff line number Diff line change
@@ -625,7 +625,7 @@ def two_cert_chain(signing_key:, root_not_before: Time.current, cert_not_before:
should "create rubygem index" do
@rubygem.update_column("updated_at", Date.new(2016, 07, 04))
perform_enqueued_jobs only: ReindexRubygemJob
response = Searchkick.client.get index: "rubygems-#{Rails.env}",
response = Searchkick.client.get index: Rubygem.searchkick_index.name,
id: @rubygem.id
expected_response = {
"name" => "gemsgemsgems",
@@ -731,7 +731,7 @@ def two_cert_chain(signing_key:, root_not_before: Time.current, cert_not_before:

should "update rubygem index" do
perform_enqueued_jobs only: ReindexRubygemJob
response = Searchkick.client.get index: "rubygems-#{Rails.env}",
response = Searchkick.client.get index: Rubygem.searchkick_index.name,
id: @rubygem.id

assert_equal "new summary", response["_source"]["summary"]
10 changes: 7 additions & 3 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
@@ -68,8 +68,6 @@
c.strict_keyword_argument_matching = true
end

Rubygem.searchkick_reindex(import: false)

OmniAuth.config.test_mode = true

class ActiveSupport::TestCase
@@ -78,8 +76,11 @@ class ActiveSupport::TestCase
include EmailHelpers
include PasswordHelpers

parallelize_setup do |_worker|
parallelize(workers: :number_of_processors)

parallelize_setup do |worker|
SemanticLogger.reopen
Searchkick.index_suffix = "_#{worker}"
end

setup do
@@ -90,6 +91,9 @@ class ActiveSupport::TestCase
Unpwn.offline = true
OmniAuth.config.mock_auth.clear

Rubygem.reindex
Searchkick.disable_callbacks

@launch_darkly = LaunchDarkly::Integrations::TestData.data_source
config = LaunchDarkly::Config.new(data_source: @launch_darkly, send_events: false)
Rails.configuration.launch_darkly_client = LaunchDarkly::LDClient.new("", config)