Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
12 changes: 6 additions & 6 deletions lib/ldclient-rb/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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]
#
Expand Down Expand Up @@ -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

#
Expand Down
8 changes: 8 additions & 0 deletions spec/config_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 4 additions & 5 deletions spec/http_util.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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))

Expand All @@ -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
Expand Down
16 changes: 14 additions & 2 deletions spec/impl/event_sender_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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", "")
Expand Down
Loading