logstash-output-jdbc 0.2.0.rc5 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -3
  3. data/spec/outputs/jdbc_spec.rb +86 -4
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b65c56f74cbd1bbc5b012bf50428b1dd7dbfae5
4
- data.tar.gz: 6b670170ca23da4d580d9d9281739eef23961e5c
3
+ metadata.gz: 98f8f8ec2eabfa0a313b967c55e70d3746877d1f
4
+ data.tar.gz: 4176e942c025b4ad292b2ad611bf975e343da133
5
5
  SHA512:
6
- metadata.gz: 43e84c1eef3007c524d963efa035a64267267ec6a202f78ee4ef7aa2e2cb63b0c1302876f7bdac9ab3825e2c7f0a37f1af7ced3f2aa1cba2763ff9bdceb9651f
7
- data.tar.gz: 18c61b788c2e6c4fbbee7860e43b48a289390d4edd3288d104bc9d5634e6eeadbed077fe851fdd24a6242613b164675228f38fb421036250ebe38dd148ade1c3
6
+ metadata.gz: 69e000bfc928a3cdcbdcfff5a70088e88ba0445dd57ad411ee9af98051bb1e31c9de9ce3c325f46aea568a9fe9e77854a7dc53beb65c833f6b09d40edfd66bc4
7
+ data.tar.gz: 17ca8bf92beae6a3f7c8c3e3de00d73b9d3ef6a39211a60f5c2927b6c13f92f7965de2c4da40fe7f8c038a532ef6ac7022831355ef9308ced1e4ff952309f71b
data/README.md CHANGED
@@ -12,9 +12,9 @@ This plugin does not bundle any JDBC jar files, and does expect them to be in a
12
12
  particular location. Please ensure you read the 4 installation lines below.
13
13
 
14
14
  ## Headlines
15
- - Support for connection pooling added in 0.2.0 [unreleased until #10 is resolved]
16
- - Support for unsafe statement handling (allowing dynamic queries) in 0.2.0 [unreleased until #10 is resolved]
17
- - Altered exception handling to now count sequential flushes with exceptions thrown in 0.2.0 [untested and unreleased until #10 is resolved]
15
+ - Support for connection pooling added in 0.2.0
16
+ - Support for unsafe statement handling (allowing dynamic queries) in 0.2.0
17
+ - Altered exception handling to now count sequential flushes with exceptions thrown in 0.2.0
18
18
 
19
19
  ## Versions
20
20
  - See master branch for logstash v2+
@@ -30,6 +30,13 @@ particular location. Please ensure you read the 4 installation lines below.
30
30
  - Add JDBC jar files to vendor/jar/jdbc in your logstash installation
31
31
  - And then configure (examples below)
32
32
 
33
+ ## Running tests
34
+ Assuming valid JDBC jar, and jruby is setup and installed, and you have issued `jruby -S bundle install` in the development directory
35
+ - `SQL_JAR=path/to/your.jar jruby -S bundle exec rspec`
36
+ If you need to provide username and password you may do this via the environment variables `SQL_USERNAME` and `SQL_PASSWORD`.
37
+
38
+ Tests are not yet 100% complete.
39
+
33
40
  ## Configuration options
34
41
 
35
42
  | Option | Type | Description | Required? | Default |
@@ -1,13 +1,95 @@
1
1
  require "logstash/devutils/rspec/spec_helper"
2
2
  require "logstash/outputs/jdbc"
3
3
  require "stud/temporary"
4
+ require "java"
4
5
 
5
6
  describe LogStash::Outputs::Jdbc do
7
+ def fetch_log_table_rowcount
8
+ # sleep for a second to let the flush happen
9
+ sleep 1
10
+
11
+ stmt = @sql.createStatement()
12
+ rs = stmt.executeQuery("select count(*) as total from log")
13
+ count = 0
14
+ while rs.next()
15
+ count = rs.getInt("total")
16
+ end
17
+ stmt.close()
18
+
19
+ return count
20
+ end
21
+
22
+ let(:base_settings) { {
23
+ "driver_jar_path" => @driver_jar_path,
24
+ "connection_string" => @test_connection_string,
25
+ "username" => ENV['SQL_USERNAME'],
26
+ "password" => ENV['SQL_PASSWORD'],
27
+ "statement" => [ "insert into log (message) values(?)", "message" ],
28
+ "max_pool_size" => 1,
29
+ "flush_size" => 1,
30
+ "max_flush_exceptions" => 1
31
+ } }
32
+ let(:test_settings) { {} }
33
+ let(:plugin) { LogStash::Outputs::Jdbc.new(base_settings.merge(test_settings)) }
34
+ let(:event_fields) { { "message" => "This is a message!" } }
35
+ let(:event) { LogStash::Event.new(event_fields) }
36
+
37
+ before(:all) do
38
+ @driver_jar_path = File.absolute_path(ENV['SQL_JAR'])
39
+ @test_db_path = File.join(Stud::Temporary.directory, "test.db")
40
+ @test_connection_string = "jdbc:sqlite:#{@test_db_path}"
41
+
42
+ require @driver_jar_path
43
+
44
+ @sql = java.sql.DriverManager.get_connection(@test_connection_string, ENV['SQL_USERNAME'].to_s, ENV['SQL_PASSWORD'].to_s)
45
+ stmt = @sql.createStatement()
46
+ stmt.executeUpdate("CREATE table log (host text, timestamp datetime, message text);")
47
+ stmt.close()
48
+ end
49
+
50
+ before(:each) do
51
+ stmt = @sql.createStatement()
52
+ stmt.executeUpdate("delete from log")
53
+ stmt.close()
54
+ end
55
+
56
+ after(:all) do
57
+ File.unlink(@test_db_path)
58
+ Dir.rmdir(File.dirname(@test_db_path))
59
+ end
60
+
61
+ describe "safe statement" do
62
+ it "should register without errors" do
63
+ expect { plugin.register }.to_not raise_error
64
+ end
65
+
66
+ it "receive event, without error" do
67
+ plugin.register
68
+ expect { plugin.receive(event) }.to_not raise_error
69
+
70
+ expect(fetch_log_table_rowcount).to eq(1)
71
+ end
72
+
73
+ end
74
+
75
+ describe "unsafe statement" do
76
+ let(:event_fields) {
77
+ { "message" => "This is a message!", "table" => "log" }
78
+ }
79
+ let(:test_settings) { {
80
+ "statement" => [ "insert into %{table} (message) values(?)", "message" ],
81
+ "unsafe_statement" => true
82
+ } }
83
+
84
+ it "should register without errors" do
85
+ expect { plugin.register }.to_not raise_error
86
+ end
6
87
 
7
- it "should register without errors" do
8
- plugin = LogStash::Plugin.lookup("output", "jdbc").new({})
9
- expect { plugin.register }.to_not raise_error
88
+ it "receive event, without error" do
89
+ plugin.register
90
+ plugin.receive(event)
91
+ expect(fetch_log_table_rowcount).to eq(1)
92
+ end
10
93
 
11
94
  end
12
-
13
95
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-jdbc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.rc5
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - the_angry_angel
@@ -107,9 +107,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - '>'
110
+ - - '>='
111
111
  - !ruby/object:Gem::Version
112
- version: 1.3.1
112
+ version: '0'
113
113
  requirements: []
114
114
  rubyforge_project:
115
115
  rubygems_version: 2.0.14