From 03bc03145655f4b3ca4751e96a2edca76f52ce71 Mon Sep 17 00:00:00 2001 From: Shizuo Fujita Date: Tue, 15 Oct 2024 16:11:26 +0900 Subject: [PATCH] socket_manager_spec: add tests Signed-off-by: Shizuo Fujita --- lib/serverengine/socket_manager.rb | 1 + spec/socket_manager_spec.rb | 35 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/lib/serverengine/socket_manager.rb b/lib/serverengine/socket_manager.rb index f65c941..83d5f42 100644 --- a/lib/serverengine/socket_manager.rb +++ b/lib/serverengine/socket_manager.rb @@ -111,6 +111,7 @@ def initialize(path, start: true) end attr_reader :path + attr_reader :tcp_sockets, :udp_sockets # for tests def new_client Client.new(@path) diff --git a/spec/socket_manager_spec.rb b/spec/socket_manager_spec.rb index c74e877..b80232d 100644 --- a/spec/socket_manager_spec.rb +++ b/spec/socket_manager_spec.rb @@ -55,6 +55,15 @@ expect(server.path).to be_between(49152, 65535) end end + + context 'Server.take_over_another_server' do + it 'not supported' do + server = SocketManager::Server.open(server_path) + expect { SocketManager::Server.take_over_another_server(server_path) }.to raise_error(NotImplementedError) + ensure + server.close + end + end else context 'Server.generate_path' do it 'returns socket path under /tmp' do @@ -76,6 +85,32 @@ expect(server.path).to include('/tmp/SERVERENGINE_SOCKETMANAGER_') end end + + context 'Server.take_over_another_server' do + it 'should take over listen sockets to another server' do + server = SocketManager::Server.open(server_path) + + client = ServerEngine::SocketManager::Client.new(server_path) + tcp1 = client.listen_tcp('127.0.0.1', 55551) + udp1 = client.listen_udp('127.0.0.1', 55561) + udp2 = client.listen_udp('127.0.0.1', 55562) + + another_server = SocketManager::Server.take_over_another_server(server_path) + + expect(another_server.tcp_sockets.size).to eq(1) + expect(another_server.tcp_sockets['localhost:55551'].addr).to eq(['AF_INET', 55551, '127.0.0.1', '127.0.0.1']) + + expect(another_server.udp_sockets.size).to eq(2) + expect(another_server.udp_sockets['localhost:55561'].addr).to eq(['AF_INET', 55561, '127.0.0.1', '127.0.0.1']) + expect(another_server.udp_sockets['localhost:55562'].addr).to eq(['AF_INET', 55562, '127.0.0.1', '127.0.0.1']) + ensure + tcp1.close + udp1.close + udp2.close + server.close + another_server.close + end + end end context 'with thread' do