From a5b5c3bebec1b4ded784cf22d3ed5f948cd54427 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 4 Sep 2024 16:14:32 +1000 Subject: [PATCH] PERF: speed up spec (#794) ~500ms -> ~100ms It is still not a super fast spec given search is not free, but it is a bit faster and clearer --- .../embeddings/embeddings_controller_spec.rb | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/spec/requests/embeddings/embeddings_controller_spec.rb b/spec/requests/embeddings/embeddings_controller_spec.rb index 0542d2ea..fa1c1b1c 100644 --- a/spec/requests/embeddings/embeddings_controller_spec.rb +++ b/spec/requests/embeddings/embeddings_controller_spec.rb @@ -63,12 +63,26 @@ describe DiscourseAi::Embeddings::EmbeddingsController do context "when rate limiting is enabled" do before { RateLimiter.enable } - it "will not rate limit API for hyde search" do - 10.times do |i| - query = "test #{SecureRandom.hex}" - stub_embedding(query) - get "/discourse-ai/embeddings/semantic-search.json?q=#{query}&hyde=false" - expect(response.status).to eq(200) + use_redis_snapshotting + + it "will rate limit correctly" do + stub_const(subject.class, :MAX_HYDE_SEARCHES_PER_MINUTE, 1) do + stub_const(subject.class, :MAX_SEARCHES_PER_MINUTE, 2) do + query = "test #{SecureRandom.hex}" + stub_embedding(query) + get "/discourse-ai/embeddings/semantic-search.json?q=#{query}&hyde=false" + expect(response.status).to eq(200) + + query = "test #{SecureRandom.hex}" + stub_embedding(query) + get "/discourse-ai/embeddings/semantic-search.json?q=#{query}&hyde=false" + expect(response.status).to eq(200) + + query = "test #{SecureRandom.hex}" + stub_embedding(query) + get "/discourse-ai/embeddings/semantic-search.json?q=#{query}&hyde=false" + expect(response.status).to eq(429) + end end end end