Sha256: fff0af0bb2716c56d51123475977be82a26cf6a2899359830acb0a5cbe3ebaa5

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

require "bundler/gem_tasks"
require "rspec/core/rake_task"

RSpec::Core::RakeTask.new(:test)

task :default => :test

require 'async/http/protocol'
require 'async/io/host_endpoint'

PROTOCOL = Async::HTTP::Protocol::HTTP1

task :debug do
	require 'async/logger'
	
	Async.logger.level = Logger::DEBUG
end

task :server do
	require 'async/reactor'
	require 'async/container/forked'
	require 'async/http/server'
	
	server = Async::HTTP::Server.new(Async::IO::Endpoint.tcp('127.0.0.1', 9294, reuse_port: true), PROTOCOL) do |request, peer, address|
		return Async::HTTP::Response[200, {'content-type' => 'text/plain'}, ["Hello World"]]
	end
	
	container = Async::Container::Forked.new(concurrency: 1) do
		#GC.disable
		
		server.run
	end
	
	container.wait
end

task :benchmark do
	sh 'wrk -t 8 -c 8 -d 2 http://127.0.0.1:9294'
end

task :client do
	require 'async/reactor'
	require 'async/http/client'
	
	client = Async::HTTP::Client.new(Async::IO::Endpoint.tcp('127.0.0.1', 9294, reuse_port: true), PROTOCOL)
	
	Async::Reactor.run do
		response = client.get("/")
		
		puts response.inspect
		
		client.close
	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::Endpoint.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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
async-http-0.24.3 Rakefile
async-http-0.24.2 Rakefile
async-http-0.24.1 Rakefile