DEV: switch message bus backend to memory for tests

DEV: switch message bus backend to memory for tests

This backend is a bit faster and well tested, this is part of a longer term plan to have a backend: :memory, threaded: false type config for message bus which we can use in test.

The threading in message bus causes all sorts of surprises in test, it will be nice not to be beholden to them.

diff --git a/config/initializers/004-message_bus.rb b/config/initializers/004-message_bus.rb
index 57253d6..ac560c5 100644
--- a/config/initializers/004-message_bus.rb
+++ b/config/initializers/004-message_bus.rb
@@ -94,8 +94,11 @@ MessageBus.on_disconnect do |site_id|
   ActiveRecord::Base.connection_handler.clear_active_connections!
 end
 
-# Point at our redis
-MessageBus.redis_config = GlobalSetting.message_bus_redis_config
+if Rails.env == "test"
+  MessageBus.configure(backend: :memory)
+else
+  MessageBus.redis_config = GlobalSetting.message_bus_redis_config
+end
 MessageBus.reliable_pub_sub.max_backlog_size = GlobalSetting.message_bus_max_backlog_size
 
 MessageBus.long_polling_enabled = SiteSetting.enable_long_polling
diff --git a/spec/requests/static_controller_spec.rb b/spec/requests/static_controller_spec.rb
index 6c542a1..5553328 100644
--- a/spec/requests/static_controller_spec.rb
+++ b/spec/requests/static_controller_spec.rb
@@ -13,6 +13,10 @@ describe StaticController do
       UploadCreator.new(file, filename).create_for(Discourse.system_user.id)
     end
 
+    before_all do
+      DistributedMemoizer.flush!
+    end
+
     after do
       DistributedMemoizer.flush!
     end

GitHub sha: b114bcd2

2 Likes