fluent-plugin-cassandra-json 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f0a54cd332017c0ef51daa42703420d01cc81163a08c65bfc265c1672fea7d4
|
4
|
+
data.tar.gz: e74da50b90ac352caba817515223a17dea06eeac53011aa433c261a5e2160e9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1e5f642dc19ae1811f9f556a39e941fa4754e19bc7ac127a9dba64bab4abd285df56448b5b311c23bbec647ee0ff488d22acff81205728ac391c6e4431e9aca
|
7
|
+
data.tar.gz: d46fd63678806d8f7f194fc7044403142dd5954c70b8b4f459f41430efe7b822fae3e571b94626ce038618cfee54a3c5f40d6662eebad63ebd958b0d6f0a194b
|
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = "fluent-plugin-cassandra-json"
|
6
|
-
spec.version = "0.1.
|
6
|
+
spec.version = "0.1.2"
|
7
7
|
spec.authors = ["joker1007"]
|
8
8
|
spec.email = ["kakyoin.hierophant@gmail.com"]
|
9
9
|
|
@@ -69,7 +69,7 @@ module Fluent
|
|
69
69
|
@cluster_options.merge!(username: @username) if @username
|
70
70
|
@cluster_options.merge!(password: @password) if @password
|
71
71
|
formatter_config = conf.elements("format")[0]
|
72
|
-
@formatter = formatter_create(usage: '
|
72
|
+
@formatter = formatter_create(usage: 'out_cassandra_for_insert', type: 'json', conf: formatter_config)
|
73
73
|
end
|
74
74
|
|
75
75
|
def start
|
@@ -106,7 +106,7 @@ module Fluent
|
|
106
106
|
futures = chunk.open do |io|
|
107
107
|
io.map do |line|
|
108
108
|
line.chomp!
|
109
|
-
cql = "INSERT INTO #{keyspace}.#{table} JSON '#{line}'"
|
109
|
+
cql = "INSERT INTO #{keyspace}.#{table} JSON '#{line.gsub("'", "''")}'"
|
110
110
|
cql << " IF NOT EXISTS" if @if_not_exists
|
111
111
|
cql << " USING TTL #{@ttl}" if @ttl && @ttl > 0
|
112
112
|
@log.debug(cql)
|
@@ -41,7 +41,110 @@ class CassandraJsonOutputTest < Test::Unit::TestCase
|
|
41
41
|
assert { result.size == 1 }
|
42
42
|
|
43
43
|
first = result.each.to_a[0]
|
44
|
-
|
44
|
+
expected = data.dup
|
45
|
+
expected["col6"] = Set.new(data["col6"])
|
46
|
+
assert { first["id"] == expected["id"] }
|
47
|
+
(1..7).each do |i|
|
48
|
+
assert { first["col#{i}"] == expected["col#{i}"] }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
test "quoted data" do
|
53
|
+
driver = create_driver
|
54
|
+
time = Time.local(2018, 5, 8, 14, 10, 5)
|
55
|
+
data = {
|
56
|
+
"id" => 1,
|
57
|
+
"col1" => "text'data",
|
58
|
+
"col2" => time,
|
59
|
+
"col3" => true,
|
60
|
+
"col4" => 1.23,
|
61
|
+
"col5" => [1, 2, 3],
|
62
|
+
"col6" => ["one", "t\"wo", "th'r''ee"],
|
63
|
+
"col7" => {"key1" => "val1", "key2" => "val2"},
|
64
|
+
}
|
65
|
+
invalid_data = data.merge("id" => "invalid")
|
66
|
+
driver.run do
|
67
|
+
driver.feed("tag", Time.now.to_i, data)
|
68
|
+
driver.feed("tag", Time.now.to_i, data)
|
69
|
+
driver.feed("tag", Time.now.to_i, invalid_data)
|
70
|
+
end
|
71
|
+
result = @session.execute("SELECT * FROM test_keyspace.test_table")
|
72
|
+
assert { result.size == 1 }
|
73
|
+
|
74
|
+
first = result.each.to_a[0]
|
75
|
+
data["col6"] = Set.new(data["col6"])
|
76
|
+
assert { first["id"] == data["id"] }
|
77
|
+
(1..7).each do |i|
|
78
|
+
assert { first["col#{i}"] == data["col#{i}"] }
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
test "write data (if not exist)" do
|
83
|
+
conf = %[
|
84
|
+
hosts #{ENV.fetch("CASSANDRA_HOST", "127.0.0.1")}
|
85
|
+
port #{ENV.fetch("CASSANDRA_PORT", "9042")}
|
86
|
+
keyspace test_keyspace
|
87
|
+
table test_table
|
88
|
+
if_not_exists true
|
89
|
+
]
|
90
|
+
driver = create_driver(conf)
|
91
|
+
time = Time.local(2018, 5, 8, 14, 10, 5)
|
92
|
+
data = {
|
93
|
+
"id" => 1,
|
94
|
+
"col1" => "textdata",
|
95
|
+
"col2" => time,
|
96
|
+
"col3" => true,
|
97
|
+
"col4" => 1.23,
|
98
|
+
"col5" => [1, 2, 3],
|
99
|
+
"col6" => ["one", "two", "three"],
|
100
|
+
"col7" => {"key1" => "val1", "key2" => "val2"},
|
101
|
+
}
|
102
|
+
driver.run do
|
103
|
+
driver.feed("tag", Time.now.to_i, data)
|
104
|
+
end
|
105
|
+
result = @session.execute("SELECT * FROM test_keyspace.test_table")
|
106
|
+
assert { result.size == 1 }
|
107
|
+
|
108
|
+
first = result.each.to_a[0]
|
109
|
+
data["col6"] = Set.new(data["col6"])
|
110
|
+
assert { first["id"] == data["id"] }
|
111
|
+
(1..7).each do |i|
|
112
|
+
assert { first["col#{i}"] == data["col#{i}"] }
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
test "write data (ttl)" do
|
117
|
+
conf = %[
|
118
|
+
hosts #{ENV.fetch("CASSANDRA_HOST", "127.0.0.1")}
|
119
|
+
port #{ENV.fetch("CASSANDRA_PORT", "9042")}
|
120
|
+
keyspace test_keyspace
|
121
|
+
table test_table
|
122
|
+
ttl 30
|
123
|
+
]
|
124
|
+
driver = create_driver(conf)
|
125
|
+
time = Time.local(2018, 5, 8, 14, 10, 5)
|
126
|
+
data = {
|
127
|
+
"id" => 1,
|
128
|
+
"col1" => "textdata",
|
129
|
+
"col2" => time,
|
130
|
+
"col3" => true,
|
131
|
+
"col4" => 1.23,
|
132
|
+
"col5" => [1, 2, 3],
|
133
|
+
"col6" => ["one", "two", "three"],
|
134
|
+
"col7" => {"key1" => "val1", "key2" => "val2"},
|
135
|
+
}
|
136
|
+
driver.run do
|
137
|
+
driver.feed("tag", Time.now.to_i, data)
|
138
|
+
end
|
139
|
+
result = @session.execute("SELECT * FROM test_keyspace.test_table")
|
140
|
+
assert { result.size == 1 }
|
141
|
+
|
142
|
+
first = result.each.to_a[0]
|
143
|
+
data["col6"] = Set.new(data["col6"])
|
144
|
+
assert { first["id"] == data["id"] }
|
145
|
+
(1..7).each do |i|
|
146
|
+
assert { first["col#{i}"] == data["col#{i}"] }
|
147
|
+
end
|
45
148
|
end
|
46
149
|
|
47
150
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-cassandra-json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- joker1007
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|