diff --git a/lib/ldclient-rb/config.rb b/lib/ldclient-rb/config.rb index bc116471..a3cd0331 100644 --- a/lib/ldclient-rb/config.rb +++ b/lib/ldclient-rb/config.rb @@ -281,11 +281,11 @@ def offline? attr_reader :send_events # - # Should the event payload sent to LaunchDarkly use gzip compression. By default this is false to prevent backward - # breaking compatibility issues with older versions of the relay proxy. + # Should the event payload sent to LaunchDarkly use gzip compression. The default is true. # - # Customers not using the relay proxy are strongly encouraged to enable this feature to reduce egress bandwidth - # cost. + # Relay Proxy versions before 8.9 cannot accept compressed events. If you send events through the Relay Proxy, + # set this to false. Older Relay Proxy versions cannot decode compressed payloads. Newer versions decode and + # compress the payloads again, which adds CPU overhead. # # @return [Boolean] # @@ -622,10 +622,10 @@ def self.default_send_events # # The default value for {#compress_events}. - # @return [Boolean] false + # @return [Boolean] true # def self.default_compress_events - false + true end # diff --git a/spec/config_spec.rb b/spec/config_spec.rb index eb11a3de..a28cd334 100644 --- a/spec/config_spec.rb +++ b/spec/config_spec.rb @@ -135,6 +135,14 @@ module LaunchDarkly expect(subject.new(omit_anonymous_contexts: true).omit_anonymous_contexts).to eq true end end + describe ".compress_events" do + it "defaults to true" do + expect(subject.new.compress_events).to eq true + end + it "can be set to false" do + expect(subject.new(compress_events: false).compress_events).to eq false + end + end describe ".private_attributes" do it "defaults to an empty set" do expect(subject.new.private_attributes).to eq Set.new diff --git a/spec/http_util.rb b/spec/http_util.rb index 3198cdcb..37b466dc 100644 --- a/spec/http_util.rb +++ b/spec/http_util.rb @@ -7,8 +7,7 @@ class StubHTTPServer attr_reader :requests, :port - def initialize(enable_compression: false) - @enable_compression = enable_compression + def initialize base_opts = { BindAddress: '127.0.0.1', Port: 0, # Let OS assign an available port @@ -70,7 +69,7 @@ def await_request_with_body request = r[0] body = r[1] - return [request, body.to_s] unless @enable_compression + return [request, body.to_s] unless request.header['content-encoding'] == ['gzip'] gz = Zlib::GzipReader.new(StringIO.new(body.to_s)) @@ -84,8 +83,8 @@ def method_missing(*) end end -def with_server(enable_compression: false) - server = StubHTTPServer.new(enable_compression: enable_compression) +def with_server + server = StubHTTPServer.new begin server.start yield server diff --git a/spec/impl/event_sender_spec.rb b/spec/impl/event_sender_spec.rb index 0e82eb21..5760e94b 100644 --- a/spec/impl/event_sender_spec.rb +++ b/spec/impl/event_sender_spec.rb @@ -42,8 +42,7 @@ def make_sender(config_options = {}) end def with_sender_and_server(config_options = {}) - enable_compression = config_options[:compress_events] || false - with_server(enable_compression: enable_compression) do |server| + with_server do |server| config_options[:events_uri] = server.base_uri.to_s yield make_sender(config_options), server end @@ -101,6 +100,19 @@ def with_sender_and_server(config_options = {}) end end + it "sends analytics event data with compression by default" do + with_sender_and_server do |es, server| + server.setup_ok_response("/bulk", "") + + result = es.send_event_data(fake_data, "", false) + + expect(result.success).to be true + req, body = server.await_request_with_body + expect(body).to eq fake_data + expect(req.header['content-encoding']).to eq [ "gzip" ] + end + end + it "can use a socket factory" do with_server do |server| server.setup_ok_response("/bulk", "")