Skip to content

Commit

Permalink
Add tests for large file downloads via the streaming interface
Browse files Browse the repository at this point in the history
  • Loading branch information
ivgiuliani committed Apr 12, 2023
1 parent 3a2b09e commit 6222a24
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion spec/bucket_store_integration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@
end
end

it "returns an empty bucket when no files are uploaded" do
expect(described_class.for(base_bucket_uri.to_s).list.to_a.size).to eq(0)
end

it "has a consistent interface" do
# Write 201 files
file_list = []
Expand Down Expand Up @@ -75,9 +79,29 @@
expect(described_class.for(base_bucket_uri.to_s).list.to_a.size).to eq(0)
end
end

context "using the streaming interface" do
it "supports large file downloads" do
# Upload a large file
large_file_content = "Z" * 1024 * 1024 * 10 # 10Mb
described_class.
for("#{base_bucket_uri}/large.txt").
upload!(large_file_content)

# Streaming downloads should return a chunked response
rebuilt_large_file =
described_class.for("#{base_bucket_uri}/large.txt").
stream.
download.
map { |_meta, chunk| chunk }.
join

expect(rebuilt_large_file.size).to eq(large_file_content.size)
expect(rebuilt_large_file).to eq(large_file_content)
end
end
end

# We don't test GCS as there's no sensible way of running a local simulator
include_examples "adapter integration", "inmemory://bucket"
include_examples "adapter integration", "disk://bucket"
include_examples "adapter integration", "s3://bucket"
Expand Down

0 comments on commit 6222a24

Please sign in to comment.