Rakefile in falcon-0.1.3 vs Rakefile in falcon-0.2.0
- old
+ new
@@ -1,43 +1,71 @@
-# encoding: utf-8
-require 'rake'
-require 'rake/testtask'
-require 'rake/rdoctask'
-require File.join(File.dirname(__FILE__), 'lib', 'falcon', 'version')
+require "bundler/gem_tasks"
+require "rspec/core/rake_task"
-desc 'Default: run unit tests.'
+RSpec::Core::RakeTask.new(:test)
+
task :default => :test
-desc 'Test the falcon plugin.'
-Rake::TestTask.new(:test) do |t|
- t.libs << 'lib'
- t.libs << 'test'
- t.pattern = 'test/**/*_test.rb'
- t.verbose = true
-end
+task :server do
+ require 'async/reactor'
+ require 'async/http/server'
+
+ app = lambda do |env|
+ [200, {}, ["Hello World"]]
+ end
-desc 'Generate documentation for the falcon plugin.'
-Rake::RDocTask.new(:rdoc) do |rdoc|
- rdoc.rdoc_dir = 'rdoc'
- rdoc.title = 'Falcon'
- rdoc.options << '--line-numbers' << '--inline-source'
- rdoc.rdoc_files.include('README.rdoc')
- rdoc.rdoc_files.include('lib/**/*.rb')
+ server = Async::HTTP::Server.new([
+ Async::IO::Address.tcp('127.0.0.1', 9294, reuse_port: true)
+ ], app)
+
+ Async::Reactor.run do
+ server.run
+ end
end
-begin
- require 'jeweler'
- Jeweler::Tasks.new do |s|
- s.name = "falcon"
- s.version = Falcon::VERSION.dup
- s.summary = "Background video encoding"
- s.description = "Background video encoding via resque"
- s.email = "galeta.igor@gmail.com"
- s.homepage = "https://github.com/galetahub/falcon"
- s.authors = ["Igor Galeta", "Pavlo Galeta"]
- s.files = FileList["[A-Z]*", "{app,config,lib}/**/*"] - %w(Gemfile Gemfile.lock)
- end
-
- Jeweler::GemcutterTasks.new
-rescue LoadError
- puts "Jeweler not available. Install it with: gem install jeweler"
+task :client do
+ require 'async/reactor'
+ require 'async/http/client'
+
+ client = Async::HTTP::Client.new([
+ Async::IO::Address.tcp('127.0.0.1', 9294, reuse_port: true)
+ ])
+
+ Async::Reactor.run do
+ response = client.get("/")
+
+ puts response.inspect
+ end
end
+
+task :wrk do
+ require 'async/reactor'
+ require 'async/http/server'
+
+ app = lambda do |env|
+ [200, {}, ["Hello World"]]
+ end
+
+ server = Async::HTTP::Server.new([
+ Async::IO::Address.tcp('127.0.0.1', 9294, reuse_port: true)
+ ], app)
+
+ process_count = Etc.nprocessors
+
+ pids = process_count.times.collect do
+ fork do
+ Async::Reactor.run do
+ server.run
+ end
+ end
+ end
+
+ url = "http://127.0.0.1:9294/"
+
+ connections = process_count
+ system("wrk", "-c", connections.to_s, "-d", "2", "-t", connections.to_s, url)
+
+ pids.each do |pid|
+ Process.kill(:KILL, pid)
+ Process.wait pid
+ end
+end
\ No newline at end of file