fluent-plugin-elb-access-log 0.4.0 → 0.4.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.
- checksums.yaml +4 -4
- data/.travis.yml +7 -4
- data/README.md +1 -2
- data/lib/fluent/plugin/in_elb_access_log.rb +5 -3
- data/lib/fluent_plugin_elb_access_log/version.rb +1 -1
- data/spec/in_elb_access_log_alb_spec.rb +17 -27
- data/spec/in_elb_access_log_clb_spec.rb +3 -0
- data/spec/in_elb_access_log_client_spec.rb +133 -0
- data/spec/spec_helper.rb +11 -0
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 48b23acb9715aceaba32535f3ee24da9c672e1e0
         | 
| 4 | 
            +
              data.tar.gz: 161ce0f55e79b042af34171060d3e4d611f6acdb
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a9542814648731d30041c6bf7c9c30bfd822d3be137429628c2eb77aae0f02a7aeda538090065f5be6825cef415c1d60b18e62c07ea3b8edd3623d5be522a03f
         | 
| 7 | 
            +
              data.tar.gz: db0422ee4c1b5478eca4ee1531ae947685eb8584942ff264646dfa918147cce605b54625cb69e005caa90910819550a963d5adc8f8377bffa292546c31f71cb9
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -26,7 +26,7 @@ Or install it yourself as: | |
| 26 26 |  | 
| 27 27 | 
             
            ```apache
         | 
| 28 28 | 
             
            <source>
         | 
| 29 | 
            -
              type elb_access_log
         | 
| 29 | 
            +
              @type elb_access_log
         | 
| 30 30 | 
             
              #aws_key_id YOUR_ACCESS_KEY_ID
         | 
| 31 31 | 
             
              #aws_sec_key YOUR_SECRET_ACCESS_KEY
         | 
| 32 32 | 
             
              #profile PROFILE_NAME
         | 
| @@ -58,7 +58,6 @@ Or install it yourself as: | |
| 58 58 | 
             
            see http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/access-log-collection.html
         | 
| 59 59 |  | 
| 60 60 | 
             
            ```json
         | 
| 61 | 
            -
            // elb.access_log:
         | 
| 62 61 | 
             
            {
         | 
| 63 62 | 
             
              "timestamp":"2015-05-24T08:25:36.229576Z",
         | 
| 64 63 | 
             
              "elb":"hoge",
         | 
| @@ -134,6 +134,7 @@ class Fluent::Plugin::ElbAccessLogInput < Fluent::Input | |
| 134 134 |  | 
| 135 135 | 
             
              def shutdown
         | 
| 136 136 | 
             
                @loop.stop
         | 
| 137 | 
            +
                @thread.kill
         | 
| 137 138 | 
             
                @thread.join
         | 
| 138 139 | 
             
                super
         | 
| 139 140 | 
             
              end
         | 
| @@ -161,16 +162,17 @@ class Fluent::Plugin::ElbAccessLogInput < Fluent::Input | |
| 161 162 | 
             
                      end
         | 
| 162 163 |  | 
| 163 164 | 
             
                      unless @history.include?(obj.key)
         | 
| 164 | 
            -
                        access_log = client.get_object(bucket: @s3_bucket, key: obj.key).body | 
| 165 | 
            +
                        access_log = client.get_object(bucket: @s3_bucket, key: obj.key).body
         | 
| 165 166 |  | 
| 166 167 | 
             
                        if obj.key.end_with?('.gz')
         | 
| 167 168 | 
             
                          begin
         | 
| 168 | 
            -
                             | 
| 169 | 
            -
                            access_log = inflated
         | 
| 169 | 
            +
                            access_log = Zlib::GzipReader.wrap(access_log, &:read)
         | 
| 170 170 | 
             
                          rescue Zlib::Error => e
         | 
| 171 171 | 
             
                            @log.warn("#{e.message}: #{access_log.inspect.slice(0, 64)}")
         | 
| 172 172 | 
             
                            next
         | 
| 173 173 | 
             
                          end
         | 
| 174 | 
            +
                        else
         | 
| 175 | 
            +
                          access_log = access_log.string
         | 
| 174 176 | 
             
                        end
         | 
| 175 177 |  | 
| 176 178 | 
             
                        emit_access_log(access_log)
         | 
| @@ -7,6 +7,7 @@ describe Fluent::Plugin::ElbAccessLogInput do | |
| 7 7 |  | 
| 8 8 | 
             
              let(:fluentd_conf) do
         | 
| 9 9 | 
             
                {
         | 
| 10 | 
            +
                  interval: 0,
         | 
| 10 11 | 
             
                  account_id: account_id,
         | 
| 11 12 | 
             
                  s3_bucket: s3_bucket,
         | 
| 12 13 | 
             
                  region: region,
         | 
| @@ -48,7 +49,6 @@ describe Fluent::Plugin::ElbAccessLogInput do | |
| 48 49 | 
             
                  expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: today_prefix) { [] }
         | 
| 49 50 | 
             
                  expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: tomorrow_prefix) { [] }
         | 
