logstash-output-qingstor 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,81 +1,96 @@
1
1
  # encoding: utf-8
2
- require "logstash/devutils/rspec/spec_helper"
3
- require "logstash/outputs/qingstor/temporary_file"
4
- require "logstash/outputs/qingstor/rotation_policy"
2
+
3
+ require 'logstash/devutils/rspec/spec_helper'
4
+ require 'logstash/outputs/qingstor/temporary_file'
5
+ require 'logstash/outputs/qingstor/rotation_policy'
5
6
 
6
7
  describe LogStash::Outputs::Qingstor::RotationPolicy do
7
8
  let(:size_file) { 1024 * 2 }
8
9
  let(:time_file) { 2 }
9
- let(:name) { "foobar" }
10
+ let(:name) { 'foobar' }
10
11
  let(:tmp_file) { Stud::Temporary.file }
11
12
  let(:tmp_dir) { tmp_file.path }
12
- let(:file) { LogStash::Outputs::Qingstor::TemporaryFile.new(name, tmp_file, tmp_dir) }
13
- let(:content) { "May the code be with you" * 100 }
14
-
13
+ let(:file) do
14
+ LogStash::Outputs::Qingstor::TemporaryFile.new(name, tmp_file, tmp_dir)
15
+ end
16
+ let(:content) { 'May the code be with you' * 100 }
15
17
 
16
- context "when size_and_time policy" do
17
- subject { described_class.new("size_and_time", size_file, time_file) }
18
+ context 'when size_and_time policy' do
19
+ subject { described_class.new('size_and_time', size_file, time_file) }
18
20
 
19
- it "raise error if time_file is no grater then 0" do
20
- expect{ described_class.new("size_and_time", 0, 0) }.to raise_error(LogStash::ConfigurationError)
21
- expect{ described_class.new("size_and_time", -1, 0) }.to raise_error(LogStash::ConfigurationError)
22
- expect{ described_class.new("size_and_time", 0, -1) }.to raise_error(LogStash::ConfigurationError)
23
- expect{ described_class.new("size_and_time", -1, -1) }.to raise_error(LogStash::ConfigurationError)
24
-
25
- end
21
+ it 'raise error if time_file is no grater then 0' do
22
+ expect { described_class.new('size_and_time', 0, 0) }
23
+ .to raise_error(LogStash::ConfigurationError)
24
+ expect { described_class.new('size_and_time', -1, 0) }
25
+ .to raise_error(LogStash::ConfigurationError)
26
+ expect { described_class.new('size_and_time', 0, -1) }
27
+ .to raise_error(LogStash::ConfigurationError)
28
+ expect { described_class.new('size_and_time', -1, -1) }
29
+ .to raise_error(LogStash::ConfigurationError)
30
+ end
26
31
 
27
- it "return false if the file is not old enough" do
32
+ it 'return false if the file is not old enough' do
28
33
  expect(subject.rotate?(file)).to be_falsey
29
34
  end
30
35
 
31
- it "return false if the file is old enough with file size 0" do
32
- allow(file).to receive(:ctime).and_return(Time.now - (time_file * 2 * 60))
36
+ it 'return false if the file is old enough with file size 0' do
37
+ allow(file)
38
+ .to receive(:ctime).and_return(Time.now - (time_file * 2 * 60))
33
39
  expect(subject.rotate?(file)).to be_falsey
34
40
  end
35
41
 
36
- it "return truth if the file is old enough and non-empty" do
42
+ it 'return truth if the file is old enough and non-empty' do
37
43
  file.write(content)
38
44
  file.fsync
39
- allow(file).to receive(:ctime).and_return(Time.now - (time_file * 2 * 60))
45
+ allow(file)
46
+ .to receive(:ctime).and_return(Time.now - (time_file * 2 * 60))
40
47
  expect(subject.rotate?(file)).to be_truthy
41
48
  end
