discourse/spec/components/stats_socket_spec.rb

58 lines
1.1 KiB
Ruby

require 'rails_helper'
require_dependency 'stats_socket'
describe StatsSocket do
let :socket_path do
"#{Dir.tmpdir}/#{SecureRandom.hex}"
end
let :stats_socket do
StatsSocket.new(socket_path)
end
before do
stats_socket.start
end
after do
stats_socket.stop
end
it "can respond to various stats commands" do
line = nil
# ensure this works more than once :)
2.times do
socket = UNIXSocket.new(socket_path)
socket.send "gc_stat\n", 0
line = socket.readline
socket.close
end
socket = UNIXSocket.new(socket_path)
socket.send "gc_st", 0
socket.flush
sleep 0.001
socket.send "at\n", 0
line = socket.readline
socket.close
parsed = JSON.parse(line)
expect(parsed.keys.sort).to eq(GC.stat.keys.map(&:to_s).sort)
# make sure we have libv8 going
PrettyText.cook("x")
socket = UNIXSocket.new(socket_path)
socket.send "v8_stat\n", 0
line = socket.readline
socket.close
parsed = JSON.parse(line)
expect(parsed['total_physical_size']).to be>(0)
end
end