| 50 51 | 
             
                  expect(driver.instance).to_not receive(:save_timestamp).with(today)
         | 
| 51 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 52 52 | 
             
                  expect(driver.instance.log).to_not receive(:warn)
         | 
| 53 53 |  | 
| 54 54 | 
             
                  driver_run(driver)
         | 
| @@ -59,14 +59,14 @@ describe Fluent::Plugin::ElbAccessLogInput do | |
| 59 59 |  | 
| 60 60 | 
             
              context 'when access log exists' do
         | 
| 61 61 | 
             
                let(:today_access_log) do
         | 
| 62 | 
            -
                   | 
| 62 | 
            +
                  gzip(<<-EOS)
         | 
| 63 63 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 64 64 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 65 65 | 
             
                  EOS
         | 
| 66 66 | 
             
                end
         | 
| 67 67 |  | 
| 68 68 | 
             
                let(:tomorrow_access_log) do
         | 
| 69 | 
            -
                   | 
| 69 | 
            +
                  gzip(<<-EOS)
         | 
| 70 70 | 
             
            https 2015-05-25T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 71 71 | 
             
            https 2015-05-25T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 72 72 | 
             
                  EOS
         | 
| @@ -94,7 +94,6 @@ https 2015-05-25T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 94 94 | 
             
                  end
         | 
| 95 95 |  | 
| 96 96 | 
             
                  expect(driver.instance).to receive(:save_timestamp).with(tomorrow)
         | 
| 97 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 98 97 | 
             
                  expect(driver.instance.log).to_not receive(:warn)
         | 
| 99 98 |  | 
| 100 99 | 
             
                  driver_run(driver)
         | 
| @@ -260,6 +259,7 @@ https 2015-05-25T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 260 259 | 
             
                context 'when sampling' do
         | 
| 261 260 | 
             
                  let(:fluentd_conf) do
         | 
