test/plugin/test_out_mackerel.rb in fluent-plugin-mackerel-0.0.7 vs test/plugin/test_out_mackerel.rb in fluent-plugin-mackerel-0.0.8

- old
+ new

@@ -59,10 +59,18 @@ hostid xyz metrics_name service.${out_key} out_key_pattern ^val[0-9]$ ] + CONFIG_FOR_ISSUE_4 = %[ + type mackerel + api_key 123456 + hostid xyz + metrics_name a-${[1]}-b.${out_key} + out_keys val1,val2 + ] + def create_driver(conf = CONFIG, tag='test') Fluent::Test::BufferedOutputTestDriver.new(Fluent::MackerelOutput, tag).configure(conf) end def test_configure @@ -132,7 +140,56 @@ ENV["TZ"]="Asia/Tokyo" t = Time.strptime('2014-05-14 01:11:38', '%Y-%m-%d %T') d.emit({'val1' => 1, 'val2' => 2, 'foo' => 3}, t) d.run() end + + def test_write_issue4 + d = create_driver(CONFIG_FOR_ISSUE_4, tag='test.status') + mock(d.instance.mackerel).post_metrics([ + {"hostId"=>"xyz", "value"=>1.0, "time"=>1399997498, "name"=>"custom.a-status-b.val1"}, + {"hostId"=>"xyz", "value"=>2.0, "time"=>1399997498, "name"=>"custom.a-status-b.val2"}, + ]) + + ENV["TZ"]="Asia/Tokyo" + t = Time.strptime('2014-05-14 01:11:38', '%Y-%m-%d %T') + d.emit({'val1' => 1, 'val2' => 2, 'foo' => 3}, t) + d.run() + end + + def test_name_processor + [ + {metrics_name: "${out_key}", expected: "val1"}, + {metrics_name: "name.${out_key}", expected: "name.val1"}, + {metrics_name: "a-${out_key}", expected: "a-val1"}, + {metrics_name: "${out_key}-b", expected: "val1-b"}, + {metrics_name: "a-${out_key}-b", expected: "a-val1-b"}, + {metrics_name: "name.a-${out_key}-b", expected: "name.a-val1-b"}, + {metrics_name: "${out_key}-a-${out_key}", expected: "val1-a-val1"}, + {metrics_name: "${out_keyx}", expected: "${out_keyx}"}, + {metrics_name: "${[1]}", expected: "status"}, + {metrics_name: "${[-1]}", expected: "status"}, + {metrics_name: "name.${[1]}", expected: "name.status"}, + {metrics_name: "a-${[1]}", expected: "a-status"}, + {metrics_name: "${[1]}-b", expected: "status-b"}, + {metrics_name: "a-${[1]}-b", expected: "a-status-b"}, + {metrics_name: "${[0]}.${[1]}", expected: "test.status"}, + {metrics_name: "${[0]}-${[1]}", expected: "test-status"}, + {metrics_name: "${[0]}-${[1]}-${out_key}", expected: "test-status-val1"}, + {metrics_name: "${[2]}", expected: ""}, + ].map { |obj| + test_config = %[ + type mackerel + api_key 123456 + hostid xyz + metrics_name #{obj[:metrics_name]} + out_keys val1,val2 + ] + d = create_driver(test_config, tag='test.status') + name_processor = d.instance.instance_variable_get(:@name_processor) + actual = name_processor.map{ |p| p.call(:out_key => 'val1', :tokens => ['test', 'status']) }.join('.') + assert_equal obj[:expected], actual + } + end + end