42
- end
49
+ end
50
+
51
+ context 'when size policy' do
52
+ subject { described_class.new('size', size_file, time_file) }
43
53
 
44
- context "when size policy" do
45
- subject { described_class.new("size", size_file, time_file) }
46
- it "raise error if size_file is no grater then 0" do
47
- expect{described_class.new("size", 0, 0)}.to raise_error(LogStash::ConfigurationError)
48
- expect{described_class.new("size", -1, 0)}.to raise_error(LogStash::ConfigurationError)
49
- end
54
+ it 'raise error if size_file is no grater then 0' do
55
+ expect { described_class.new('size', 0, 0) }
56
+ .to raise_error(LogStash::ConfigurationError)
57
+ expect { described_class.new('size', -1, 0) }
58
+ .to raise_error(LogStash::ConfigurationError)
59
+ end
50
60
 
51
- it "return true if the file has a bigger size value then 'size_file'" do
61
+ it "return true if the file has a bigger size value then 'size_file'" do
52
62
  file.write(content)
53
63
  file.fsync
54
64
  expect(subject.rotate?(file)).to be_truthy
55
65
  end
56
- end
66
+ end
67
+
68
+ context 'when time policy' do
69
+ subject { described_class.new('time', size_file, time_file) }
57
70
 
58
- context "when time policy" do
59
- subject { described_class.new("time", size_file, time_file) }
60
- it "raise error if time_file is no grater then 0" do
61
- expect{described_class.new("time", 0, 0)}.to raise_error(LogStash::ConfigurationError)
62
- expect{described_class.new("time", 0, -1)}.to raise_error(LogStash::ConfigurationError)
63
- end
71
+ it 'raise error if time_file is no grater then 0' do
72
+ expect { described_class.new('time', 0, 0) }
73
+ .to raise_error(LogStash::ConfigurationError)
74
+ expect { described_class.new('time', 0, -1) }
75
+ .to raise_error(LogStash::ConfigurationError)
76
+ end
64
77
 
65
- it "return false if the file is not old enough" do
78
+ it 'return false if the file is not old enough' do
66
79
  expect(subject.rotate?(file)).to be_falsey
67
80
  end
68
81
 
69
- it "return false if the file is old enough with file size 0" do
70
- allow(file).to receive(:ctime).and_return(Time.now - (time_file * 2 * 60))
82
+ it 'return false if the file is old enough with file size 0' do
83
+ allow(file)
84
+ .to receive(:ctime).and_return(Time.now - (time_file * 2 * 60))
71
85
  expect(subject.rotate?(file)).to be_falsey
72
86
  end
73
87
 
74
- it "return truth if the file is old enough and non-empty" do
88
+ it 'return truth if the file is old enough and non-empty' do
75
89
  file.write(content)
76
90
  file.fsync
77
- allow(file).to receive(:ctime).and_return(Time.now - (time_file * 2 * 60))
91
+ allow(file)
92
+ .to receive(:ctime).and_return(Time.now - (time_file * 2 * 60))
78
93
  expect(subject.rotate?(file)).to be_truthy
79
94
  end
80
- end
81
- end
95
+ end
96
+ end
@@ -1,82 +1,84 @@
1
1
  # encoding: utf-8
2
- require "logstash/devutils/rspec/spec_helper"
3
- require "logstash/outputs/qingstor/temporary_file"
4
- require "logstash/outputs/qingstor/temporary_file_factory"
5
- require "fileutils"
6
- require "tmpdir"
7
2
 
8
- describe LogStash::Outputs::Qingstor::TemporaryFileFactory do
9
- let(:prefix) { "lg2qs" }
10
- let(:tags) { [ ] }
11
- let(:tmpdir) { File.join(Dir.tmpdir, "logstash-qs") }
3
+ require 'logstash/devutils/rspec/spec_helper'
4
+ require 'logstash/outputs/qingstor/temporary_file'
5
+ require 'logstash/outputs/qingstor/temporary_file_factory'
6
+ require 'fileutils'
7
+ require 'tmpdir'
12
8
 
