Skip to content

Commit

Permalink
out: support mixed case on command in record case
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Jan 16, 2018
1 parent 6f99f34 commit 10d015d
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 5 deletions.
15 changes: 10 additions & 5 deletions lib/fluent/plugin/out_groonga.rb
Expand Up @@ -583,22 +583,27 @@ def emit(chunk)
records = []
chunk.msgpack_each do |message|
tag, _, record = message
name = nil
arguments = nil
case tag
when /\Agroonga\.command\./
name = $POSTMATCH
arguments = record
when "groonga.command"
name = record["name"]
arguments = record["arguments"]
end

if name
unless records.empty?
store_records(records)
records.clear
end
@client.execute(name, record)
@client.execute(name, arguments)
case name
when /\A(?:table|column)_(?:create|remove)/
@schema.clear_cache
end
when "groonga.command"
name = record["name"]
arguments = record["arguments"]
@client.execute(name, arguments)
else
records << record
end
Expand Down
67 changes: 67 additions & 0 deletions test/test_output.rb
Expand Up @@ -405,6 +405,73 @@ def column_list_response_body
]
end

def test_command_name_position_record
@response_bodies << JSON.generate([
[0, 0.0, 0.0],
table_list_response_body,
])
@response_bodies << JSON.generate([
[0, 0.0, 0.0],
column_list_response_body,
])
driver = create_driver
time = event_time("2012-10-26T08:45:42Z")
driver.run do
@response_bodies << JSON.generate([[0, 0.0, 0.0], 2])
driver.feed("log", time + 0, {"message" => "message1"})
driver.feed("log", time + 1, {"message" => "message2"})

@response_bodies << JSON.generate([[0, 0.0, 0.0], true])
driver.feed("groonga.command",
time + 2,
{
"name" => "column_create",
"arguments" => {
"table" => "Logs",
"name" => "new_column",
"flags" => "COLUMN_SCALAR",
"type" => "ShortText",
},
})

@response_bodies << JSON.generate([
[0, 0.0, 0.0],
table_list_response_body,
])
new_column_list_response_body = column_list_response_body
new_column_list_response_body << [
258,
"new_column",
"/tmp/db/db.0000102",
"scalar",
"COLUMN_SCALAR",
"Logs",
"ShortText",
[
],
]
@response_bodies << JSON.generate([
[0, 0.0, 0.0],
new_column_list_response_body,
])
@response_bodies << JSON.generate([[0, 0.0, 0.0], 2])
driver.feed("log", time + 3,
{"message" => "message3", "new_column" => "value1"})
driver.feed("log", time + 4,
{"message" => "message4", "new_column" => "value2"})
end
assert_equal([
"/d/table_list",
"/d/column_list?table=Logs",
"/d/load?table=Logs",
"/d/column_create?flags=COLUMN_SCALAR&name=new_column&table=Logs&type=ShortText",
"/d/table_list",
"/d/column_list?table=Logs",
"/d/load?table=Logs",
],
@request_urls)
end

def test_command_name_position_tag
@response_bodies << JSON.generate([
[0, 0.0, 0.0],
Expand Down

0 comments on commit 10d015d

Please sign in to comment.