Skip to content

Improve performance of ee/spec/services/search/snippet_service_spec.rb

What does this MR do?

This MR improves the ee/spec/services/search/snippet_service_spec.rb spec. In local, the time went from 2 mins and 48 seconds to 1 min and 55 second. Therefore, the improvement was 53 seconds.

Refs #228671 (closed)

Screenshots

Before

Top 10 slowest examples (21.56 seconds, 12.8% of total time):
  Search::SnippetService behaves like EE search service shared examples #execute advanced syntax queries for all scopes with query "display bug" and scope snippet_titles allows advanced query
    3.17 seconds ./ee/spec/support/shared_examples/services/search_service_shared_examples.rb:81
  Search::SnippetService#execute visibility project snippet snippet_level: :internal, project_level: :public, feature_access_level: :private, membership: :guest, expected_count: 1 respects visibility
    2.38 seconds ./ee/spec/services/search/snippet_service_spec.rb:60
  Search::SnippetService#execute visibility project snippet snippet_level: :private, project_level: :private, feature_access_level: :private, membership: :guest, expected_count: 1 respects visibility
    2.26 seconds ./ee/spec/services/search/snippet_service_spec.rb:60
  Search::SnippetService#execute visibility project snippet snippet_level: :internal, project_level: :public, feature_access_level: :private, membership: :admin, expected_count: 1 respects visibility
    2.16 seconds ./ee/spec/services/search/snippet_service_spec.rb:60
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :private, feature_access_level: :private, membership: :guest, expected_count: 1 respects visibility
    2.14 seconds ./ee/spec/services/search/snippet_service_spec.rb:60
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :public, feature_access_level: :enabled, membership: :admin, expected_count: 1 respects visibility
    2.06 seconds ./ee/spec/services/search/snippet_service_spec.rb:60
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :public, feature_access_level: :enabled, membership: :guest, expected_count: 1 respects visibility
    1.93 seconds ./ee/spec/services/search/snippet_service_spec.rb:60
  Search::SnippetService#execute visibility project snippet snippet_level: :internal, project_level: :public, feature_access_level: :private, membership: :reporter, expected_count: 1 respects visibility
    1.9 seconds ./ee/spec/services/search/snippet_service_spec.rb:60
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :private, feature_access_level: :disabled, membership: :non_member, expected_count: 0 respects visibility
    1.82 seconds ./ee/spec/services/search/snippet_service_spec.rb:60
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :public, feature_access_level: :disabled, membership: :non_member, expected_count: 0 respects visibility
    1.74 seconds ./ee/spec/services/search/snippet_service_spec.rb:60

Finished in 2 minutes 48.2 seconds (files took 5.3 seconds to load)

After

Top 10 slowest examples (9.57 seconds, 8.3% of total time):
  Search::SnippetService#execute visibility project snippet snippet_level: :internal, project_level: :public, feature_access_level: :enabled, membership: :non_member, expected_count: 1 respects visibility
    1.18 seconds ./ee/spec/services/search/snippet_service_spec.rb:68
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :private, feature_access_level: :disabled, membership: :non_member, expected_count: 0 respects visibility
    1.01 seconds ./ee/spec/services/search/snippet_service_spec.rb:68
  Search::SnippetService#execute visibility project snippet snippet_level: :private, project_level: :internal, feature_access_level: :enabled, membership: :guest, expected_count: 1 respects visibility
    0.94942 seconds ./ee/spec/services/search/snippet_service_spec.rb:68
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :private, feature_access_level: :disabled, membership: :guest, expected_count: 0 respects visibility
    0.94568 seconds ./ee/spec/services/search/snippet_service_spec.rb:68
  Search::SnippetService#execute visibility project snippet snippet_level: :private, project_level: :private, feature_access_level: :private, membership: :guest, expected_count: 1 respects visibility
    0.93386 seconds ./ee/spec/services/search/snippet_service_spec.rb:68
  Search::SnippetService behaves like EE search service shared examples #execute advanced syntax queries for all scopes with query "display bug" and scope snippet_titles allows advanced query
    0.92009 seconds ./ee/spec/support/shared_examples/services/search_service_shared_examples.rb:81
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :private, feature_access_level: :disabled, membership: :anonymous, expected_count: 0 respects visibility
    0.91766 seconds ./ee/spec/services/search/snippet_service_spec.rb:68
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :public, feature_access_level: :private, membership: :reporter, expected_count: 1 respects visibility
    0.90205 seconds ./ee/spec/services/search/snippet_service_spec.rb:68
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :private, feature_access_level: :private, membership: :reporter, expected_count: 1 respects visibility
    0.901 seconds ./ee/spec/services/search/snippet_service_spec.rb:68
  Search::SnippetService#execute visibility project snippet snippet_level: :public, project_level: :internal, feature_access_level: :private, membership: :guest, expected_count: 1 respects visibility
    0.89897 seconds ./ee/spec/services/search/snippet_service_spec.rb:68

Finished in 1 minute 55.81 seconds (files took 4.46 seconds to load)

Does this MR meet the acceptance criteria?

Conformity

Merge request reports