fluent-plugin-elasticsearch 5.0.3 → 5.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/linux.yml +1 -1
- data/.github/workflows/macos.yml +1 -1
- data/.github/workflows/windows.yml +1 -1
- data/History.md +19 -0
- data/README.md +84 -2
- data/fluent-plugin-elasticsearch.gemspec +1 -1
- data/lib/fluent/plugin/elasticsearch_error_handler.rb +13 -2
- data/lib/fluent/plugin/elasticsearch_index_template.rb +13 -1
- data/lib/fluent/plugin/out_elasticsearch.rb +52 -4
- data/lib/fluent/plugin/out_elasticsearch_data_stream.rb +81 -49
- data/test/plugin/test_elasticsearch_error_handler.rb +25 -8
- data/test/plugin/test_elasticsearch_fallback_selector.rb +1 -1
- data/test/plugin/test_elasticsearch_index_lifecycle_management.rb +10 -0
- data/test/plugin/test_in_elasticsearch.rb +12 -0
- data/test/plugin/test_out_elasticsearch.rb +412 -18
- data/test/plugin/test_out_elasticsearch_data_stream.rb +348 -98
- data/test/plugin/test_out_elasticsearch_dynamic.rb +100 -5
- metadata +3 -3
@@ -34,6 +34,10 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
34
34
|
}.configure(conf)
|
35
35
|
end
|
36
36
|
|
37
|
+
def elasticsearch_transport_layer_decoupling?
|
38
|
+
Gem::Version.create(::Elasticsearch::Transport::VERSION) >= Gem::Version.new("7.14.0")
|
39
|
+
end
|
40
|
+
|
37
41
|
def default_type_name
|
38
42
|
Fluent::Plugin::ElasticsearchOutput::DEFAULT_TYPE_NAME
|
39
43
|
end
|
@@ -54,6 +58,11 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
54
58
|
end
|
55
59
|
end
|
56
60
|
|
61
|
+
def stub_elastic_info(url="http://localhost:9200/", version="6.4.2")
|
62
|
+
body ="{\"version\":{\"number\":\"#{version}\", \"build_flavor\":\"default\"},\"tagline\" : \"You Know, for Search\"}"
|
63
|
+
stub_request(:get, url).to_return({:status => 200, :body => body, :headers => { 'Content-Type' => 'json' } })
|
64
|
+
end
|
65
|
+
|
57
66
|
def stub_elastic_unavailable(url="http://localhost:9200/_bulk")
|
58
67
|
stub_request(:post, url).to_return(:status => [503, "Service Unavailable"])
|
59
68
|
end
|
@@ -152,16 +161,25 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
152
161
|
}
|
153
162
|
instance = driver(config).instance
|
154
163
|
|
155
|
-
|
164
|
+
if elasticsearch_transport_layer_decoupling?
|
165
|
+
assert_equal nil, instance.client.transport.transport.options[:transport_options][:headers]["Content-Encoding"]
|
166
|
+
else
|
167
|
+
assert_equal nil, instance.client.transport.options[:transport_options][:headers]["Content-Encoding"]
|
168
|
+
end
|
156
169
|
|
157
170
|
stub_request(:post, "http://localhost:9200/_bulk").
|
158
171
|
to_return(status: 200, body: "", headers: {})
|
172
|
+
stub_elastic_info
|
159
173
|
driver.run(default_tag: 'test') do
|
160
174
|
driver.feed(sample_record)
|
161
175
|
end
|
162
176
|
compressable = instance.compressable_connection
|
163
177
|
|
164
|
-
|
178
|
+
if elasticsearch_transport_layer_decoupling?
|
179
|
+
assert_equal "gzip", instance.client(nil, compressable).transport.transport.options[:transport_options][:headers]["Content-Encoding"]
|
180
|
+
else
|
181
|
+
assert_equal "gzip", instance.client(nil, compressable).transport.options[:transport_options][:headers]["Content-Encoding"]
|
182
|
+
end
|
165
183
|
end
|
166
184
|
|
167
185
|
test 'check compression option is passed to transport' do
|
@@ -172,16 +190,25 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
172
190
|
}
|
173
191
|
instance = driver(config).instance
|
174
192
|
|
175
|
-
|
193
|
+
if elasticsearch_transport_layer_decoupling?
|
194
|
+
assert_equal false, instance.client.transport.transport.options[:compression]
|
195
|
+
else
|
196
|
+
assert_equal false, instance.client.transport.options[:compression]
|
197
|
+
end
|
176
198
|
|
177
199
|
stub_request(:post, "http://localhost:9200/_bulk").
|
178
200
|
to_return(status: 200, body: "", headers: {})
|
201
|
+
stub_elastic_info
|
179
202
|
driver.run(default_tag: 'test') do
|
180
203
|
driver.feed(sample_record)
|
181
204
|
end
|
182
205
|
compressable = instance.compressable_connection
|
183
206
|
|
184
|
-
|
207
|
+
if elasticsearch_transport_layer_decoupling?
|
208
|
+
assert_equal true, instance.client(nil, compressable).transport.transport.options[:compression]
|
209
|
+
else
|
210
|
+
assert_equal true, instance.client(nil, compressable).transport.options[:compression]
|
211
|
+
end
|
185
212
|
end
|
186
213
|
|
187
214
|
test 'configure Content-Type' do
|
@@ -348,6 +375,8 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
348
375
|
elastic_request = stub_request(:post, "http://localhost:9200/_bulk").
|
349
376
|
with(headers: { "Content-Type" => "application/json" })
|
350
377
|
end
|
378
|
+
stub_elastic_info('http://localhost:9200')
|
379
|
+
|
351
380
|
driver.run(default_tag: 'test') do
|
352
381
|
driver.feed(sample_record)
|
353
382
|
end
|
@@ -356,6 +385,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
356
385
|
|
357
386
|
def test_writes_to_default_index
|
358
387
|
stub_elastic
|
388
|
+
stub_elastic_info
|
359
389
|
driver.run(default_tag: 'test') do
|
360
390
|
driver.feed(sample_record)
|
361
391
|
end
|
@@ -395,6 +425,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
395
425
|
|
396
426
|
elastic_request = stub_request(:post, "http://localhost:9200/_bulk").
|
397
427
|
to_return(:status => 200, :headers => {'Content-Type' => 'Application/json'}, :body => compressed_body)
|
428
|
+
stub_elastic_info
|
398
429
|
|
399
430
|
driver(config)
|
400
431
|
driver.run(default_tag: 'test') do
|
@@ -406,6 +437,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
406
437
|
|
407
438
|
def test_writes_to_default_type
|
408
439
|
stub_elastic
|
440
|
+
stub_elastic_info
|
409
441
|
driver.run(default_tag: 'test') do
|
410
442
|
driver.feed(sample_record)
|
411
443
|
end
|
@@ -415,6 +447,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
415
447
|
def test_writes_to_specified_index
|
416
448
|
driver.configure("index_name myindex\n")
|
417
449
|
stub_elastic
|
450
|
+
stub_elastic_info
|
418
451
|
driver.run(default_tag: 'test') do
|
419
452
|
driver.feed(sample_record)
|
420
453
|
end
|
@@ -424,6 +457,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
424
457
|
def test_writes_to_specified_index_uppercase
|
425
458
|
driver.configure("index_name MyIndex\n")
|
426
459
|
stub_elastic
|
460
|
+
stub_elastic_info
|
427
461
|
driver.run(default_tag: 'test') do
|
428
462
|
driver.feed(sample_record)
|
429
463
|
end
|
@@ -433,6 +467,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
433
467
|
def test_writes_to_specified_type
|
434
468
|
driver.configure("type_name mytype\n")
|
435
469
|
stub_elastic
|
470
|
+
stub_elastic_info
|
436
471
|
driver.run(default_tag: 'test') do
|
437
472
|
driver.feed(sample_record)
|
438
473
|
end
|
@@ -442,6 +477,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
442
477
|
def test_writes_to_specified_host
|
443
478
|
driver.configure("host 192.168.33.50\n")
|
444
479
|
elastic_request = stub_elastic("http://192.168.33.50:9200/_bulk")
|
480
|
+
stub_elastic_info("http://192.168.33.50:9200/")
|
445
481
|
driver.run(default_tag: 'test') do
|
446
482
|
driver.feed(sample_record)
|
447
483
|
end
|
@@ -451,6 +487,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
451
487
|
def test_writes_to_specified_port
|
452
488
|
driver.configure("port 9201\n")
|
453
489
|
elastic_request = stub_elastic("http://localhost:9201/_bulk")
|
490
|
+
stub_elastic_info("http://localhost:9201/")
|
454
491
|
driver.run(default_tag: 'test') do
|
455
492
|
driver.feed(sample_record)
|
456
493
|
end
|
@@ -466,6 +503,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
466
503
|
hosts.each do |host_info|
|
467
504
|
host, port = host_info
|
468
505
|
stub_elastic_with_store_index_command_counts("http://#{host}:#{port}/_bulk")
|
506
|
+
stub_elastic_info("http://#{host}:#{port}/")
|
469
507
|
end
|
470
508
|
|
471
509
|
driver.run(default_tag: 'test') do
|
@@ -501,6 +539,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
501
539
|
]}
|
502
540
|
|
503
541
|
stub_elastic
|
542
|
+
stub_elastic_info
|
504
543
|
driver.run(default_tag: 'test') do
|
505
544
|
driver.feed(original_hash)
|
506
545
|
end
|
@@ -514,6 +553,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
514
553
|
expected_output = {"foo" => {"bar" => "baz"}}
|
515
554
|
|
516
555
|
stub_elastic
|
556
|
+
stub_elastic_info
|
517
557
|
driver.run(default_tag: 'test') do
|
518
558
|
driver.feed(original_hash)
|
519
559
|
end
|
@@ -522,6 +562,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
522
562
|
|
523
563
|
def test_makes_bulk_request
|
524
564
|
stub_elastic
|
565
|
+
stub_elastic_info
|
525
566
|
driver.run(default_tag: 'test') do
|
526
567
|
driver.feed(sample_record)
|
527
568
|
driver.feed(sample_record.merge('age' => 27))
|
@@ -531,6 +572,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
531
572
|
|
532
573
|
def test_all_records_are_preserved_in_bulk
|
533
574
|
stub_elastic
|
575
|
+
stub_elastic_info
|
534
576
|
driver.run(default_tag: 'test') do
|
535
577
|
driver.feed(sample_record)
|
536
578
|
driver.feed(sample_record.merge('age' => 27))
|
@@ -544,6 +586,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
544
586
|
time = Time.parse Date.today.iso8601
|
545
587
|
logstash_index = "logstash-#{time.getutc.strftime("%Y.%m.%d")}"
|
546
588
|
stub_elastic
|
589
|
+
stub_elastic_info
|
547
590
|
driver.run(default_tag: 'test') do
|
548
591
|
driver.feed(time.to_i, sample_record)
|
549
592
|
end
|
@@ -556,6 +599,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
556
599
|
time = Time.parse Date.today.iso8601
|
557
600
|
utc_index = "logstash-#{time.strftime("%Y.%m.%d")}"
|
558
601
|
stub_elastic
|
602
|
+
stub_elastic_info
|
559
603
|
driver.run(default_tag: 'test') do
|
560
604
|
driver.feed(time.to_i, sample_record)
|
561
605
|
end
|
@@ -568,6 +612,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
568
612
|
time = Time.parse Date.today.iso8601
|
569
613
|
logstash_index = "myprefix-#{time.getutc.strftime("%Y.%m.%d")}"
|
570
614
|
stub_elastic
|
615
|
+
stub_elastic_info
|
571
616
|
driver.run(default_tag: 'test') do
|
572
617
|
driver.feed(time.to_i, sample_record)
|
573
618
|
end
|
@@ -582,6 +627,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
582
627
|
time = Time.parse Date.today.iso8601
|
583
628
|
logstash_index = "myprefix#{separator}#{time.getutc.strftime("%Y.%m.%d")}"
|
584
629
|
stub_elastic
|
630
|
+
stub_elastic_info
|
585
631
|
driver.run(default_tag: 'test') do
|
586
632
|
driver.feed(time.to_i, sample_record)
|
587
633
|
end
|
@@ -594,18 +640,20 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
594
640
|
time = Time.parse Date.today.iso8601
|
595
641
|
logstash_index = "myprefix-#{time.getutc.strftime("%Y.%m.%d")}"
|
596
642
|
stub_elastic
|
643
|
+
stub_elastic_info
|
597
644
|
driver.run(default_tag: 'test') do
|
598
645
|
driver.feed(time.to_i, sample_record)
|
599
646
|
end
|
600
647
|
assert_equal(logstash_index, index_cmds.first['index']['_index'])
|
601
648
|
end
|
602
649
|
|
603
|
-
|
650
|
+
def test_writes_to_logstash_index_with_specified_dateformat
|
604
651
|
driver.configure("logstash_format true
|
605
652
|
logstash_dateformat %Y.%m")
|
606
653
|
time = Time.parse Date.today.iso8601
|
607
654
|
logstash_index = "logstash-#{time.getutc.strftime("%Y.%m")}"
|
608
655
|
stub_elastic
|
656
|
+
stub_elastic_info
|
609
657
|
driver.run(default_tag: 'test') do
|
610
658
|
driver.feed(time.to_i, sample_record)
|
611
659
|
end
|
@@ -619,6 +667,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
619
667
|
time = Time.parse Date.today.iso8601
|
620
668
|
logstash_index = "myprefix-#{time.getutc.strftime("%Y.%m")}"
|
621
669
|
stub_elastic
|
670
|
+
stub_elastic_info
|
622
671
|
driver.run(default_tag: 'test') do
|
623
672
|
driver.feed(time.to_i, sample_record)
|
624
673
|
end
|
@@ -627,6 +676,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
627
676
|
|
628
677
|
def test_doesnt_add_logstash_timestamp_by_default
|
629
678
|
stub_elastic
|
679
|
+
stub_elastic_info
|
630
680
|
driver.run(default_tag: 'test') do
|
631
681
|
driver.feed(sample_record)
|
632
682
|
end
|
@@ -636,6 +686,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
636
686
|
def test_adds_logstash_timestamp_when_configured
|
637
687
|
driver.configure("logstash_format true\n")
|
638
688
|
stub_elastic
|
689
|
+
stub_elastic_info
|
639
690
|
time = Fluent::EventTime.new(Time.now.to_i, 123456789)
|
640
691
|
driver.run(default_tag: 'test') do
|
641
692
|
driver.feed(time, sample_record)
|
@@ -648,6 +699,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
648
699
|
driver.configure("logstash_format true
|
649
700
|
time_precision 3\n")
|
650
701
|
stub_elastic
|
702
|
+
stub_elastic_info
|
651
703
|
time = Fluent::EventTime.new(Time.now.to_i, 123456789)
|
652
704
|
driver.run(default_tag: 'test') do
|
653
705
|
driver.feed(time, sample_record)
|
@@ -659,6 +711,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
659
711
|
def test_uses_custom_timestamp_when_included_in_record
|
660
712
|
driver.configure("include_timestamp true\n")
|
661
713
|
stub_elastic
|
714
|
+
stub_elastic_info
|
662
715
|
ts = DateTime.new(2001,2,3).iso8601
|
663
716
|
driver.run(default_tag: 'test') do
|
664
717
|
driver.feed(sample_record.merge!('@timestamp' => ts))
|
@@ -670,6 +723,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
670
723
|
def test_uses_custom_timestamp_when_included_in_record_logstash
|
671
724
|
driver.configure("logstash_format true\n")
|
672
725
|
stub_elastic
|
726
|
+
stub_elastic_info
|
673
727
|
ts = DateTime.new(2001,2,3).iso8601
|
674
728
|
driver.run(default_tag: 'test') do
|
675
729
|
driver.feed(sample_record.merge!('@timestamp' => ts))
|
@@ -682,6 +736,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
682
736
|
driver.configure("logstash_format true
|
683
737
|
time_key vtm\n")
|
684
738
|
stub_elastic
|
739
|
+
stub_elastic_info
|
685
740
|
ts = DateTime.new(2001,2,3).iso8601
|
686
741
|
driver.run(default_tag: 'test') do
|
687
742
|
driver.feed(sample_record.merge!('vtm' => ts))
|
@@ -694,6 +749,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
694
749
|
driver.configure("include_timestamp true
|
695
750
|
time_key vtm\n")
|
696
751
|
stub_elastic
|
752
|
+
stub_elastic_info
|
697
753
|
ts = DateTime.new(2001,2,3).iso8601
|
698
754
|
driver.run(default_tag: 'test') do
|
699
755
|
driver.feed(sample_record.merge!('vtm' => ts))
|
@@ -707,6 +763,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
707
763
|
index_name test
|
708
764
|
time_key vtm\n")
|
709
765
|
stub_elastic
|
766
|
+
stub_elastic_info
|
710
767
|
ts = DateTime.new(2001,2,3).iso8601
|
711
768
|
driver.run(default_tag: 'test') do
|
712
769
|
driver.feed(sample_record.merge!('vtm' => ts))
|
@@ -721,6 +778,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
721
778
|
time_key vtm
|
722
779
|
time_key_exclude_timestamp true\n")
|
723
780
|
stub_elastic
|
781
|
+
stub_elastic_info
|
724
782
|
ts = DateTime.new(2001,2,3).iso8601
|
725
783
|
driver.run(default_tag: 'test') do
|
726
784
|
driver.feed(sample_record.merge!('vtm' => ts))
|
@@ -733,6 +791,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
733
791
|
time_key vtm
|
734
792
|
time_key_exclude_timestamp true\n")
|
735
793
|
stub_elastic
|
794
|
+
stub_elastic_info
|
736
795
|
ts = DateTime.new(2001,2,3).iso8601
|
737
796
|
driver.run(default_tag: 'test') do
|
738
797
|
driver.feed(sample_record.merge!('vtm' => ts))
|
@@ -742,6 +801,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
742
801
|
|
743
802
|
def test_doesnt_add_tag_key_by_default
|
744
803
|
stub_elastic
|
804
|
+
stub_elastic_info
|
745
805
|
driver.run(default_tag: 'test') do
|
746
806
|
driver.feed(sample_record)
|
747
807
|
end
|
@@ -751,6 +811,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
751
811
|
def test_adds_tag_key_when_configured
|
752
812
|
driver.configure("include_tag_key true\n")
|
753
813
|
stub_elastic
|
814
|
+
stub_elastic_info
|
754
815
|
driver.run(default_tag: 'mytag') do
|
755
816
|
driver.feed(sample_record)
|
756
817
|
end
|
@@ -761,6 +822,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
761
822
|
def test_adds_id_key_when_configured
|
762
823
|
driver.configure("id_key request_id\n")
|
763
824
|
stub_elastic
|
825
|
+
stub_elastic_info
|
764
826
|
driver.run(default_tag: 'test') do
|
765
827
|
driver.feed(sample_record)
|
766
828
|
end
|
@@ -771,6 +833,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
771
833
|
def test_adds_nested_id_key_with_dot
|
772
834
|
driver.configure("id_key nested.request_id\n")
|
773
835
|
stub_elastic
|
836
|
+
stub_elastic_info
|
774
837
|
driver.run(default_tag: 'test') do
|
775
838
|
driver.feed(nested_sample_record)
|
776
839
|
end
|
@@ -780,6 +843,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
780
843
|
def test_adds_nested_id_key_with_dollar_dot
|
781
844
|
driver.configure("id_key $.nested.request_id\n")
|
782
845
|
stub_elastic
|
846
|
+
stub_elastic_info
|
783
847
|
driver.run(default_tag: 'test') do
|
784
848
|
driver.feed(nested_sample_record)
|
785
849
|
end
|
@@ -789,6 +853,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
789
853
|
def test_adds_nested_id_key_with_bracket
|
790
854
|
driver.configure("id_key $['nested']['request_id']\n")
|
791
855
|
stub_elastic
|
856
|
+
stub_elastic_info
|
792
857
|
driver.run(default_tag: 'test') do
|
793
858
|
driver.feed(nested_sample_record)
|
794
859
|
end
|
@@ -799,6 +864,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
799
864
|
def test_doesnt_add_id_key_if_missing_when_configured
|
800
865
|
driver.configure("id_key another_request_id\n")
|
801
866
|
stub_elastic
|
867
|
+
stub_elastic_info
|
802
868
|
driver.run(default_tag: 'test') do
|
803
869
|
driver.feed(sample_record)
|
804
870
|
end
|
@@ -807,6 +873,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
807
873
|
|
808
874
|
def test_adds_id_key_when_not_configured
|
809
875
|
stub_elastic
|
876
|
+
stub_elastic_info
|
810
877
|
driver.run(default_tag: 'test') do
|
811
878
|
driver.feed(sample_record)
|
812
879
|
end
|
@@ -816,6 +883,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
816
883
|
def test_adds_parent_key_when_configured
|
817
884
|
driver.configure("parent_key parent_id\n")
|
818
885
|
stub_elastic
|
886
|
+
stub_elastic_info
|
819
887
|
driver.run(default_tag: 'test') do
|
820
888
|
driver.feed(sample_record)
|
821
889
|
end
|
@@ -826,6 +894,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
826
894
|
def test_adds_nested_parent_key_with_dot
|
827
895
|
driver.configure("parent_key nested.parent_id\n")
|
828
896
|
stub_elastic
|
897
|
+
stub_elastic_info
|
829
898
|
driver.run(default_tag: 'test') do
|
830
899
|
driver.feed(nested_sample_record)
|
831
900
|
end
|
@@ -835,6 +904,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
835
904
|
def test_adds_nested_parent_key_with_dollar_dot
|
836
905
|
driver.configure("parent_key $.nested.parent_id\n")
|
837
906
|
stub_elastic
|
907
|
+
stub_elastic_info
|
838
908
|
driver.run(default_tag: 'test') do
|
839
909
|
driver.feed(nested_sample_record)
|
840
910
|
end
|
@@ -844,6 +914,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
844
914
|
def test_adds_nested_parent_key_with_bracket
|
845
915
|
driver.configure("parent_key $['nested']['parent_id']\n")
|
846
916
|
stub_elastic
|
917
|
+
stub_elastic_info
|
847
918
|
driver.run(default_tag: 'test') do
|
848
919
|
driver.feed(nested_sample_record)
|
849
920
|
end
|
@@ -854,6 +925,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
854
925
|
def test_doesnt_add_parent_key_if_missing_when_configured
|
855
926
|
driver.configure("parent_key another_parent_id\n")
|
856
927
|
stub_elastic
|
928
|
+
stub_elastic_info
|
857
929
|
driver.run(default_tag: 'test') do
|
858
930
|
driver.feed(sample_record)
|
859
931
|
end
|
@@ -862,6 +934,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
862
934
|
|
863
935
|
def test_adds_parent_key_when_not_configured
|
864
936
|
stub_elastic
|
937
|
+
stub_elastic_info
|
865
938
|
driver.run(default_tag: 'test') do
|
866
939
|
driver.feed(sample_record)
|
867
940
|
end
|
@@ -872,6 +945,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
872
945
|
def test_es6
|
873
946
|
driver("routing_key routing_id\n", 6)
|
874
947
|
stub_elastic
|
948
|
+
stub_elastic_info
|
875
949
|
driver.run(default_tag: 'test') do
|
876
950
|
driver.feed(sample_record)
|
877
951
|
end
|
@@ -881,6 +955,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
881
955
|
def test_es7
|
882
956
|
driver("routing_key routing_id\n", 7)
|
883
957
|
stub_elastic
|
958
|
+
stub_elastic_info
|
884
959
|
driver.run(default_tag: 'test') do
|
885
960
|
driver.feed(sample_record)
|
886
961
|
end
|
@@ -892,6 +967,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
892
967
|
def test_adds_nested_routing_key_with_dot
|
893
968
|
driver.configure("routing_key nested.routing_id\n")
|
894
969
|
stub_elastic
|
970
|
+
stub_elastic_info
|
895
971
|
driver.run(default_tag: 'test') do
|
896
972
|
driver.feed(nested_sample_record)
|
897
973
|
end
|
@@ -901,6 +977,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
901
977
|
def test_adds_nested_routing_key_with_dollar_dot
|
902
978
|
driver.configure("routing_key $.nested.routing_id\n")
|
903
979
|
stub_elastic
|
980
|
+
stub_elastic_info
|
904
981
|
driver.run(default_tag: 'test') do
|
905
982
|
driver.feed(nested_sample_record)
|
906
983
|
end
|
@@ -910,6 +987,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
910
987
|
def test_adds_nested_routing_key_with_bracket
|
911
988
|
driver.configure("routing_key $['nested']['routing_id']\n")
|
912
989
|
stub_elastic
|
990
|
+
stub_elastic_info
|
913
991
|
driver.run(default_tag: 'test') do
|
914
992
|
driver.feed(nested_sample_record)
|
915
993
|
end
|
@@ -920,6 +998,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
920
998
|
def test_doesnt_add_routing_key_if_missing_when_configured
|
921
999
|
driver.configure("routing_key another_routing_id\n")
|
922
1000
|
stub_elastic
|
1001
|
+
stub_elastic_info
|
923
1002
|
driver.run(default_tag: 'test') do
|
924
1003
|
driver.feed(sample_record)
|
925
1004
|
end
|
@@ -928,6 +1007,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
928
1007
|
|
929
1008
|
def test_adds_routing_key_when_not_configured
|
930
1009
|
stub_elastic
|
1010
|
+
stub_elastic_info
|
931
1011
|
driver.run(default_tag: 'test') do
|
932
1012
|
driver.feed(sample_record)
|
933
1013
|
end
|
@@ -937,6 +1017,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
937
1017
|
def test_remove_one_key
|
938
1018
|
driver.configure("remove_keys key1\n")
|
939
1019
|
stub_elastic
|
1020
|
+
stub_elastic_info
|
940
1021
|
driver.run(default_tag: 'test') do
|
941
1022
|
driver.feed(sample_record.merge('key1' => 'v1', 'key2' => 'v2'))
|
942
1023
|
end
|
@@ -947,6 +1028,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
947
1028
|
def test_remove_multi_keys
|
948
1029
|
driver.configure("remove_keys key1, key2\n")
|
949
1030
|
stub_elastic
|
1031
|
+
stub_elastic_info
|
950
1032
|
driver.run(default_tag: 'test') do
|
951
1033
|
driver.feed(sample_record.merge('key1' => 'v1', 'key2' => 'v2'))
|
952
1034
|
end
|
@@ -956,6 +1038,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
956
1038
|
|
957
1039
|
def test_request_error
|
958
1040
|
stub_elastic_unavailable
|
1041
|
+
stub_elastic_info
|
959
1042
|
assert_raise(Fluent::Plugin::ElasticsearchOutput::RecoverableRequestFailure) {
|
960
1043
|
driver.run(default_tag: 'test', shutdown: false) do
|
961
1044
|
driver.feed(sample_record)
|
@@ -967,6 +1050,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
967
1050
|
omit("retry_forever test is unstable.") if ENV["CI"]
|
968
1051
|
|
969
1052
|
stub_elastic
|
1053
|
+
stub_elastic_info
|
970
1054
|
driver.configure(Fluent::Config::Element.new(
|
971
1055
|
'ROOT', '', {
|
972
1056
|
'@type' => 'elasticsearch',
|
@@ -986,6 +1070,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
986
1070
|
|
987
1071
|
def test_tag_parts_index_error_event
|
988
1072
|
stub_elastic
|
1073
|
+
stub_elastic_info
|
989
1074
|
driver.configure("logstash_prefix ${tag_parts[1]}\n")
|
990
1075
|
flexmock(driver.instance.router).should_receive(:emit_error_event)
|
991
1076
|
.with('test', Fluent::EventTime, Hash, TypeError).once
|
@@ -1001,6 +1086,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1001
1086
|
connection_resets += 1
|
1002
1087
|
raise Faraday::ConnectionFailed, "Test message"
|
1003
1088
|
end
|
1089
|
+
stub_elastic_info
|
1004
1090
|
|
1005
1091
|
assert_raise(Fluent::Plugin::ElasticsearchOutput::RecoverableRequestFailure) {
|
1006
1092
|
driver.run(default_tag: 'test', shutdown: false) do
|
@@ -1017,6 +1103,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1017
1103
|
connection_resets += 1
|
1018
1104
|
raise ZeroDivisionError, "any not host_unreachable_exceptions exception"
|
1019
1105
|
end
|
1106
|
+
stub_elastic_info
|
1020
1107
|
|
1021
1108
|
driver.configure("reconnect_on_error true\n")
|
1022
1109
|
|
@@ -1043,6 +1130,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1043
1130
|
connection_resets += 1
|
1044
1131
|
raise ZeroDivisionError, "any not host_unreachable_exceptions exception"
|
1045
1132
|
end
|
1133
|
+
stub_elastic_info
|
1046
1134
|
|
1047
1135
|
driver.configure("reconnect_on_error false\n")
|
1048
1136
|
|
@@ -1063,6 +1151,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1063
1151
|
def test_update_should_not_write_if_theres_no_id
|
1064
1152
|
driver.configure("write_operation update\n")
|
1065
1153
|
stub_elastic
|
1154
|
+
stub_elastic_info
|
1066
1155
|
driver.run(default_tag: 'test') do
|
1067
1156
|
driver.feed(sample_record)
|
1068
1157
|
end
|
@@ -1072,6 +1161,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1072
1161
|
def test_upsert_should_not_write_if_theres_no_id
|
1073
1162
|
driver.configure("write_operation upsert\n")
|
1074
1163
|
stub_elastic
|
1164
|
+
stub_elastic_info
|
1075
1165
|
driver.run(default_tag: 'test') do
|
1076
1166
|
driver.feed(sample_record)
|
1077
1167
|
end
|
@@ -1081,6 +1171,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1081
1171
|
def test_create_should_not_write_if_theres_no_id
|
1082
1172
|
driver.configure("write_operation create\n")
|
1083
1173
|
stub_elastic
|
1174
|
+
stub_elastic_info
|
1084
1175
|
driver.run(default_tag: 'test') do
|
1085
1176
|
driver.feed(sample_record)
|
1086
1177
|
end
|
@@ -1091,6 +1182,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1091
1182
|
driver.configure("write_operation update
|
1092
1183
|
id_key request_id")
|
1093
1184
|
stub_elastic
|
1185
|
+
stub_elastic_info
|
1094
1186
|
driver.run(default_tag: 'test') do
|
1095
1187
|
driver.feed(sample_record)
|
1096
1188
|
end
|
@@ -1102,6 +1194,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1102
1194
|
driver.configure("write_operation upsert
|
1103
1195
|
id_key request_id")
|
1104
1196
|
stub_elastic
|
1197
|
+
stub_elastic_info
|
1105
1198
|
driver.run(default_tag: 'test') do
|
1106
1199
|
driver.feed(sample_record)
|
1107
1200
|
end
|
@@ -1113,6 +1206,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1113
1206
|
driver.configure("write_operation create
|
1114
1207
|
id_key request_id")
|
1115
1208
|
stub_elastic
|
1209
|
+
stub_elastic_info
|
1116
1210
|
driver.run(default_tag: 'test') do
|
1117
1211
|
driver.feed(sample_record)
|
1118
1212
|
end
|
@@ -1121,6 +1215,7 @@ class ElasticsearchOutputDynamic < Test::Unit::TestCase
|
|
1121
1215
|
|
1122
1216
|
def test_include_index_in_url
|
1123
1217
|
stub_elastic('http://localhost:9200/logstash-2018.01.01/_bulk')
|
1218
|
+
stub_elastic_info('http://localhost:9200/')
|
1124
1219
|
|
1125
1220
|
driver.configure("index_name logstash-2018.01.01
|
1126
1221
|
include_index_in_url true")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-elasticsearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- diogo
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-10-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: fluentd
|
@@ -223,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
223
|
- !ruby/object:Gem::Version
|
224
224
|
version: '0'
|
225
225
|
requirements: []
|
226
|
-
rubygems_version: 3.2.
|
226
|
+
rubygems_version: 3.2.22
|
227
227
|
signing_key:
|
228
228
|
specification_version: 4
|
229
229
|
summary: Elasticsearch output plugin for Fluent event collector
|