Remove spec/integration

With the addition of the qa acceptance test suite we have decide that we
don't need to maintain this suite also since the acceptance test are
running really similar test.

Fixes: #5744

Fixes #5760
This commit is contained in:
Pier-Hugues Pellerin 2016-08-12 13:08:30 -04:00 committed by Suyog Rao
parent 01d3ced998
commit 23e87bc44f
11 changed files with 0 additions and 442 deletions

View file

@ -104,29 +104,6 @@ namespace "test" do
end
task.reenable
end
task "integration" => ["setup"] do
require "fileutils"
source = File.expand_path(File.join(File.dirname(__FILE__), ".."))
integration_path = File.join(source, "integration_run")
FileUtils.rm_rf(integration_path)
exit(RSpec::Core::Runner.run([Rake::FileList["spec/integration/**/*_spec.rb"]]))
end
namespace "integration" do
task "local" => ["setup"] do
require "fileutils"
source = File.expand_path(File.join(File.dirname(__FILE__), ".."))
integration_path = File.join(source, "integration_run")
FileUtils.mkdir_p(integration_path)
puts "[integration_spec] configuring local environment for running test in #{integration_path}, if you want to change this behavior delete the directory."
exit(RSpec::Core::Runner.run([Rake::FileList["spec/integration/**/*_spec.rb"]]))
end
end
end
task "test" => [ "test:core" ]

View file

@ -1,41 +0,0 @@
# Encoding: utf-8
require_relative "../spec_helper"
require "stud/temporary"
describe "File input to File output" do
let(:number_of_events) { IO.readlines(sample_log).size }
let(:sample_log) { File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "sample.log")) }
let(:output_file) { Stud::Temporary.file.path }
let(:config) {
<<EOS
input {
file {
path => \"#{sample_log}\"
stat_interval => 0
start_position => \"beginning\"
sincedb_path => \"/dev/null\"
}
}
output {
file {
path => \"#{output_file}\"
}
}
EOS
}
before :all do
command("bin/logstash-plugin install logstash-input-file logstash-output-file")
end
it "writes events to file" do
cmd = "bin/logstash -e '#{config}'"
launch_logstash(cmd)
expect(File.exist?(output_file)).to eq(true)
# on shutdown the events arent flushed to disk correctly
# Known issue https://github.com/logstash-plugins/logstash-output-file/issues/12
expect(IO.readlines(output_file).size).to be_between(number_of_events - 10, number_of_events).inclusive
end
end

View file