9
+ describe LogStash::Outputs::Qingstor::TemporaryFileFactory do
13
10
  subject { described_class.new(prefix, tags, encoding, tmpdir) }
14
11
 
15
- shared_examples "file factory" do
16
- it "creates the file on disk" do
12
+ let(:prefix) { 'lg2qs' }
13
+ let(:tags) { [] }
14
+ let(:tmpdir) { File.join(Dir.tmpdir, 'logstash-qs') }
15
+
16
+ shared_examples 'file factory' do
17
+ it 'creates the file on disk' do
17
18
  expect(File.exist?(subject.current.path)).to be_truthy
18
19
  end
19
20
 
20
- it "create a temporary file when initialized" do
21
- expect(subject.current).to be_kind_of(LogStash::Outputs::Qingstor::TemporaryFile)
21
+ it 'create a temporary file when initialized' do
22
+ expect(subject.current)
23
+ .to be_kind_of(LogStash::Outputs::Qingstor::TemporaryFile)
22
24
  end
23
25
 
24
- it "create a file in the right format" do
26
+ it 'create a file in the right format' do
25
27
  expect(subject.current.path).to match(extension)
26
28
  end
27
29
 
28
- it "allow to rotate the file" do
30
+ it 'allow to rotate the file' do
29
31
  file_path = subject.current.path
30
32
  expect(subject.rotate!.path).not_to eq(file_path)
31
33
  end
32
34
 
33
- it "increments the part name on rotation" do
35
+ it 'increments the part name on rotation' do
34
36
  expect(subject.current.path).to match(/part0/)
35
37
  expect(subject.rotate!.path).to match(/part1/)
36
38
  end
37
39
 
38
- it "includes the date" do
40
+ it 'includes the date' do
39
41
  n = Time.now
40
- expect(subject.current.path).to include(n.strftime("%Y-%m-%dT"))
42
+ expect(subject.current.path).to include(n.strftime('%Y-%m-%dT'))
41
43
  end
42
44
 
43
- it "include the file key in the path" do
45
+ it 'include the file key in the path' do
44
46
  file = subject.current
