ralf 1.0.0 → 1.1.0
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.
- data/.rvmrc +1 -0
- data/README.rdoc +2 -0
- data/Rakefile +23 -17
- data/VERSION +1 -1
- data/lib/ralf.rb +14 -6
- data/lib/ralf/config.rb +1 -0
- data/ralf.gemspec +77 -0
- data/spec/ralf_spec.rb +20 -4
- metadata +27 -19
- data/.gitignore +0 -4
    
        data/.rvmrc
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            rvm --create ruby-1.8.7-p249@ralf
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -123,4 +123,6 @@ install the ralf gem. | |
| 123 123 | 
             
            = Authors
         | 
| 124 124 | 
             
            Authors: {Leon Berenschot}[http://github.com/LeipeLeon] and {K.J. Wierenga}[http://github.com/kjwierenga]
         | 
| 125 125 |  | 
| 126 | 
            +
            Contributers: {Victor Castell}[http://github.com/victorcoder]
         | 
| 127 | 
            +
             | 
| 126 128 | 
             
            This program is used for {kerkdienstgemist.nl}[http://kerkdienstgemist.nl] {Amazon S3}[http://aws.amazon.com/s3/] log file processing.
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -15,11 +15,11 @@ begin | |
| 15 15 | 
             
                gem.homepage = "http://github.com/kjwierenga/ralf"
         | 
| 16 16 | 
             
                gem.authors = ["Klaas Jan Wierenga", "Leon Berenschot"]
         | 
| 17 17 |  | 
| 18 | 
            -
                gem.add_development_dependency 'rspec',   ' | 
| 19 | 
            -
                gem.add_development_dependency 'fakeweb', ' | 
| 18 | 
            +
                gem.add_development_dependency 'rspec',   '~> 1.3.0'
         | 
| 19 | 
            +
                gem.add_development_dependency 'fakeweb', '~> 1.2.8'
         | 
| 20 20 |  | 
| 21 | 
            -
                gem.add_dependency 'right_aws', ' | 
| 22 | 
            -
                gem.add_dependency 'logmerge',  ' | 
| 21 | 
            +
                gem.add_dependency 'right_aws', '~> 1.10.0'
         | 
| 22 | 
            +
                gem.add_dependency 'logmerge',  '~> 1.0.2'
         | 
| 23 23 | 
             
                gem.add_dependency 'chronic',   '>= 0.2.3'
         | 
| 24 24 |  | 
| 25 25 | 
             
                gem.rdoc_options << '--exclude' << '.'
         | 
| @@ -27,24 +27,30 @@ begin | |
| 27 27 | 
             
              end
         | 
| 28 28 | 
             
              Jeweler::GemcutterTasks.new
         | 
| 29 29 | 
             
            rescue LoadError
         | 
| 30 | 
            -
              puts "Jeweler (or a dependency) not available. | 
| 30 | 
            +
              puts "Warning: Jeweler (or a dependency) not available."
         | 
| 31 | 
            +
              puts "         Check dependencies with `rake check_dependencies`."
         | 
| 31 32 | 
             
            end
         | 
| 32 33 |  | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
              spec | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 34 | 
            +
            begin
         | 
| 35 | 
            +
              require 'spec/rake/spectask'
         | 
| 36 | 
            +
              Spec::Rake::SpecTask.new(:spec) do |spec|
         | 
| 37 | 
            +
                spec.libs << 'lib' << 'spec'
         | 
| 38 | 
            +
                spec.spec_files = FileList['spec/**/*_spec.rb']
         | 
| 39 | 
            +
              end
         | 
| 38 40 |  | 
| 39 | 
            -
            Spec::Rake::SpecTask.new(:rcov) do |spec|
         | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
            end
         | 
| 41 | 
            +
              Spec::Rake::SpecTask.new(:rcov) do |spec|
         | 
| 42 | 
            +
                spec.libs << 'lib' << 'spec'
         | 
| 43 | 
            +
                spec.pattern = 'spec/**/*_spec.rb'
         | 
| 44 | 
            +
                spec.rcov = true
         | 
| 45 | 
            +
              end
         | 
| 44 46 |  | 
| 45 | 
            -
            task :spec => :check_dependencies
         | 
| 47 | 
            +
              task :spec => :check_dependencies
         | 
| 46 48 |  | 
| 47 | 
            -
            task :default => :spec
         | 
| 49 | 
            +
              task :default => :spec
         | 
| 50 | 
            +
            rescue LoadError
         | 
| 51 | 
            +
              puts "Warning: Rspec not available."
         | 
| 52 | 
            +
              puts "         Check dependencies with `rake check_dependencies`."
         | 
| 53 | 
            +
            end
         | 
| 48 54 |  | 
| 49 55 | 
             
            require 'rake/rdoctask'
         | 
| 50 56 | 
             
            Rake::RDocTask.new do |rdoc|
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            1. | 
| 1 | 
            +
            1.1.0
         | 
    
        data/lib/ralf.rb
    CHANGED
    
    | @@ -1,10 +1,12 @@ | |
| 1 1 | 
             
            require 'rubygems'
         | 
| 2 2 | 
             
            require 'right_aws'
         | 
| 3 3 | 
             
            require 'logmerge'
         | 
| 4 | 
            -
            require ' | 
| 4 | 
            +
            require 'fileutils'
         | 
| 5 5 | 
             
            require 'ralf/config'
         | 
| 6 6 | 
             
            require 'ralf/bucket'
         | 
| 7 7 | 
             
            require 'chronic'
         | 
| 8 | 
            +
            require 'stringio'
         | 
| 9 | 
            +
            require 'date'
         | 
| 8 10 |  | 
| 9 11 | 
             
            class Ralf
         | 
| 10 12 |  | 
| @@ -17,6 +19,7 @@ class Ralf | |
| 17 19 | 
             
              USER_DEFAULT_CONFIG_FILE = '~/.ralf.conf'
         | 
| 18 20 |  | 
| 19 21 | 
             
              AMAZON_LOG_FORMAT = Regexp.new('([^ ]*) ([^ ]*) \[([^\]]*)\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) "([^"]*)" ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) "([^"]*)" "([^"]*)"')
         | 
| 22 | 
            +
              AMAZON_LOG_FORMAT_COPY = Regexp.new('([^ ]*) ([^ ]*) \[([^\]]*)\] ([^ ]*) ([^ ]*) ([^ ]*) (REST.COPY.OBJECT_GET) ([^ ]*) (-) ([^ ]*) (-) (-) ([^ ]*) (-) (-) (-) (-) (-)')
         | 
| 20 23 |  | 
| 21 24 | 
             
              # The current configuration.
         | 
| 22 25 | 
             
              attr_reader :config
         | 
| @@ -81,7 +84,7 @@ class Ralf | |
| 81 84 | 
             
                  merged_log =  output_log + ".alf"
         | 
| 82 85 |  | 
| 83 86 | 
             
                  # create directory for output file
         | 
| 84 | 
            -
                   | 
| 87 | 
            +
                  FileUtils.mkdir_p(File.dirname(merged_log))
         | 
| 85 88 |  | 
| 86 89 | 
             
                  # merge the log files
         | 
| 87 90 | 
             
                  Ralf.merge(merged_log, log_files)
         | 
| @@ -109,7 +112,7 @@ class Ralf | |
| 109 112 |  | 
| 110 113 | 
             
              # Download log files for +bucket+ and +date+ to +dir+.
         | 
| 111 114 | 
             
              def self.download_logs(bucket, date, dir)
         | 
| 112 | 
            -
                 | 
| 115 | 
            +
                FileUtils.mkdir_p(dir)
         | 
| 113 116 |  | 
| 114 117 | 
             
                # iterate over the available log files, saving them to disk and 
         | 
| 115 118 | 
             
                log_files = []
         | 
| @@ -134,7 +137,9 @@ class Ralf | |
| 134 137 | 
             
                out_file = File.open(output_log, 'w')
         | 
| 135 138 | 
             
                File.open(input_log, 'r') do |in_file|
         | 
| 136 139 | 
             
                  while (line = in_file.gets)
         | 
| 137 | 
            -
                     | 
| 140 | 
            +
                    if clf = translate_to_clf(line)
         | 
| 141 | 
            +
                      out_file.puts(clf)
         | 
| 142 | 
            +
                    end
         | 
| 138 143 | 
             
                  end
         | 
| 139 144 | 
             
                end
         | 
| 140 145 | 
             
                out_file.close
         | 
| @@ -142,10 +147,13 @@ class Ralf | |
| 142 147 |  | 
| 143 148 | 
             
              def self.translate_to_clf(line)
         | 
| 144 149 | 
             
                if line =~ AMAZON_LOG_FORMAT
         | 
| 145 | 
            -
                  # host, date, ip, acl, request, status, bytes, agent = $2, $3, $4, $5, $9, $10, $12, $17
         | 
| 146 | 
            -
                  "%s - %s [%s] \"%s\" % | 
| 150 | 
            +
                  # host, date, ip, acl, request, status, bytes, agent, total_time_ms = $2, $3, $4, $5, $9, $10, $12, $17, $14
         | 
| 151 | 
            +
                  "%s - %s [%s] \"%s\" %s %s \"%s\" \"%s\" %d" % [$4, $5, $3, $9, $10, $12, $16, $17, ($14.to_i/1000.0).round]
         | 
| 152 | 
            +
                elsif line =~ AMAZON_LOG_FORMAT_COPY
         | 
| 153 | 
            +
                  "%s - %s [%s] \"%s\" %s %s \"%s\" \"REST.COPY.OBJECT_GET\" %d" % [$4, $5, $3, "POST /#{$8} HTTP/1.1", $10, $12, $16, 0]
         | 
| 147 154 | 
             
                else
         | 
| 148 155 | 
             
                  $stderr.puts "# ERROR: #{line}"
         | 
| 156 | 
            +
                  nil
         | 
| 149 157 | 
             
                end
         | 
| 150 158 | 
             
              end
         | 
| 151 159 |  | 
    
        data/lib/ralf/config.rb
    CHANGED
    
    
    
        data/ralf.gemspec
    ADDED
    
    | @@ -0,0 +1,77 @@ | |
| 1 | 
            +
            # Generated by jeweler
         | 
| 2 | 
            +
            # DO NOT EDIT THIS FILE DIRECTLY
         | 
| 3 | 
            +
            # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
         | 
| 4 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Gem::Specification.new do |s|
         | 
| 7 | 
            +
              s.name = %q{ralf}
         | 
| 8 | 
            +
              s.version = "1.1.0"
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 | 
            +
              s.authors = ["Klaas Jan Wierenga", "Leon Berenschot"]
         | 
| 12 | 
            +
              s.date = %q{2011-05-09}
         | 
| 13 | 
            +
              s.default_executable = %q{ralf}
         | 
| 14 | 
            +
              s.description = %q{      Download logfiles from Amazon S3 buckets to local disk and combine them in one Apache CLF per bucket
         | 
| 15 | 
            +
            }
         | 
| 16 | 
            +
              s.email = ["k.j.wierenga@gmail.com", "leonb@beriedata.nl"]
         | 
| 17 | 
            +
              s.executables = ["ralf"]
         | 
| 18 | 
            +
              s.extra_rdoc_files = [
         | 
| 19 | 
            +
                "README.rdoc"
         | 
| 20 | 
            +
              ]
         | 
| 21 | 
            +
              s.files = [
         | 
| 22 | 
            +
                ".rvmrc",
         | 
| 23 | 
            +
                "README.rdoc",
         | 
| 24 | 
            +
                "Rakefile",
         | 
| 25 | 
            +
                "VERSION",
         | 
| 26 | 
            +
                "bin/ralf",
         | 
| 27 | 
            +
                "lib/ralf.rb",
         | 
| 28 | 
            +
                "lib/ralf/bucket.rb",
         | 
| 29 | 
            +
                "lib/ralf/config.rb",
         | 
| 30 | 
            +
                "lib/ralf/interpolation.rb",
         | 
| 31 | 
            +
                "lib/ralf/log.rb",
         | 
| 32 | 
            +
                "lib/ralf/option_parser.rb",
         | 
| 33 | 
            +
                "ralf.gemspec",
         | 
| 34 | 
            +
                "spec/fixtures/apache.log",
         | 
| 35 | 
            +
                "spec/fixtures/example_buckets.yaml",
         | 
| 36 | 
            +
                "spec/ralf/bucket_spec.rb",
         | 
| 37 | 
            +
                "spec/ralf/config_spec.rb",
         | 
| 38 | 
            +
                "spec/ralf/interpolation_spec.rb",
         | 
| 39 | 
            +
                "spec/ralf/log_spec.rb",
         | 
| 40 | 
            +
                "spec/ralf/option_parser_spec.rb",
         | 
| 41 | 
            +
                "spec/ralf_spec.rb",
         | 
| 42 | 
            +
                "spec/spec.opts",
         | 
| 43 | 
            +
                "spec/spec_helper.rb",
         | 
| 44 | 
            +
                "spec/support/fakeweb.rb"
         | 
| 45 | 
            +
              ]
         | 
| 46 | 
            +
              s.homepage = %q{http://github.com/kjwierenga/ralf}
         | 
| 47 | 
            +
              s.rdoc_options = ["--exclude", "."]
         | 
| 48 | 
            +
              s.require_paths = ["lib"]
         | 
| 49 | 
            +
              s.rubygems_version = %q{1.3.7}
         | 
| 50 | 
            +
              s.summary = %q{Retrieve Amazon Log Files}
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              if s.respond_to? :specification_version then
         | 
| 53 | 
            +
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         | 
| 54 | 
            +
                s.specification_version = 3
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         | 
| 57 | 
            +
                  s.add_development_dependency(%q<rspec>, ["~> 1.3.0"])
         | 
| 58 | 
            +
                  s.add_development_dependency(%q<fakeweb>, ["~> 1.2.8"])
         | 
| 59 | 
            +
                  s.add_runtime_dependency(%q<right_aws>, ["~> 1.10.0"])
         | 
| 60 | 
            +
                  s.add_runtime_dependency(%q<logmerge>, ["~> 1.0.2"])
         | 
| 61 | 
            +
                  s.add_runtime_dependency(%q<chronic>, [">= 0.2.3"])
         | 
| 62 | 
            +
                else
         | 
| 63 | 
            +
                  s.add_dependency(%q<rspec>, ["~> 1.3.0"])
         | 
| 64 | 
            +
                  s.add_dependency(%q<fakeweb>, ["~> 1.2.8"])
         | 
| 65 | 
            +
                  s.add_dependency(%q<right_aws>, ["~> 1.10.0"])
         | 
| 66 | 
            +
                  s.add_dependency(%q<logmerge>, ["~> 1.0.2"])
         | 
| 67 | 
            +
                  s.add_dependency(%q<chronic>, [">= 0.2.3"])
         | 
| 68 | 
            +
                end
         | 
| 69 | 
            +
              else
         | 
| 70 | 
            +
                s.add_dependency(%q<rspec>, ["~> 1.3.0"])
         | 
| 71 | 
            +
                s.add_dependency(%q<fakeweb>, ["~> 1.2.8"])
         | 
| 72 | 
            +
                s.add_dependency(%q<right_aws>, ["~> 1.10.0"])
         | 
| 73 | 
            +
                s.add_dependency(%q<logmerge>, ["~> 1.0.2"])
         | 
| 74 | 
            +
                s.add_dependency(%q<chronic>, [">= 0.2.3"])
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
            end
         | 
| 77 | 
            +
             | 
    
        data/spec/ralf_spec.rb
    CHANGED
    
    | @@ -255,7 +255,7 @@ describe Ralf do | |
| 255 255 | 
             
                    @example_buckets[name]
         | 
| 256 256 | 
             
                  end
         | 
| 257 257 |  | 
| 258 | 
            -
                   | 
| 258 | 
            +
                  FileUtils.stub(:mkdir_p)
         | 
| 259 259 | 
             
                  ralf = Ralf.new(@valid_options.merge(:cache_dir   => '/var/log/s3/cache/:bucket',
         | 
| 260 260 | 
             
                                                       :output_file => '/var/log/s3/:bucket.log',
         | 
| 261 261 | 
             
                                                       :buckets     => 'test1',
         | 
| @@ -313,22 +313,31 @@ describe Ralf do | |
| 313 313 |  | 
| 314 314 | 
             
                it "should convert output files to common_log_format" do
         | 
| 315 315 | 
             
                  input_log = StringIO.new
         | 
| 316 | 
            +
                  
         | 
| 317 | 
            +
                  # last two lines are ignored because they don't match
         | 
| 316 318 | 
             
                  input_log.string = <<EOF_INPUT
         | 
| 317 319 | 
             
            2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 assets.staging.kerkdienstgemist.nl [10/Feb/2010:07:17:01 +0000] 10.32.219.38 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 784FD457838EFF42 REST.GET.ACL - "GET /?acl HTTP/1.1" 200 - 1384 - 399 - "-" "Jakarta Commons-HttpClient/3.0" -
         | 
| 318 320 | 
             
            2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 assets.staging.kerkdienstgemist.nl [10/Feb/2010:07:17:02 +0000] 10.32.219.38 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 6E239BC5A4AC757C SOAP.PUT.OBJECT logs/2010-02-10-07-17-02-F6EFD00DAB9A08B6 "POST /soap/ HTTP/1.1" 200 - 797 686 63 31 "-" "Axis/1.3" -
         | 
| 319 321 | 
             
            2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 assets.staging.kerkdienstgemist.nl [10/Feb/2010:07:24:40 +0000] 10.217.37.15 - 0B76C90B3634290B REST.GET.ACL - "GET /?acl HTTP/1.1" 307 TemporaryRedirect 488 - 7 - "-" "Jakarta Commons-HttpClient/3.0" -
         | 
| 322 | 
            +
            2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.staging.kerkdienstgemist.nl [17/Sep/2010:13:38:36 +0000] 85.113.244.146 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 71F7D2AAA93B0A05 REST.COPY.OBJECT_GET 10010150/2010-08-29-0930.mp3 - 200 - - 13538337 - - - - -
         | 
| 323 | 
            +
            2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.staging.kerkdienstgemist.nl [17/Sep/2010:13:38:37 +0000] 85.113.244.146 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 7CC5E3D09AE78CAE REST.COPY.OBJECT_GET 10010150/2010-09-05-1000.mp3 - 200 - - 9860402 - - - - -
         | 
| 320 324 | 
             
            EOF_INPUT
         | 
| 321 325 |  | 
| 322 326 | 
             
                  clf_log =<<EOF_OUTPUT
         | 
| 323 | 
            -
            10.32.219.38 - 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 [10/Feb/2010:07:17:01 +0000] "GET /?acl HTTP/1.1" 200 1384 "-" "Jakarta Commons-HttpClient/3.0"
         | 
| 324 | 
            -
            10.32.219.38 - 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 [10/Feb/2010:07:17:02 +0000] "POST /soap/ HTTP/1.1" 200 797 "-" "Axis/1.3"
         | 
| 325 | 
            -
            10.217.37.15 - - [10/Feb/2010:07:24:40 +0000] "GET /?acl HTTP/1.1" 307 488 "-" "Jakarta Commons-HttpClient/3.0"
         | 
| 327 | 
            +
            10.32.219.38 - 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 [10/Feb/2010:07:17:01 +0000] "GET /?acl HTTP/1.1" 200 1384 "-" "Jakarta Commons-HttpClient/3.0" 0
         | 
| 328 | 
            +
            10.32.219.38 - 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 [10/Feb/2010:07:17:02 +0000] "POST /soap/ HTTP/1.1" 200 797 "-" "Axis/1.3" 0
         | 
| 329 | 
            +
            10.217.37.15 - - [10/Feb/2010:07:24:40 +0000] "GET /?acl HTTP/1.1" 307 488 "-" "Jakarta Commons-HttpClient/3.0" 0
         | 
| 330 | 
            +
            85.113.244.146 - 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 [17/Sep/2010:13:38:36 +0000] "POST /10010150/2010-08-29-0930.mp3 HTTP/1.1" 200 - "-" "REST.COPY.OBJECT_GET" 0
         | 
| 331 | 
            +
            85.113.244.146 - 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 [17/Sep/2010:13:38:37 +0000] "POST /10010150/2010-09-05-1000.mp3 HTTP/1.1" 200 - "-" "REST.COPY.OBJECT_GET" 0
         | 
| 326 332 | 
             
            EOF_OUTPUT
         | 
| 327 333 |  | 
| 328 334 | 
             
                  output_log = StringIO.new
         | 
| 329 335 |  | 
| 330 336 | 
             
                  File.should_receive(:open).with('input_file', 'r').and_yield(input_log)
         | 
| 331 337 | 
             
                  File.should_receive(:open).with('output_file', 'w').and_return(output_log)
         | 
| 338 | 
            +
                  
         | 
| 339 | 
            +
                  # $stderr.should_receive(:puts).with("# ERROR: 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.staging.kerkdienstgemist.nl [17/Sep/2010:13:38:36 +0000] 85.113.244.146 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 71F7D2AAA93B0A05 REST.COPY.OBJECT_GET 10010150/2010-08-29-0930.mp3 - 200 - - 13538337 - - - - -\n")
         | 
| 340 | 
            +
                  # $stderr.should_receive(:puts).with("# ERROR: 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.staging.kerkdienstgemist.nl [17/Sep/2010:13:38:37 +0000] 85.113.244.146 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 7CC5E3D09AE78CAE REST.COPY.OBJECT_GET 10010150/2010-09-05-1000.mp3 - 200 - - 9860402 - - - - -\n")
         | 
| 332 341 |  | 
| 333 342 | 
             
                  Ralf.convert_to_common_log_format('input_file', 'output_file')
         | 
| 334 343 | 
             
                  output_log.string.should eql(clf_log)
         | 
| @@ -341,6 +350,13 @@ EOF_OUTPUT | |
| 341 350 | 
             
                  $stderr.string.should eql("# ERROR: #{invalid_line}\n")
         | 
| 342 351 | 
             
                end
         | 
| 343 352 |  | 
| 353 | 
            +
                it "should add rounded total_time in seconds" do
         | 
| 354 | 
            +
                  $stderr = StringIO.new
         | 
| 355 | 
            +
                  input_line = '2010-10-02-19-15-45-6879098C3140BE9D:2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.kerkdienstgemist.nl [02/Oct/2010:18:29:16 +0000] 82.168.113.55 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 4F911681022807C6 REST.GET.OBJECT 10028050/2010-09-26-1830.mp3 "GET /10028050/2010-09-26-1830.mp3?Signature=E3ehd6nkXjNg7vr%2F4b3LtxCWads%3D&Expires=1286051333&AWSAccessKeyId=AKIAI3XHXJPFSJW2UQAQ HTTP/1.1" 206 - 4194304 17537676 1600 12 "-" "VLC media player - version 1.0.5 Goldeneye - (c) 1996-2010 the VideoLAN team" -'
         | 
| 356 | 
            +
                  Ralf.translate_to_clf(input_line).should eql("82.168.113.55 - 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 [02/Oct/2010:18:29:16 +0000] \"GET /10028050/2010-09-26-1830.mp3?Signature=E3ehd6nkXjNg7vr%2F4b3LtxCWads%3D&Expires=1286051333&AWSAccessKeyId=AKIAI3XHXJPFSJW2UQAQ HTTP/1.1\" 206 4194304 \"-\" \"VLC media player - version 1.0.5 Goldeneye - (c) 1996-2010 the VideoLAN team\" 2")
         | 
| 357 | 
            +
                  $stderr.string.should be_empty
         | 
| 358 | 
            +
                end
         | 
| 359 | 
            +
             | 
| 344 360 | 
             
              end
         | 
| 345 361 |  | 
| 346 362 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,12 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: ralf
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              hash: 19
         | 
| 4 5 | 
             
              prerelease: false
         | 
| 5 6 | 
             
              segments: 
         | 
| 6 7 | 
             
              - 1
         | 
| 8 | 
            +
              - 1
         | 
| 7 9 | 
             
              - 0
         | 
| 8 | 
            -
               | 
| 9 | 
            -
              version: 1.0.0
         | 
| 10 | 
            +
              version: 1.1.0
         | 
| 10 11 | 
             
            platform: ruby
         | 
| 11 12 | 
             
            authors: 
         | 
| 12 13 | 
             
            - Klaas Jan Wierenga
         | 
| @@ -15,16 +16,18 @@ autorequire: | |
| 15 16 | 
             
            bindir: bin
         | 
| 16 17 | 
             
            cert_chain: []
         | 
| 17 18 |  | 
| 18 | 
            -
            date:  | 
| 19 | 
            +
            date: 2011-05-09 00:00:00 +02:00
         | 
| 19 20 | 
             
            default_executable: ralf
         | 
| 20 21 | 
             
            dependencies: 
         | 
| 21 22 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 22 23 | 
             
              name: rspec
         | 
| 23 24 | 
             
              prerelease: false
         | 
| 24 25 | 
             
              requirement: &id001 !ruby/object:Gem::Requirement 
         | 
| 26 | 
            +
                none: false
         | 
| 25 27 | 
             
                requirements: 
         | 
| 26 | 
            -
                - -  | 
| 28 | 
            +
                - - ~>
         | 
| 27 29 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 30 | 
            +
                    hash: 27
         | 
| 28 31 | 
             
                    segments: 
         | 
| 29 32 | 
             
                    - 1
         | 
| 30 33 | 
             
                    - 3
         | 
| @@ -36,9 +39,11 @@ dependencies: | |
| 36 39 | 
             
              name: fakeweb
         | 
| 37 40 | 
             
              prerelease: false
         | 
| 38 41 | 
             
              requirement: &id002 !ruby/object:Gem::Requirement 
         | 
| 42 | 
            +
                none: false
         | 
| 39 43 | 
             
                requirements: 
         | 
| 40 | 
            -
                - -  | 
| 44 | 
            +
                - - ~>
         | 
| 41 45 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 46 | 
            +
                    hash: 15
         | 
| 42 47 | 
             
                    segments: 
         | 
| 43 48 | 
             
                    - 1
         | 
| 44 49 | 
             
                    - 2
         | 
| @@ -50,9 +55,11 @@ dependencies: | |
| 50 55 | 
             
              name: right_aws
         | 
| 51 56 | 
             
              prerelease: false
         | 
| 52 57 | 
             
              requirement: &id003 !ruby/object:Gem::Requirement 
         | 
| 58 | 
            +
                none: false
         | 
| 53 59 | 
             
                requirements: 
         | 
| 54 | 
            -
                - -  | 
| 60 | 
            +
                - - ~>
         | 
| 55 61 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 62 | 
            +
                    hash: 63
         | 
| 56 63 | 
             
                    segments: 
         | 
| 57 64 | 
             
                    - 1
         | 
| 58 65 | 
             
                    - 10
         | 
| @@ -64,9 +71,11 @@ dependencies: | |
| 64 71 | 
             
              name: logmerge
         | 
| 65 72 | 
             
              prerelease: false
         | 
| 66 73 | 
             
              requirement: &id004 !ruby/object:Gem::Requirement 
         | 
| 74 | 
            +
                none: false
         | 
| 67 75 | 
             
                requirements: 
         | 
| 68 | 
            -
                - -  | 
| 76 | 
            +
                - - ~>
         | 
| 69 77 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 78 | 
            +
                    hash: 19
         | 
| 70 79 | 
             
                    segments: 
         | 
| 71 80 | 
             
                    - 1
         | 
| 72 81 | 
             
                    - 0
         | 
| @@ -78,9 +87,11 @@ dependencies: | |
| 78 87 | 
             
              name: chronic
         | 
| 79 88 | 
             
              prerelease: false
         | 
| 80 89 | 
             
              requirement: &id005 !ruby/object:Gem::Requirement 
         | 
| 90 | 
            +
                none: false
         | 
| 81 91 | 
             
                requirements: 
         | 
| 82 92 | 
             
                - - ">="
         | 
| 83 93 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 94 | 
            +
                    hash: 17
         | 
| 84 95 | 
             
                    segments: 
         | 
| 85 96 | 
             
                    - 0
         | 
| 86 97 | 
             
                    - 2
         | 
| @@ -99,7 +110,7 @@ extensions: [] | |
| 99 110 | 
             
            extra_rdoc_files: 
         | 
| 100 111 | 
             
            - README.rdoc
         | 
| 101 112 | 
             
            files: 
         | 
| 102 | 
            -
            - . | 
| 113 | 
            +
            - .rvmrc
         | 
| 103 114 | 
             
            - README.rdoc
         | 
| 104 115 | 
             
            - Rakefile
         | 
| 105 116 | 
             
            - VERSION
         | 
| @@ -110,6 +121,7 @@ files: | |
| 110 121 | 
             
            - lib/ralf/interpolation.rb
         | 
| 111 122 | 
             
            - lib/ralf/log.rb
         | 
| 112 123 | 
             
            - lib/ralf/option_parser.rb
         | 
| 124 | 
            +
            - ralf.gemspec
         | 
| 113 125 | 
             
            - spec/fixtures/apache.log
         | 
| 114 126 | 
             
            - spec/fixtures/example_buckets.yaml
         | 
| 115 127 | 
             
            - spec/ralf/bucket_spec.rb
         | 
| @@ -127,38 +139,34 @@ licenses: [] | |
| 127 139 |  | 
| 128 140 | 
             
            post_install_message: 
         | 
| 129 141 | 
             
            rdoc_options: 
         | 
| 130 | 
            -
            - --charset=UTF-8
         | 
| 131 142 | 
             
            - --exclude
         | 
| 132 143 | 
             
            - .
         | 
| 133 144 | 
             
            require_paths: 
         | 
| 134 145 | 
             
            - lib
         | 
| 135 146 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 147 | 
            +
              none: false
         | 
| 136 148 | 
             
              requirements: 
         | 
| 137 149 | 
             
              - - ">="
         | 
| 138 150 | 
             
                - !ruby/object:Gem::Version 
         | 
| 151 | 
            +
                  hash: 3
         | 
| 139 152 | 
             
                  segments: 
         | 
| 140 153 | 
             
                  - 0
         | 
| 141 154 | 
             
                  version: "0"
         | 
| 142 155 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 156 | 
            +
              none: false
         | 
| 143 157 | 
             
              requirements: 
         | 
| 144 158 | 
             
              - - ">="
         | 
| 145 159 | 
             
                - !ruby/object:Gem::Version 
         | 
| 160 | 
            +
                  hash: 3
         | 
| 146 161 | 
             
                  segments: 
         | 
| 147 162 | 
             
                  - 0
         | 
| 148 163 | 
             
                  version: "0"
         | 
| 149 164 | 
             
            requirements: []
         | 
| 150 165 |  | 
| 151 166 | 
             
            rubyforge_project: 
         | 
| 152 | 
            -
            rubygems_version: 1.3. | 
| 167 | 
            +
            rubygems_version: 1.3.7
         | 
| 153 168 | 
             
            signing_key: 
         | 
| 154 169 | 
             
            specification_version: 3
         | 
| 155 170 | 
             
            summary: Retrieve Amazon Log Files
         | 
| 156 | 
            -
            test_files: 
         | 
| 157 | 
            -
             | 
| 158 | 
            -
            - spec/ralf/config_spec.rb
         | 
| 159 | 
            -
            - spec/ralf/interpolation_spec.rb
         | 
| 160 | 
            -
            - spec/ralf/log_spec.rb
         | 
| 161 | 
            -
            - spec/ralf/option_parser_spec.rb
         | 
| 162 | 
            -
            - spec/ralf_spec.rb
         | 
| 163 | 
            -
            - spec/spec_helper.rb
         | 
| 164 | 
            -
            - spec/support/fakeweb.rb
         | 
| 171 | 
            +
            test_files: []
         | 
| 172 | 
            +
             | 
    
        data/.gitignore
    DELETED