-
Notifications
You must be signed in to change notification settings - Fork 151
/
restore_from_crash_spec.rb
67 lines (55 loc) · 2.1 KB
/
restore_from_crash_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# encoding: utf-8
require_relative "../spec_helper"
require "logstash/outputs/s3"
require "logstash/codecs/line"
require "stud/temporary"
describe "Restore from crash", :integration => true do
include_context "setup plugin"
let(:options) { main_options.merge({ "restore" => true, "canned_acl" => "public-read-write" }) }
let(:number_of_files) { 5 }
let(:dummy_content) { "foobar\n" * 100 }
let(:factory) { LogStash::Outputs::S3::TemporaryFileFactory.new(prefix, tags, "none", temporary_directory)}
before do
clean_remote_files(prefix)
end
context 'with a non-empty tempfile' do
before do
# Creating a factory always create a file
factory.current.write(dummy_content)
factory.current.fsync
(number_of_files - 1).times do
factory.rotate!
factory.current.write(dummy_content)
factory.current.fsync
end
end
it "uploads the file to the bucket" do
subject.register
try(20) do
expect(bucket_resource.objects(:prefix => prefix).count).to eq(number_of_files)
expect(Dir.glob(File.join(temporary_directory, "*")).size).to eq(0)
expect(bucket_resource.objects(:prefix => prefix).first.acl.grants.collect(&:permission)).to include("READ", "WRITE")
end
end
end
context 'with an empty tempfile' do
before do
factory.current
factory.rotate!
end
it "should remove the temporary file" do
expect(Dir.glob(::File.join(temporary_directory, "**", "*")).size).to be > 0
subject.register
puts Dir.glob(::File.join(temporary_directory, "**", "*"))
expect(Dir.glob(::File.join(temporary_directory, "**", "*")).size).to eq(0)
end
it "should not upload the file to the bucket" do
expect(bucket_resource.objects(:prefix => prefix).count).to eq(0)
expect(Dir.glob(::File.join(temporary_directory, "**", "*")).size).to be > 0
subject.register
# Sleep to give enough time for plugin upload to s3 if it attempts to upload empty temporary file to S3
sleep 5
expect(bucket_resource.objects(:prefix => prefix).count).to eq(0)
end
end
end