@ -1,11 +0,0 @@
# Encoding: utf-8
require_relative "../spec_helper"
require_relative "../../../logstash-core/lib/logstash/version"
describe "bin/logstash" do
it "returns the logstash version" do
result = command("bin/logstash --version")
expect(result.exit_status).to eq(0)
expect(result.stdout).to match(/^logstash\s#{LOGSTASH_VERSION}/)
end
end

View file

@ -1,41 +0,0 @@
# Encoding: utf-8
require_relative "../spec_helper"
require "fileutils"
context "bin/logstash-plugin install" do
context "with a local gem" do
let(:gem_name) { "logstash-input-wmi" }
let(:local_gem) { gem_fetch(gem_name) }
it "install the gem succesfully" do
result = command("bin/logstash-plugin install --no-verify #{local_gem}")
expect(result.exit_status).to eq(0)
expect(result.stdout).to match(/^Installing\s#{gem_name}\nInstallation\ssuccessful$/)
end
end
context "when the plugin exist" do
let(:plugin_name) { "logstash-input-drupal_dblog" }
it "sucessfully install" do
result = command("bin/logstash-plugin install #{plugin_name}")
expect(result.exit_status).to eq(0)
expect(result.stdout).to match(/^Validating\s#{plugin_name}\nInstalling\s#{plugin_name}\nInstallation\ssuccessful$/)
end
it "allow to install a specific version" do
version = "2.0.2"
result = command("bin/logstash-plugin install --version 2.0.2 #{plugin_name}")
expect(result.exit_status).to eq(0)
expect(result.stdout).to match(/^Validating\s#{plugin_name}-#{version}\nInstalling\s#{plugin_name}\nInstallation\ssuccessful$/)
end
end
context "when the plugin doesn't exist" do
it "fails to install" do
result = command("bin/logstash-plugin install --no-verify logstash-output-impossible-plugin")
expect(result.exit_status).to eq(1)
expect(result.stderr).to match(/Installation Aborted, message: Could not find gem/)
end
end
end

View file

@ -1,41 +0,0 @@
# Encoding: utf-8
require_relative "../spec_helper"
describe "bin/logstash-plugin list" do
context "without a specific plugin" do
it "display a list of plugins" do
result = command("bin/logstash-plugin list")
expect(result.exit_status).to eq(0)
expect(result.stdout.split("\n").size).to be > 1
end
it "display a list of installed plugins" do
result = command("bin/logstash-plugin list --installed")
expect(result.exit_status).to eq(0)
expect(result.stdout.split("\n").size).to be > 1
end
it "list the plugins with their versions" do
result = command("bin/logstash-plugin list --verbose")
result.stdout.split("\n").each do |plugin|
expect(plugin).to match(/^logstash-\w+-\w+\s\(\d+\.\d+.\d+\)/)
end
expect(result.exit_status).to eq(0)
end
end
context "with a specific plugin" do
let(:plugin_name) { "logstash-input-stdin" }
it "list the plugin and display the plugin name" do
result = command("bin/logstash-plugin list #{plugin_name}")
expect(result.stdout).to match(/^#{plugin_name}$/)
expect(result.exit_status).to eq(0)
end
it "list the plugin with his version" do
result = command("bin/logstash-plugin list --verbose #{plugin_name}")
expect(result.stdout).to match(/^#{plugin_name} \(\d+\.\d+.\d+\)/)
expect(result.exit_status).to eq(0)
end
end
end

View file

@ -1,53 +0,0 @@
# Encoding: utf-8
require_relative "../spec_helper"
require "fileutils"
describe "bin/logstash-plugin generate" do
shared_examples "bin/logstash-plugin generate" do
let(:plugin_name) { "dummy" }
let(:full_plugin_name) { "logstash-#{plugin_type}-#{plugin_name}" }
describe "plugin creation" do
before(:each) do
FileUtils.rm_rf(full_plugin_name)
end
after(:each) do
FileUtils.rm_rf(full_plugin_name)
end
it "generate a new plugin" do
result = command("bin/logstash-plugin generate --type #{plugin_type} --name #{plugin_name}")
expect(result.exit_status).to eq(0)
expect(result.stdout).to match(/Creating #{full_plugin_name}/)
expect(Dir.exist?("#{full_plugin_name}")).to eq(true)
end
it "raise an error if the plugin is already generated" do
command("bin/logstash-plugin generate --type #{plugin_type} --name #{plugin_name}")
result = command("bin/logstsh-plugin generate --type #{plugin_type} --name #{plugin_name}")
expect(result.exit_status).to eq(1)
end
end
end
describe "bin/logstash-plugin generate input" do
it_behaves_like "bin/logstash-plugin generate" do
let(:plugin_type) { "input" }
end
end
describe "bin/logstash-plugin generate filter" do
it_behaves_like "bin/logstash-plugin generate" do
let(:plugin_type) { "filter" }
end
end
describe "bin/logstash-plugin generate output" do
it_behaves_like "bin/logstash-plugin generate" do
let(:plugin_type) { "output" }
end
end
end

View file

@ -1,24 +0,0 @@
# Encoding: utf-8
require_relative "../spec_helper"
describe "bin/logstash-plugin uninstall" do
context "when the plugin isn't installed" do
it "fails to uninstall it" do
result = command("bin/logstash-plugin uninstall logstash-filter-cidr")
expect(result.stderr).to match(/ERROR: Uninstall Aborted, message: This plugin has not been previously installed, aborting/)
expect(result.exit_status).to eq(1)
end
end
context "when the plugin is installed" do
it "succesfully uninstall it" do
# make sure we have the plugin installed.
command("bin/logstash-plugin install logstash-filter-ruby")
result = command("bin/logstash-plugin uninstall logstash-filter-ruby")
expect(result.stdout).to match(/^Uninstalling logstash-filter-ruby/)
expect(result.exit_status).to eq(0)
end
end
end

View file

@ -1,32 +0,0 @@
# Encoding: utf-8
require_relative "../spec_helper"
describe "update" do
let(:plugin_name) { "logstash-input-stdin" }
let(:previous_version) { "2.0.1" }
before do
command("bin/logstash-plugin install --version #{previous_version} #{plugin_name}")
cmd = command("bin/logstash-plugin list --verbose #{plugin_name}")
expect(cmd.stdout).to match(/#{plugin_name} \(#{previous_version}\)/)
end
context "update a specific plugin" do
subject { command("bin/logstash-plugin update #{plugin_name}") }
it "has executed succesfully" do
expect(subject.exit_status).to eq(0)
expect(subject.stdout).to match(/Updating #{plugin_name}/)
end
end
context "update all the plugins" do
subject { command("bin/logstash-plugin update") }
it "has executed succesfully" do
expect(subject.exit_status).to eq(0)
cmd = command("bin/logstash-plugin list --verbose #{plugin_name}").stdout
expect(cmd).to match(/logstash-input-stdin \(#{LogStashTestHelpers.latest_version(plugin_name)}\)/)
end
end
end

View file

@ -1,37 +0,0 @@
# encoding: utf-8
require_relative "support/integration_test_helpers"
require_relative "../../logstash-core/lib/logstash/environment"
require "fileutils"
if LogStash::Environment.windows?
puts "[integration] Theses integration test are specifically made to be run on under linux/unix"
puts "[integration] Please see our windows version of the tests https://github.com/elastic/logstash/tree/master/test/windows"
end
# Configure the test environment
source = File.expand_path(File.join(File.dirname(__FILE__), "..", ".."))
integration_path = File.join(source, "integration_run")
puts "[integration_spec] configure environment"
if Dir.exists?(integration_path)
# We copy the current logstash into a temporary directory
# since the tests are a bit destructive
FileUtils.mkdir_p(integration_path)
rsync_cmd = "rsync -a --delete --exclude 'rspec' --exclude '#{File.basename(integration_path)}' --exclude 'integration_spec' --exclude '.git' #{source} #{integration_path}"
puts "[integration_spec] Rsync source code into: #{integration_path}"
system(rsync_cmd)
puts "[integration_spec] Finish rsync"
LOGSTASH_TEST_PATH = File.join(integration_path, "logstash")
else
LOGSTASH_TEST_PATH = File.expand_path(File.join(File.dirname(__FILE__), ".."))
end
puts "[integration_spec] Running the test in #{LOGSTASH_TEST_PATH}"
puts "[integration_spec] Running specs"
RSpec.configure do |config|
config.order = "random"
end

View file

@ -1,89 +0,0 @@
# encoding: utf-8
require "json"
require "open3"
require "open-uri"
require "stud/temporary"
require "fileutils"
require "bundler"
require "gems"
class CommandResponse
attr_reader :stdin, :stdout, :stderr, :exit_status
def initialize(cmd, stdin, stdout, stderr, exit_status)
@stdin = stdin
@stdout = stdout
@stderr = stderr
@exit_status = exit_status
@cmd = cmd
end
def to_debug
"DEBUG: stdout: #{stdout}, stderr: #{stderr}, exit_status: #{exit_status}"
end
def to_s
@cmd
end
end
def command(cmd, path = nil)
# http://bundler.io/v1.3/man/bundle-exec.1.html
# see shelling out.
#
# Since most of the integration test are environment destructive
# its better to run them in a cloned directory.
path = LOGSTASH_TEST_PATH if path == nil
Bundler.with_clean_env do
Dir.chdir(path) do
Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
CommandResponse.new(cmd,
stdin,
stdout.read.chomp,
stderr.read.chomp,
wait_thr.value.exitstatus)
end
end
end
end
def gem_fetch(name)
tmp = Stud::Temporary.directory
FileUtils.mkdir_p(tmp)
c = command("gem fetch #{name}", tmp)
if c.exit_status == 1
raise RuntimeError, "Can't fetch gem #{name}"
end
return Dir.glob(File.join(tmp, "#{name}*.gem")).first
end
# This is a bit hacky since JRuby doesn't support fork,
# we use popen4 which return the pid of the process and make sure we kill it
# after letting it run for a few seconds.
def launch_logstash(cmd, path = nil)
path = LOGSTASH_TEST_PATH if path == nil
pid = 0
Thread.new do
Bundler.with_clean_env do
Dir.chdir(path) do
pid, input, output, error = IO.popen4(cmd) #jruby only
end
end
end
sleep(30)
begin
Process.kill("INT", pid)
rescue
end
end
module LogStashTestHelpers
def self.latest_version(name)
Gems.versions(name).first["number"]
end
end

View file

@ -1,50 +0,0 @@
83.149.9.216 - - [26/Aug/2014:21:13:42 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:42 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-dashboard3.png HTTP/1.1" 200 171717 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:44 +0000] "GET /presentations/logstash-monitorama-2013/plugin/highlight/highlight.js HTTP/1.1" 200 26185 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:44 +0000] "GET /presentations/logstash-monitorama-2013/plugin/zoom-js/zoom.js HTTP/1.1" 200 7697 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:45 +0000] "GET /presentations/logstash-monitorama-2013/plugin/notes/notes.js HTTP/1.1" 200 2892 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:42 +0000] "GET /presentations/logstash-monitorama-2013/images/sad-medic.png HTTP/1.1" 200 430406 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:45 +0000] "GET /presentations/logstash-monitorama-2013/css/fonts/Roboto-Bold.ttf HTTP/1.1" 200 38720 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:45 +0000] "GET /presentations/logstash-monitorama-2013/css/fonts/Roboto-Regular.ttf HTTP/1.1" 200 41820 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:45 +0000] "GET /presentations/logstash-monitorama-2013/images/frontend-response-codes.png HTTP/1.1" 200 52878 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:43 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-dashboard.png HTTP/1.1" 200 321631 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:46 +0000] "GET /presentations/logstash-monitorama-2013/images/Dreamhost_logo.svg HTTP/1.1" 200 2126 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:43 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-dashboard2.png HTTP/1.1" 200 394967 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:46 +0000] "GET /presentations/logstash-monitorama-2013/images/apache-icon.gif HTTP/1.1" 200 8095 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:46 +0000] "GET /presentations/logstash-monitorama-2013/images/nagios-sms5.png HTTP/1.1" 200 78075 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:46 +0000] "GET /presentations/logstash-monitorama-2013/images/redis.png HTTP/1.1" 200 25230 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:47 +0000] "GET /presentations/logstash-monitorama-2013/images/elasticsearch.png HTTP/1.1" 200 8026 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:47 +0000] "GET /presentations/logstash-monitorama-2013/images/logstashbook.png HTTP/1.1" 200 54662 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:47 +0000] "GET /presentations/logstash-monitorama-2013/images/github-contributions.png HTTP/1.1" 200 34245 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:47 +0000] "GET /presentations/logstash-monitorama-2013/css/print/paper.css HTTP/1.1" 200 4254 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:47 +0000] "GET /presentations/logstash-monitorama-2013/images/1983_delorean_dmc-12-pic-38289.jpeg HTTP/1.1" 200 220562 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:46 +0000] "GET /presentations/logstash-monitorama-2013/images/simple-inputs-filters-outputs.jpg HTTP/1.1" 200 1168622 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:46 +0000] "GET /presentations/logstash-monitorama-2013/images/tiered-outputs-to-inputs.jpg HTTP/1.1" 200 1079983 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
83.149.9.216 - - [26/Aug/2014:21:13:53 +0000] "GET /favicon.ico HTTP/1.1" 200 3638 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
24.236.252.67 - - [26/Aug/2014:21:14:10 +0000] "GET /favicon.ico HTTP/1.1" 200 3638 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0"
93.114.45.13 - - [26/Aug/2014:21:14:32 +0000] "GET /articles/dynamic-dns-with-dhcp/ HTTP/1.1" 200 18848 "http://www.google.ro/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCwQFjAB&url=http%3A%2F%2Fwww.semicomplete.com%2Farticles%2Fdynamic-dns-with-dhcp%2F&ei=W88AU4n9HOq60QXbv4GwBg&usg=AFQjCNEF1X4Rs52UYQyLiySTQxa97ozM4g&bvm=bv.61535280,d.d2k" "Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0"
93.114.45.13 - - [26/Aug/2014:21:14:32 +0000] "GET /reset.css HTTP/1.1" 200 1015 "http://www.semicomplete.com/articles/dynamic-dns-with-dhcp/" "Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0"
93.114.45.13 - - [26/Aug/2014:21:14:33 +0000] "GET /style2.css HTTP/1.1" 200 4877 "http://www.semicomplete.com/articles/dynamic-dns-with-dhcp/" "Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0"
93.114.45.13 - - [26/Aug/2014:21:14:33 +0000] "GET /favicon.ico HTTP/1.1" 200 3638 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0"
93.114.45.13 - - [26/Aug/2014:21:14:33 +0000] "GET /images/jordan-80.png HTTP/1.1" 200 6146 "http://www.semicomplete.com/articles/dynamic-dns-with-dhcp/" "Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0"
93.114.45.13 - - [26/Aug/2014:21:14:33 +0000] "GET /images/web/2009/banner.png HTTP/1.1" 200 52315 "http://www.semicomplete.com/style2.css" "Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0"
66.249.73.135 - - [26/Aug/2014:21:15:03 +0000] "GET /blog/tags/ipv6 HTTP/1.1" 200 12251 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
50.16.19.13 - - [26/Aug/2014:21:15:15 +0000] "GET /blog/tags/puppet?flav=rss20 HTTP/1.1" 200 14872 "http://www.semicomplete.com/blog/tags/puppet?flav=rss20" "Tiny Tiny RSS/1.11 (http://tt-rss.org/)"
66.249.73.185 - - [26/Aug/2014:21:15:23 +0000] "GET / HTTP/1.1" 200 37932 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
110.136.166.128 - - [26/Aug/2014:21:16:11 +0000] "GET /projects/xdotool/ HTTP/1.1" 200 12292 "http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&sqi=2&ved=0CFYQFjAE&url=http%3A%2F%2Fwww.semicomplete.com%2Fprojects%2Fxdotool%2F&ei=6cwAU_bRHo6urAeI0YD4Ag&usg=AFQjCNE3V_aCf3-gfNcbS924S6jZ6FqffA&bvm=bv.61535280,d.bmk" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0"
46.105.14.53 - - [26/Aug/2014:21:16:17 +0000] "GET /blog/tags/puppet?flav=rss20 HTTP/1.1" 200 14872 "-" "UniversalFeedParser/4.2-pre-314-svn +http://feedparser.org/"
110.136.166.128 - - [26/Aug/2014:21:16:22 +0000] "GET /reset.css HTTP/1.1" 200 1015 "http://www.semicomplete.com/projects/xdotool/" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0"
110.136.166.128 - - [26/Aug/2014:21:16:22 +0000] "GET /style2.css HTTP/1.1" 200 4877 "http://www.semicomplete.com/projects/xdotool/" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0"
110.136.166.128 - - [26/Aug/2014:21:16:22 +0000] "GET /favicon.ico HTTP/1.1" 200 3638 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0"
110.136.166.128 - - [26/Aug/2014:21:16:22 +0000] "GET /images/jordan-80.png HTTP/1.1" 200 6146 "http://www.semicomplete.com/projects/xdotool/" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0"
123.125.71.35 - - [26/Aug/2014:21:16:31 +0000] "GET /blog/tags/release HTTP/1.1" 200 40693 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
110.136.166.128 - - [26/Aug/2014:21:16:22 +0000] "GET /images/web/2009/banner.png HTTP/1.1" 200 52315 "http://www.semicomplete.com/style2.css" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0"
50.150.204.184 - - [26/Aug/2014:21:17:06 +0000] "GET /images/googledotcom.png HTTP/1.1" 200 65748 "http://www.google.com/search?q=https//:google.com&source=lnms&tbm=isch&sa=X&ei=4-r8UvDrKZOgkQe7x4CICw&ved=0CAkQ_AUoAA&biw=320&bih=441" "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; LG-MS770 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
207.241.237.225 - - [26/Aug/2014:21:17:35 +0000] "GET /blog/tags/examples HTTP/1.0" 200 9208 "http://www.semicomplete.com/blog/tags/C" "Mozilla/5.0 (compatible; archive.org_bot +http://www.archive.org/details/archive.org_bot)"
200.49.190.101 - - [26/Aug/2014:21:17:39 +0000] "GET /reset.css HTTP/1.1" 200 1015 "-" "-"
200.49.190.100 - - [26/Aug/2014:21:17:37 +0000] "GET /blog/tags/web HTTP/1.1" 200 44019 "-" "QS304 Profile/MIDP-2.0 Configuration/CLDC-1.1"
200.49.190.101 - - [26/Aug/2014:21:17:41 +0000] "GET /style2.css HTTP/1.1" 200 4877 "-" "-"
200.49.190.101 - - [26/Aug/2014:21:17:48 +0000] "GET /images/jordan-80.png HTTP/1.1" 200 6146 "-" "QS304 Profile/MIDP-2.0 Configuration/CLDC-1.1"
66.249.73.185 - - [26/Aug/2014:21:18:48 +0000] "GET /reset.css HTTP/1.1" 200 1015 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.73.135 - - [26/Aug/2014:21:18:55 +0000] "GET /blog/tags/munin HTTP/1.1" 200 9746 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.73.135 - - [26/Aug/2014:21:19:16 +0000] "GET /blog/tags/firefox?flav=rss20 HTTP/1.1" 200 16021 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"