68 lines
2.1 KiB
Ruby
68 lines
2.1 KiB
Ruby
require 'faraday'
|
|
require 'thread/pool'
|
|
require 'progress_bar'
|
|
require "#{Rails.root}/lib/api_bench.rb"
|
|
|
|
yml_data = YAML.load_file("#{Rails.root}/config/bench/api_bench.yml")
|
|
namespace :api_benchmark do
|
|
desc 'create random request for order creation and do trading'
|
|
task :random_fire do
|
|
bar = ProgressBar.new(yml_data.dig('order_count'), :percentage, :bar, :elapsed, :eta, :rate)
|
|
|
|
pool = Thread.pool(5)
|
|
creator = ApiBench.new
|
|
start_time = Time.now
|
|
yml_data.dig('order_count').times do |_i|
|
|
pool.process do
|
|
price = rand(1000..1500)
|
|
side = price.odd? ? 'sell' : 'buy'
|
|
creator.create_order(yml_data.dig('base_url'),
|
|
'btcusd',
|
|
side,
|
|
rand.round(2),
|
|
yml_data.dig('server_token'),
|
|
'limit',
|
|
price)
|
|
bar.increment!
|
|
end
|
|
end
|
|
pool.shutdown
|
|
puts 'elapsed_time:'
|
|
puts Time.now - start_time
|
|
end
|
|
|
|
|
|
desc 'create one big sell request for support a lot of small buy order for trading'
|
|
task :direct_fire do
|
|
bar = ProgressBar.new(yml_data.dig('order_count'), :percentage, :bar, :elapsed, :eta, :rate)
|
|
|
|
pool = Thread.pool(5)
|
|
creator = ApiBench.new
|
|
creator.create_order(yml_data.dig('base_url'),
|
|
'btcusd',
|
|
'sell',
|
|
yml_data.dig('order_count'),
|
|
yml_data.dig('server_token'),
|
|
'limit',
|
|
1000)
|
|
# sleep(1)
|
|
start_time = Time.now
|
|
yml_data.dig('order_count').times do |_i|
|
|
pool.process do
|
|
price = rand(1001..1500)
|
|
creator.create_order(yml_data.dig('base_url'),
|
|
'btcusd',
|
|
'buy',
|
|
1,
|
|
yml_data.dig('server_token'),
|
|
'limit',
|
|
price)
|
|
bar.increment!
|
|
end
|
|
end
|
|
pool.shutdown
|
|
puts 'elapsed_time:'
|
|
puts Time.now - start_time
|
|
end
|
|
end
|