45
47
  expect(file.path).to match(/#{file.key}/)
46
48
  end
47
49
 
48
- it "create a unique directory in the temporary directory for each file" do
49
- uuid = "hola"
50
+ it 'create a unique directory in the temporary directory for each file' do
51
+ uuid = 'hola'
50
52
  expect(SecureRandom).to receive(:uuid).and_return(uuid).twice
51
53
  expect(subject.current.path).to include(uuid)
52
54
  end
53
55
 
54
- context "with tags supplied" do
55
- let(:tags) { ["secret", "service"] }
56
+ context 'with tags supplied' do
57
+ let(:tags) { %w[secret service] }
56
58
 
57
- it "adds tags to the filename" do
59
+ it 'adds tags to the filename' do
58
60
  expect(subject.current.path).to match(/tag_#{tags.join('.')}.part/)
59
61
  end
60
62
  end
61
63
 
62
- context "without tags" do
64
+ context 'without tags' do
63
65
  it "doesn't add tags to the filename" do
64
66
  expect(subject.current.path).not_to match(/tag_/)
65
67
  end
66
68
  end
67
69
  end
68
70
 
69
- context "when gzip" do
70
- let(:encoding) { "gzip" }
71
+ context 'when gzip' do
72
+ let(:encoding) { 'gzip' }
71
73
  let(:extension) { /\.log.gz$/ }
72
74
 
73
- include_examples "file factory"
75
+ include_examples 'file factory'
74
76
  end
75
77
 
76
- context "when encoding set to `none`" do
77
- let(:encoding) { "none" }
78
+ context 'when encoding set to `none`' do
79
+ let(:encoding) { 'none' }
78
80
  let(:extension) { /\.log$/ }
79
81
 
80
- include_examples "file factory"
82
+ include_examples 'file factory'
81
83
  end
82
- end
84
+ end
@@ -1,55 +1,56 @@
1
1
  # encoding: utf-8
2
- require "logstash/devutils/rspec/spec_helper"
3
- require "logstash/outputs/qingstor/temporary_file"
4
- require "fileutils"
5
- require "tmpdir"
2
+
3
+ require 'logstash/devutils/rspec/spec_helper'
4
+ require 'logstash/outputs/qingstor/temporary_file'
5
+ require 'fileutils'
6
+ require 'tmpdir'
6
7
 
7
8
  describe LogStash::Outputs::Qingstor::TemporaryFile do
8
- let(:key) { "foo.log" }
9
- let(:content) { "May the code be with you!" }
10
- let(:tmp_path) { File.join(Dir.tmpdir, key) }
11
- let(:file_mode) { "w+" }
12
- let(:io){ ::File.open(tmp_path, file_mode)}
9
+ subject { described_class.new(key, io, tmp_path) }
13
10
 
14
- after(:all) do
15
- FileUtils.rm_r("/tmp/foo.log") if File.exist?("/tmp/foo.log")
16
- end
11
+ let(:key) { 'foo.log' }
12
+ let(:content) { 'May the code be with you!' }
13
+ let(:tmp_path) { File.join(Dir.tmpdir, key) }
14
+ let(:file_mode) { 'w+' }
15
+ let(:io) { ::File.open(tmp_path, file_mode) }
17
16
 
18
- subject { described_class.new(key, io, tmp_path) }
17
+ after(:all) do
18
+ FileUtils.rm_r('/tmp/foo.log') if File.exist?('/tmp/foo.log')
19
+ end
19
20
 
20
- it "return the key of the file" do
21
- expect(subject.key).to eq(key)
22
- end
21
+ it 'return the key of the file' do
22
+ expect(subject.key).to eq(key)
23
+ end
23
24
 
24
- it "is writable and readable" do
25
+ it 'is writable and readable' do
25
26
  subject.write(content)
26
- subject.close
27
+ subject.close
27
28
  expect(File.read(subject.path).strip).to eq(content)
28
- end
29
+ end
29
30
 
30
- it "can return the correct file size" do
31
+ it 'can return the correct file size' do
31
32
  subject.write(content)
32
- subject.close
33
+ subject.close
33
34
  expect(subject.size).to eq(File.size(tmp_path))
34
- end
35
+ end
35
36
 
36
- it "return the tmp_path of the file" do
37
+ it 'return the tmp_path of the file' do
37
38
  expect(subject.tmp_path).to eq(tmp_path)
38
- end
39
+ end
39
40
 
40
- it "return the creation time" do
41
+ it 'return the creation time' do
41
42
  expect(subject.ctime).to be < Time.now + 1.0
42
- end
43
+ end
43
44
 
44
- it "can delete file correctly" do
45
+ it 'can delete file correctly' do
45
46
  expect(File.exist?(subject.tmp_path)).to be_truthy
46
47
  subject.delete!
47
48
  expect(File.exist?(subject.tmp_path)).to be_falsey
48
49
  end
49
50
 
50
- it "return if the file is empty" do
51
+ it 'return if the file is empty' do
51
52
  expect(subject.empty?).to be_truthy
52
53
  subject.write(content)
53
54
  expect(subject.empty?).to be_falsey
54
- end
55
- end
55
+ end
56
+ end
@@ -1,49 +1,48 @@
1
1
  # encoding: utf-8
2
- require "logstash/devutils/rspec/spec_helper"
3
- require "logstash/outputs/qingstor/uploader"
4
- require "logstash/outputs/qingstor/temporary_file"
5
- require "qingstor/sdk"
6
- require "stud/temporary"
7
2
 
8
- require_relative "../qs_access_helper"
3
+ require 'logstash/devutils/rspec/spec_helper'
4
+ require 'logstash/outputs/qingstor/uploader'
5
+ require 'logstash/outputs/qingstor/temporary_file'
6
+ require 'qingstor/sdk'
7
+ require 'stud/temporary'
8
+
9
+ require_relative '../qs_access_helper'
10
+
11
+ describe LogStash::Outputs::Qingstor::Uploader do
12
+ subject { described_class.new(bucket, logger, threadpool) }
9
13
 
10
- describe LogStash::Outputs::Qingstor::Uploader do
11
14
  let(:bucket) { qs_init_bucket }
12
- let(:key) { "foobar" }
15
+ let(:key) { 'foobar' }
13
16
  let(:tmp_file) { Stud::Temporary.file }
14
17
  let(:tmp_path) { tmp_file.path }
15
18
  let(:logger) { spy(:logger) }
16
19
 
17
- let(:threadpool) do
18
- Concurrent::ThreadPoolExecutor.new({
19
- :min_threads => 1,
20
- :max_threads => 4,
21
- :max_queue => 1,
22
- :fallback_policy => :caller_runs
23
- })
24
- end
25
-
26
- let(:file) do
20
+ let(:threadpool) do
21
+ Concurrent::ThreadPoolExecutor.new(:min_threads => 1,
22
+ :max_threads => 4,
23
+ :max_queue => 1,
24
+ :fallback_policy => :caller_runs)
25
+ end
26
+
27
+ let(:file) do
27
28
  f = LogStash::Outputs::Qingstor::TemporaryFile.new(key, tmp_file, tmp_path)
28
- f.write("May the code be with you!")
29
+ f.write('May the code be with you!')
29
30
  f.fsync
30
31
  f
31
32
  end
32
33
 
33
- subject { described_class.new(bucket, logger, threadpool) }
34
-
35
- after do
36
- delete_remote_file key
37
- end
34
+ after do
35
+ delete_remote_file key
36
+ end
38
37
 
39
- it "upload file to the qingstor bucket" do
38
+ it 'upload file to the qingstor bucket' do
40
39
  subject.upload(file)
41
40
  expect(list_remote_file.size).to eq(1)
42
- end
41
+ end
43
42
 
44
- it "execute a callback when the upload is complete" do
43
+ it 'execute a callback when the upload is complete' do
45
44
  callback = proc { |f| }
46
45
  expect(callback).to receive(:call).with(file)
47
- subject.upload(file, { :on_complete => callback })
48
- end
49
- end
46
+ subject.upload(file, :on_complete => callback)
47
+ end
48
+ end
@@ -1,60 +1,69 @@
1
1
  # encoding: utf-8
2
- require "logstash/devutils/rspec/spec_helper"
3
- require "logstash/outputs/qingstor"
4
- require "logstash/event"
5
- require "openssl"
6
- require "fileutils"
7
- require_relative "./qs_access_helper"
8
- require_relative "./spec_helper"
2
+
3
+ require 'logstash/devutils/rspec/spec_helper'
4
+ require 'logstash/outputs/qingstor'
5
+ require 'logstash/event'
6
+ require 'openssl'
7
+ require 'fileutils'
8
+ require_relative './qs_access_helper'
9
+ require_relative './spec_helper'
9
10
 
10
11
  describe LogStash::Outputs::Qingstor do
11
- let(:prefix) { "ss/%{server}"}
12
- let(:event) { LogStash::Event.new({ "server" => "overwatch" }) }
13
- let(:event_encoded) { "May the code be with you!" }
14
- let(:events_and_encoded) {{ event => event_encoded}}
15
- let(:options) {{
16
- "access_key_id" => ENV['access_key_id'],
17
- "secret_access_key" => ENV['secret_access_key'],
18
- "bucket" => ENV['bucket'],
19
- "region" => ENV['region'],
20
- "prefix" => prefix
21
- }}
22
- let(:tmpdir){File.join(Dir.tmpdir, "logstash_restore_dir")}
23
-
24
- after do
12
+ let(:prefix) { 'ss/%{server}' }
13
+ let(:event) { LogStash::Event.new('server' => 'overwatch') }
14
+ let(:event_encoded) { 'May the code be with you!' }
15
+ let(:events_and_encoded) { { event => event_encoded } }
16
+ let(:options) do
17
+ {
18
+ 'access_key_id' => ENV['access_key_id'],
19
+ 'secret_access_key' => ENV['secret_access_key'],
20
+ 'bucket' => ENV['bucket'],
21
+ 'region' => ENV['region'],
22
+ 'prefix' => prefix
23
+ }
24
+ end
25
+ let(:tmpdir) { File.join(Dir.tmpdir, 'logstash_restore_dir') }
26
+
27
+ after do
25
28
  clean_remote_files
26
- end
29
+ end
27
30
 
28
- it "done work with minimal options" do
31
+ it 'done work with minimal options' do
29
32
  fetch_event(options, events_and_encoded)
30
33
  expect(list_remote_file.size).to eq(1)
31
- end
34
+ end
32
35
 
33
- it "use aes256 to encrpytion in the server side" do
36
+ it 'use aes256 to encrpytion in the server side' do
34
37
  cipher = OpenSSL::Cipher::AES256.new(:CBC)
35
38
  cipher.encrypt
36
39
  key = cipher.random_key
37
- fetch_event(options.merge({"server_side_encryption_algorithm" => "AES256","customer_key" => key}), events_and_encoded)
40
+ fetch_event(options.merge('server_side_encryption_algorithm' => 'AES256',
41
+ 'customer_key' => key),
42
+ events_and_encoded)
38
43
  expect(list_remote_file.size).to eq(1)
39
- end
44
+ end
40
45
 
41
- it "upload existing file if turn on restore function" do
42
- FileUtils.mkdir_p(File.join(tmpdir, "uuid_dir")) unless File.exists?(File.join(tmpdir, "uuid_dir"))
43
- f = File.open(File.join(tmpdir, "uuid_dir/temp"), 'w')
46
+ it 'upload existing file if turn on restore function' do
47
+ unless File.exist?(File.join(tmpdir, 'uuid_dir'))
48
+ FileUtils.mkdir_p(File.join(tmpdir, 'uuid_dir'))
49
+ end
50
+ f = File.open(File.join(tmpdir, 'uuid_dir/temp'), 'w')
44
51
  f.write(event_encoded * 10)
45
52
  f.close
46
- fetch_event(options.merge({"restore" => true, "tmpdir" => tmpdir}), events_and_encoded)
53
+ fetch_event(options.merge('restore' => true, 'tmpdir' => tmpdir),
54
+ events_and_encoded)
47
55
  expect(list_remote_file.size).to eq(2)
48
- end
49
-
50
- it "redirect to the specified host without specified port" do
51
- new_options = options.merge({"host" => "qingstor.dev", "port" => 444})
52
- expect{fetch_event(new_options, events_and_encoded)}.to raise_error(Net::HTTP::Persistent::Error)
53
- end
54
-
55
- it "redirect to the specified host without specified port" do
56
- new_options = options.merge({"host" => "qingstor.dev", "port" => 444})
57
- expect{fetch_event(new_options, events_and_encoded)}.to raise_error(Net::HTTP::Persistent::Error)
58
- end
59
-
60
- end
56
+ end
57
+
58
+ it 'redirect to the specified host without specified port' do
59
+ new_options = options.merge('host' => 'qingstor.dev', 'port' => 444)
60
+ expect { fetch_event(new_options, events_and_encoded) }
61
+ .to raise_error(Net::HTTP::Persistent::Error)
62
+ end
63
+
64
+ it 'redirect to the specified host without specified port' do
65
+ new_options = options.merge('host' => 'qingstor.dev', 'port' => 444)
66
+ expect { fetch_event(new_options, events_and_encoded) }
67
+ .to raise_error(Net::HTTP::Persistent::Error)
68
+ end
69
+ end
@@ -1,20 +1,20 @@
1
- def fetch_event(settings, events_and_encoded)
1
+ def fetch_event(settings, events_and_encoded)
2
2
  qs = LogStash::Outputs::Qingstor.new(settings)
3
3
  qs.register
4
4
  qs.multi_receive_encoded(events_and_encoded)
5
5
  qs.close
6
- end
6
+ end
7
7
 
8
8
  def qs_init_config(access_key_id = ENV['access_key_id'],
9
9
  secret_access_key = ENV['secret_access_key'])
10
10
  QingStor::SDK::Config.init access_key_id, secret_access_key
11
- end
11
+ end
12
12
 
13
13
  def qs_init_bucket(bucket = ENV['bucket'], region = ENV['region'])
14
14
  config = qs_init_config
15
- properties = {'bucket-name' => bucket, 'zone' => region }
15
+ properties = { 'bucket-name' => bucket, 'zone' => region }
16
16
  QingStor::SDK::Bucket.new(config, properties)
17
- end
17
+ end
18
18
 
19
19
  def delete_remote_file(key)
20
20
  bucket = qs_init_bucket
@@ -29,10 +29,10 @@ end
29
29
  def delete_bucket(bucket)
30
30
  bucket = qs_init_bucket(bucket)
31
31
  bucket.delete
32
- end
32
+ end
33
33
 
34
34
  def clean_remote_files
35
35
  list_remote_file.each do |record|
36
36
  qs_init_bucket.delete_object record[:key]
37
- end
38
- end
37
+ end
38
+ end
@@ -1,4 +1,4 @@
1
- require "logstash/devutils/rspec/spec_helper"
2
- require "logstash/logging/logger"
1
+ require 'logstash/devutils/rspec/spec_helper'
2
+ require 'logstash/logging/logger'
3
3
 
4
- LogStash::Logging::Logger::configure_logging("warn")
4
+ LogStash::Logging::Logger.configure_logging('warn')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-qingstor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Zhao
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-22 00:00:00.000000000 Z
11
+ date: 2017-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -113,10 +113,8 @@ files:
113
113
  - lib/logstash/outputs/qingstor/file_repository.rb
114
114
  - lib/logstash/outputs/qingstor/qingstor_validator.rb
115
115
  - lib/logstash/outputs/qingstor/rotation_policy.rb
116
- - lib/logstash/outputs/qingstor/size_rotation_policy.rb
117
116
  - lib/logstash/outputs/qingstor/temporary_file.rb
118
117
  - lib/logstash/outputs/qingstor/temporary_file_factory.rb
119
- - lib/logstash/outputs/qingstor/time_rotation_policy.rb
120
118
  - lib/logstash/outputs/qingstor/uploader.rb
121
119
  - logstash-output-qingstor.gemspec
122
120
  - spec/outputs/qingstor/file_repository_spec.rb
@@ -128,7 +126,7 @@ files:
128
126
  - spec/outputs/qingstor_spec.rb
129
127
  - spec/outputs/qs_access_helper.rb
130
128
  - spec/outputs/spec_helper.rb
131
- homepage: https://github.com/tacinight/logstash-output-qingstor
129
+ homepage: https://github.com/yunify/logstash-output-qingstor
132
130
  licenses:
133
131
  - Apache License (2.0)
134
132
  metadata:
@@ -1,26 +0,0 @@
1
- # encoding: utf-8
2
- module LogStash
3
- module Outputs
4
- class Qingstor
5
- class SizeRotationPolicy
6
- attr_reader :size_file
7
-
8
- def initialize(size_file)
9
- if size_file <= 0
10
- raise LogStash::ConfigurationError, "'size_file' need to be greater than 0"
11
- end
12
-
13
- @size_file = size_file
14
- end
15
-
16
- def rotate?(file)
17
- file.size >= size_file
18
- end
19
-
20
- def needs_periodic?
21
- false
22
- end
23
- end
24
- end
25
- end
26
- end