| 262 261 | 
             
                    {
         | 
| 262 | 
            +
                      interval: 0,
         | 
| 263 263 | 
             
                      account_id: account_id,
         | 
| 264 264 | 
             
                      s3_bucket: s3_bucket,
         | 
| 265 265 | 
             
                      region: region,
         | 
| @@ -279,7 +279,7 @@ https 2015-05-25T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 279 279 |  | 
| 280 280 | 
             
              context 'when include bad URI' do
         | 
| 281 281 | 
             
                let(:today_access_log) do
         | 
| 282 | 
            -
                   | 
| 282 | 
            +
                  gzip(<<-EOS)
         | 
| 283 283 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 284 284 | 
             
                  EOS
         | 
| 285 285 | 
             
                end
         | 
| @@ -297,7 +297,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 297 297 | 
             
                  end
         | 
| 298 298 |  | 
| 299 299 | 
             
                  expect(driver.instance).to receive(:save_timestamp).with(today)
         | 
| 300 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 301 300 |  | 
| 302 301 | 
             
                  allow(Addressable::URI).to receive(:parse).and_raise('parse error')
         | 
| 303 302 | 
             
                  expect(driver.instance.log).to receive(:warn).with('parse error: http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/')
         | 
| @@ -344,13 +343,14 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 344 343 |  | 
| 345 344 | 
             
              context 'when access log exists (with tag option)' do
         | 
| 346 345 | 
             
                let(:today_access_log) do
         | 
| 347 | 
            -
                   | 
| 346 | 
            +
                  gzip(<<-EOS)
         | 
| 348 347 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 349 348 | 
             
                  EOS
         | 
| 350 349 | 
             
                end
         | 
| 351 350 |  | 
| 352 351 | 
             
                let(:fluentd_conf) do
         | 
| 353 352 | 
             
                  {
         | 
| 353 | 
            +
                    interval: 0,
         | 
| 354 354 | 
             
                    account_id: account_id,
         | 
| 355 355 | 
             
                    s3_bucket: s3_bucket,
         | 
| 356 356 | 
             
                    region: region,
         | 
| @@ -373,7 +373,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 373 373 | 
             
                  end
         | 
| 374 374 |  | 
| 375 375 | 
             
                  expect(driver.instance).to receive(:save_timestamp).with(today)
         | 
| 376 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 377 376 | 
             
                  expect(driver.instance.log).to_not receive(:warn)
         | 
| 378 377 |  | 
| 379 378 | 
             
                  driver_run(driver)
         | 
| @@ -426,7 +425,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 426 425 |  | 
| 427 426 | 
             
              context 'when access old log exists' do
         | 
| 428 427 | 
             
                let(:today_access_log) do
         | 
| 429 | 
            -
                   | 
| 428 | 
            +
                  gzip(<<-EOS)
         | 
| 430 429 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 431 430 | 
             
                  EOS
         | 
| 432 431 | 
             
                end
         | 
| @@ -446,7 +445,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 446 445 | 
             
                  end
         | 
| 447 446 |  | 
| 448 447 | 
             
                  expect(driver.instance).to_not receive(:save_timestamp)
         | 
| 449 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 450 448 | 
             
                  expect(driver.instance.log).to_not receive(:warn)
         | 
| 451 449 |  | 
| 452 450 | 
             
                  driver_run(driver)
         | 
| @@ -498,7 +496,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 498 496 |  | 
| 499 497 | 
             
              context 'when parse error' do
         | 
| 500 498 | 
             
                let(:today_access_log) do
         | 
| 501 | 
            -
                   | 
| 499 | 
            +
                  gzip(<<-EOS)
         | 
| 502 500 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 503 501 | 
             
                  EOS
         | 
| 504 502 | 
             
                end
         | 
| @@ -516,7 +514,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 516 514 | 
             
                  end
         | 
| 517 515 |  | 
| 518 516 | 
             
                  expect(driver.instance).to receive(:save_timestamp).with(today)
         | 
| 519 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 520 517 |  | 
| 521 518 | 
             
                  expect(CSV).to receive(:parse_line).and_raise('parse error')
         | 
| 522 519 | 
             
                  expect(driver.instance.log).to_not receive(:warn)
         | 
| @@ -569,7 +566,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 569 566 |  | 
| 570 567 | 
             
                context 'when no user_agent' do
         | 
| 571 568 | 
             
                  let(:today_access_log) do
         | 
| 572 | 
            -
                     | 
| 569 | 
            +
                    gzip(<<-EOS)
         | 
| 573 570 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1"
         | 
| 574 571 | 
             
                    EOS
         | 
| 575 572 | 
             
                  end
         | 
| @@ -590,7 +587,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 590 587 |  | 
| 591 588 | 
             
              context 'when access old log exists (timeout)' do
         | 
| 592 589 | 
             
                let(:today_access_log) do
         | 
| 593 | 
            -
                   | 
| 590 | 
            +
                  gzip(<<-EOS)
         | 
| 594 591 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 595 592 | 
             
                  EOS
         | 
| 596 593 | 
             
                end
         | 
| @@ -607,7 +604,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 607 604 |  | 
| 608 605 | 
             
                  expect(client).to_not receive(:get_object)
         | 
| 609 606 | 
             
                  expect(driver.instance).to_not receive(:save_timestamp)
         | 
| 610 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 611 607 | 
             
                  expect(driver.instance.log).to_not receive(:warn)
         | 
| 612 608 |  | 
| 613 609 | 
             
                  driver_run(driver)
         | 
| @@ -618,7 +614,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 618 614 |  | 
| 619 615 | 
             
              context 'when emitted log exists' do
         | 
| 620 616 | 
             
                let(:today_access_log) do
         | 
| 621 | 
            -
                   | 
| 617 | 
            +
                  gzip(<<-EOS)
         | 
| 622 618 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 623 619 | 
             
                  EOS
         | 
| 624 620 | 
             
                end
         | 
| @@ -636,7 +632,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 636 632 | 
             
                  history = driver.instance.instance_variable_get(:@history)
         | 
| 637 633 | 
             
                  history << today_object_key
         | 
| 638 634 | 
             
                  expect(driver.instance).to_not receive(:save_timestamp)
         | 
| 639 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 640 635 | 
             
                  expect(driver.instance.log).to_not receive(:warn)
         | 
| 641 636 |  | 
| 642 637 | 
             
                  driver_run(driver)
         | 
| @@ -647,7 +642,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 647 642 |  | 
| 648 643 | 
             
              describe 'history#length' do
         | 
| 649 644 | 
             
                let(:today_access_log) do
         | 
| 650 | 
            -
                   | 
| 645 | 
            +
                  gzip(<<-EOS)
         | 
| 651 646 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 652 647 | 
             
                  EOS
         | 
| 653 648 | 
             
                end
         | 
| @@ -667,7 +662,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 667 662 | 
             
                  end
         | 
| 668 663 |  | 
| 669 664 | 
             
                  expect(driver.instance).to receive(:save_timestamp).with(today)
         | 
| 670 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 671 665 | 
             
                  expect(driver.instance.log).to_not receive(:warn)
         | 
| 672 666 | 
             
                end
         | 
| 673 667 |  | 
| @@ -693,7 +687,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 693 687 |  | 
| 694 688 | 
             
              context 'when no user_agent' do
         | 
| 695 689 | 
             
                let(:today_access_log) do
         | 
| 696 | 
            -
                   | 
| 690 | 
            +
                  gzip(<<-EOS)
         | 
| 697 691 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 698 692 | 
             
                  EOS
         | 
| 699 693 | 
             
                end
         | 
| @@ -711,7 +705,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 711 705 | 
             
                  end
         | 
| 712 706 |  | 
| 713 707 | 
             
                  expect(driver.instance).to receive(:save_timestamp).with(today)
         | 
| 714 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 715 708 | 
             
                  expect(driver.instance.log).to_not receive(:warn)
         | 
| 716 709 |  | 
| 717 710 | 
             
                  driver_run(driver)
         | 
| @@ -780,18 +773,17 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 780 773 | 
             
                    double('today_s3_object', body: StringIO.new(today_access_log))
         | 
| 781 774 | 
             
                  end
         | 
| 782 775 |  | 
| 783 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 784 776 | 
             
                end
         | 
| 785 777 |  | 
| 786 778 | 
             
                specify do
         | 
| 787 | 
            -
                  expect(driver.instance.log).to receive(:warn).with( | 
| 779 | 
            +
                  expect(driver.instance.log).to receive(:warn).with(/not in gzip format: /)
         | 
| 788 780 | 
             
                  driver_run(driver)
         | 
| 789 781 | 
             
                end
         | 
| 790 782 | 
             
              end
         | 
| 791 783 |  | 
| 792 784 | 
             
              context 'when bad timestamp' do
         | 
| 793 785 | 
             
                let(:today_access_log) do
         | 
| 794 | 
            -
                   | 
| 786 | 
            +
                  gzip(<<-EOS)
         | 
| 795 787 | 
             
            https xxx hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 796 788 | 
             
                  EOS
         | 
| 797 789 | 
             
                end
         | 
| @@ -809,7 +801,6 @@ https xxx hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 | |
| 809 801 | 
             
                  end
         | 
| 810 802 |  | 
| 811 803 | 
             
                  expect(driver.instance).to receive(:save_timestamp).with(today)
         | 
| 812 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 813 804 | 
             
                end
         | 
| 814 805 |  | 
| 815 806 | 
             
                specify do
         | 
| @@ -821,7 +812,7 @@ https xxx hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 | |
| 821 812 |  | 
| 822 813 | 
             
              context 'when unquote fails' do
         | 
| 823 814 | 
             
                let(:today_access_log) do
         | 
| 824 | 
            -
                   | 
| 815 | 
            +
                  gzip(<<-EOS)
         | 
| 825 816 | 
             
            https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
         | 
| 826 817 | 
             
                  EOS
         | 
| 827 818 | 
             
                end
         | 
| @@ -839,7 +830,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000 | |
| 839 830 | 
             
                  end
         | 
| 840 831 |  | 
| 841 832 | 
             
                  expect(driver.instance).to receive(:save_timestamp).with(today)
         | 
| 842 | 
            -
                  expect(driver.instance).to receive(:save_history)
         | 
| 843 833 |  | 
| 844 834 | 
             
                  expect(CSV).to receive(:parse_line).and_raise('parse error')
         | 
| 845 835 | 
             
                  expect(driver.instance).to receive(:unquote).and_raise('unquote error')
         | 
| @@ -7,6 +7,7 @@ describe Fluent::Plugin::ElbAccessLogInput do | |
| 7 7 |  | 
| 8 8 | 
             
              let(:fluentd_conf) do
         | 
| 9 9 | 
             
                {
         | 
| 10 | 
            +
                  interval: 0,
         | 
| 10 11 | 
             
                  account_id: account_id,
         | 
| 11 12 | 
             
                  s3_bucket: s3_bucket,
         | 
| 12 13 | 
             
                  region: region,
         | 
| @@ -231,6 +232,7 @@ describe Fluent::Plugin::ElbAccessLogInput do | |
| 231 232 | 
             
                context 'when sampling' do
         | 
| 232 233 | 
             
                  let(:fluentd_conf) do
         | 
| 233 234 | 
             
                    {
         | 
| 235 | 
            +
                      interval: 0,
         | 
| 234 236 | 
             
                      account_id: account_id,
         | 
| 235 237 | 
             
                      s3_bucket: s3_bucket,
         | 
| 236 238 | 
             
                      region: region,
         | 
| @@ -314,6 +316,7 @@ describe Fluent::Plugin::ElbAccessLogInput do | |
| 314 316 |  | 
| 315 317 | 
             
                let(:fluentd_conf) do
         | 
| 316 318 | 
             
                  {
         | 
| 319 | 
            +
                    interval: 0,
         | 
| 317 320 | 
             
                    account_id: account_id,
         | 
| 318 321 | 
             
                    s3_bucket: s3_bucket,
         | 
| 319 322 | 
             
                    region: region,
         | 
| @@ -0,0 +1,133 @@ | |
| 1 | 
            +
            describe 'Fluent::Plugin::ElbAccessLogInput#client' do
         | 
| 2 | 
            +
              let(:account_id) { '123456789012' }
         | 
| 3 | 
            +
              let(:s3_bucket) { 'my-bucket' }
         | 
| 4 | 
            +
              let(:region) { 'us-west-1' }
         | 
| 5 | 
            +
              let(:driver) { create_driver(fluentd_conf) }
         | 
| 6 | 
            +
              let!(:client){ Aws::S3::Client.new(stub_responses: true) }
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              let(:fluentd_conf) do
         | 
| 9 | 
            +
                {
         | 
| 10 | 
            +
                  account_id: account_id,
         | 
| 11 | 
            +
                  s3_bucket: s3_bucket,
         | 
| 12 | 
            +
                  region: region,
         | 
| 13 | 
            +
                  start_datetime: (today - 1).to_s,
         | 
| 14 | 
            +
                }
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              let(:today) { Time.parse('2015/05/24 18:30 UTC') }
         | 
| 18 | 
            +
              let(:yesterday) { today - 86400 }
         | 
| 19 | 
            +
              let(:tomorrow) { today + 86400 }
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              let(:today_prefix) { "AWSLogs/#{account_id}/elasticloadbalancing/#{region}/#{today.strftime('%Y/%m/%d')}/" }
         | 
| 22 | 
            +
              let(:yesterday_prefix) { "AWSLogs/#{account_id}/elasticloadbalancing/#{region}/#{yesterday.strftime('%Y/%m/%d')}/" }
         | 
| 23 | 
            +
              let(:tomorrow_prefix) { "AWSLogs/#{account_id}/elasticloadbalancing/#{region}/#{tomorrow.strftime('%Y/%m/%d')}/" }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              let(:today_object_key) { "#{today_prefix}#{account_id}_elasticloadbalancing_ap-northeast-1_hoge_#{today.iso8601}_52.68.51.1_8hSqR3o4.log" }
         | 
| 26 | 
            +
              let(:yesterday_object_key) { "#{yesterday_prefix}#{account_id}_elasticloadbalancing_ap-northeast-1_hoge_#{yesterday.iso8601}_52.68.51.1_8hSqR3o4.log" }
         | 
| 27 | 
            +
              let(:tomorrow_object_key) { "#{tomorrow_prefix}#{account_id}_elasticloadbalancing_ap-northeast-1_hoge_#{tomorrow.iso8601}_52.68.51.1_8hSqR3o4.log" }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              before do
         | 
| 30 | 
            +
                Timecop.freeze(today)
         | 
| 31 | 
            +
                allow_any_instance_of(Fluent::Plugin::ElbAccessLogInput).to receive(:load_history) { [] }
         | 
| 32 | 
            +
                allow_any_instance_of(Fluent::Plugin::ElbAccessLogInput).to receive(:parse_tsfile) { nil }
         | 
| 33 | 
            +
                expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: yesterday_prefix) { [] }
         | 
| 34 | 
            +
                expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: today_prefix) { [] }
         | 
| 35 | 
            +
                expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: tomorrow_prefix) { [] }
         | 
| 36 | 
            +
                allow(FileUtils).to receive(:touch)
         | 
| 37 | 
            +
                expect(driver.instance).to_not receive(:save_timestamp).with(today)
         | 
| 38 | 
            +
                expect(driver.instance).to receive(:save_history)
         | 
| 39 | 
            +
                expect(driver.instance.log).to_not receive(:error)
         | 
| 40 | 
            +
                expect(driver.instance.log).to_not receive(:warn)
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              after do
         | 
| 44 | 
            +
                Timecop.return
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              context 'when create client without credentials' do
         | 
| 48 | 
            +
                specify do
         | 
| 49 | 
            +
                  expect(Aws::S3::Client).to receive(:new).with(
         | 
| 50 | 
            +
                    region: region,
         | 
| 51 | 
            +
                    user_agent_suffix: Fluent::Plugin::ElbAccessLogInput::USER_AGENT_SUFFIX,
         | 
| 52 | 
            +
                  ).and_return(client)
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                  driver_run(driver)
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
              context 'when create client with aws_key_id/aws_sec_key' do
         | 
| 59 | 
            +
                let(:aws_key_id) { 'akid' }
         | 
| 60 | 
            +
                let(:aws_sec_key) { 'secret' }
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                let(:fluentd_conf) do
         | 
| 63 | 
            +
                  {
         | 
| 64 | 
            +
                    account_id: account_id,
         | 
| 65 | 
            +
                    s3_bucket: s3_bucket,
         | 
| 66 | 
            +
                    region: region,
         | 
| 67 | 
            +
                    start_datetime: (today - 1).to_s,
         | 
| 68 | 
            +
                    aws_key_id: aws_key_id,
         | 
| 69 | 
            +
                    aws_sec_key: aws_sec_key,
         | 
| 70 | 
            +
                  }
         | 
| 71 | 
            +
                end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                specify do
         | 
| 74 | 
            +
                  expect(Aws::S3::Client).to receive(:new).with(
         | 
| 75 | 
            +
                    region: region,
         | 
| 76 | 
            +
                    user_agent_suffix: Fluent::Plugin::ElbAccessLogInput::USER_AGENT_SUFFIX,
         | 
| 77 | 
            +
                    access_key_id: aws_key_id,
         | 
| 78 | 
            +
                    secret_access_key: aws_sec_key,
         | 
| 79 | 
            +
                  ).and_return(client)
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                  driver_run(driver)
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
              end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
              context 'when create client with profile/credentials_path' do
         | 
| 86 | 
            +
                let(:profile) { 'my-profile' }
         | 
| 87 | 
            +
                let(:credentials_path) { '/foo/bar/zoo' }
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                let(:fluentd_conf) do
         | 
| 90 | 
            +
                  {
         | 
| 91 | 
            +
                    account_id: account_id,
         | 
| 92 | 
            +
                    s3_bucket: s3_bucket,
         | 
| 93 | 
            +
                    region: region,
         | 
| 94 | 
            +
                    start_datetime: (today - 1).to_s,
         | 
| 95 | 
            +
                    profile: profile,
         | 
| 96 | 
            +
                    credentials_path: credentials_path,
         | 
| 97 | 
            +
                  }
         | 
| 98 | 
            +
                end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                specify do
         | 
| 101 | 
            +
                  expect(Aws::S3::Client).to receive(:new) do |options|
         | 
| 102 | 
            +
                    credentials = options.fetch(:credentials)
         | 
| 103 | 
            +
                    expect(credentials.profile_name).to eq profile
         | 
| 104 | 
            +
                    expect(credentials.path).to eq credentials_path
         | 
| 105 | 
            +
                    client
         | 
| 106 | 
            +
                  end
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                  driver_run(driver)
         | 
| 109 | 
            +
                end
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
              context 'when create client with debug' do
         | 
| 113 | 
            +
                let(:fluentd_conf) do
         | 
| 114 | 
            +
                  {
         | 
| 115 | 
            +
                    account_id: account_id,
         | 
| 116 | 
            +
                    s3_bucket: s3_bucket,
         | 
| 117 | 
            +
                    region: region,
         | 
| 118 | 
            +
                    start_datetime: (today - 1).to_s,
         | 
| 119 | 
            +
                    debug: true,
         | 
| 120 | 
            +
                  }
         | 
| 121 | 
            +
                end
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                specify do
         | 
| 124 | 
            +
                  expect(Aws::S3::Client).to receive(:new) do |options|
         | 
| 125 | 
            +
                    expect(options.fetch(:log_level)).to eq :debug
         | 
| 126 | 
            +
                    expect(options.fetch(:logger)).to be_a(Logger)
         | 
| 127 | 
            +
                    client
         | 
| 128 | 
            +
                  end
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                  driver_run(driver)
         | 
| 131 | 
            +
                end
         | 
| 132 | 
            +
              end
         | 
| 133 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -47,9 +47,20 @@ def driver_run(driver) | |
| 47 47 | 
             
              driver.run do
         | 
| 48 48 | 
             
                coolio_loop = driver.instance.instance_variable_get(:@loop)
         | 
| 49 49 | 
             
                sleep 0.1 until coolio_loop.instance_variable_get(:@running)
         | 
| 50 | 
            +
                sleep 0.1
         | 
| 50 51 | 
             
              end
         | 
| 51 52 | 
             
            end
         | 
| 52 53 |  | 
| 54 | 
            +
            def gzip(str)
         | 
| 55 | 
            +
              io = StringIO.new
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              Zlib::GzipWriter.wrap(io) do |gz|
         | 
| 58 | 
            +
                gz << str
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              io.string
         | 
| 62 | 
            +
            end
         | 
| 63 | 
            +
             | 
| 53 64 | 
             
            # prevent Test::Unit's AutoRunner from executing during RSpec's rake task
         | 
| 54 65 | 
             
            # ref: https://github.com/rspec/rspec-rails/issues/1171
         | 
| 55 66 | 
             
            Test::Unit.run = true if defined?(Test::Unit) && Test::Unit.respond_to?(:run=)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: fluent-plugin-elb-access-log
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.4. | 
| 4 | 
            +
              version: 0.4.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Genki Sugawara
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-12- | 
| 11 | 
            +
            date: 2017-12-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: fluentd
         | 
| @@ -171,6 +171,7 @@ files: | |
| 171 171 | 
             
            - lib/fluent_plugin_elb_access_log/version.rb
         | 
| 172 172 | 
             
            - spec/in_elb_access_log_alb_spec.rb
         | 
| 173 173 | 
             
            - spec/in_elb_access_log_clb_spec.rb
         | 
| 174 | 
            +
            - spec/in_elb_access_log_client_spec.rb
         | 
| 174 175 | 
             
            - spec/in_elb_access_log_config_spec.rb
         | 
| 175 176 | 
             
            - spec/spec_helper.rb
         | 
| 176 177 | 
             
            homepage: https://github.com/winebarrel/fluent-plugin-elb-access-log
         | 
| @@ -200,5 +201,6 @@ summary: Fluentd input plugin for AWS ELB Access Logs. | |
| 200 201 | 
             
            test_files:
         | 
| 201 202 | 
             
            - spec/in_elb_access_log_alb_spec.rb
         | 
| 202 203 | 
             
            - spec/in_elb_access_log_clb_spec.rb
         | 
| 204 | 
            +
            - spec/in_elb_access_log_client_spec.rb
         | 
| 203 205 | 
             
            - spec/in_elb_access_log_config_spec.rb
         | 
| 204 206 | 
             
            - spec/spec_helper.rb
         |