diff --git a/Gemfile b/Gemfile index 0a04e4e..b76e937 100644 --- a/Gemfile +++ b/Gemfile @@ -14,5 +14,4 @@ end group :test do gem 'cztop' - gem 'rbczmq' end diff --git a/ci/Dockerfile.main.erb b/ci/Dockerfile.main.erb index a1bc766..97dae5d 100644 --- a/ci/Dockerfile.main.erb +++ b/ci/Dockerfile.main.erb @@ -1,8 +1,6 @@ FROM iruby-test-base:ruby-<%= ruby_version %> -RUN gem install cztop \ - && gem install rbczmq -- --with-system-libs - +RUN gem install cztop RUN mkdir -p /iruby ADD . /iruby WORKDIR /iruby diff --git a/lib/iruby.rb b/lib/iruby.rb index b4081be..bd68b1a 100644 --- a/lib/iruby.rb +++ b/lib/iruby.rb @@ -24,11 +24,7 @@ begin require 'iruby/session/cztop' rescue LoadError - begin - require 'iruby/session/rbczmq' - rescue LoadError - STDERR.puts "Please install ffi-rzmq or cztop before running iruby. See README." - end + STDERR.puts "Please install ffi-rzmq or cztop before running iruby. See README." end end else diff --git a/lib/iruby/session/rbczmq.rb b/lib/iruby/session/rbczmq.rb deleted file mode 100644 index 625f27e..0000000 --- a/lib/iruby/session/rbczmq.rb +++ /dev/null @@ -1,72 +0,0 @@ -require 'rbczmq' - -module IRuby - class Session - include SessionSerialize - - def initialize(config) - c = ZMQ::Context.new - - connection = "#{config['transport']}://#{config['ip']}:%d" - reply_socket = c.socket(:ROUTER) - reply_socket.bind(connection % config['shell_port']) - - pub_socket = c.socket(:PUB) - pub_socket.bind(connection % config['iopub_port']) - - stdin_socket = c.socket(:ROUTER) - stdin_socket.bind(connection % config['stdin_port']) - - Thread.new do - begin - hb_socket = c.socket(:REP) - hb_socket.bind(connection % config['hb_port']) - ZMQ.proxy(hb_socket, hb_socket) - rescue Exception => e - IRuby.logger.fatal "Kernel heartbeat died: #{e.message}\n#{e.backtrace.join("\n")}" - end - end - - @sockets = { - publish: pub_socket, reply: reply_socket, stdin: stdin_socket - } - - @session = SecureRandom.uuid - unless config['key'].to_s.empty? || config['signature_scheme'].to_s.empty? - raise 'Unknown signature scheme' unless config['signature_scheme'] =~ /\Ahmac-(.*)\Z/ - @hmac = OpenSSL::HMAC.new(config['key'], OpenSSL::Digest.new($1)) - end - end - - def description - 'old-stle session using rbczmq' - end - - # Build and send a message - def send(socket, type, content) - idents = - if socket == :reply && @last_recvd_msg - @last_recvd_msg[:idents] - else - type == :stream ? "stream.#{content[:name]}" : type - end - header = { - msg_type: type, - msg_id: SecureRandom.uuid, - username: 'kernel', - session: @session, - version: '5.0' - } - @sockets[socket].send_message(ZMQ.Message(*serialize(idents, header, content))) - end - - # Receive a message and decode it - def recv(socket) - @last_recvd_msg = unserialize(@sockets[socket].recv_message) - end - - def recv_input - unserialize(@sockets[:stdin].recv_message)[:content]["value"] - end - end -end diff --git a/lib/iruby/session_adapter.rb b/lib/iruby/session_adapter.rb index 96f6f43..02f9448 100644 --- a/lib/iruby/session_adapter.rb +++ b/lib/iruby/session_adapter.rb @@ -36,14 +36,12 @@ def make_rep_socket(protocol, host, port) require_relative 'session_adapter/ffirzmq_adapter' require_relative 'session_adapter/cztop_adapter' - require_relative 'session_adapter/rbczmq_adapter' require_relative 'session_adapter/pyzmq_adapter' def self.select_adapter_class(name=nil) classes = { 'ffi-rzmq' => SessionAdapter::FfirzmqAdapter, 'cztop' => SessionAdapter::CztopAdapter, - 'rbczmq' => SessionAdapter::RbczmqAdapter, # 'pyzmq' => SessionAdapter::PyzmqAdapter } if (name ||= ENV.fetch('IRUBY_SESSION_ADAPTER', nil)) diff --git a/lib/iruby/session_adapter/rbczmq_adapter.rb b/lib/iruby/session_adapter/rbczmq_adapter.rb deleted file mode 100644 index 7158296..0000000 --- a/lib/iruby/session_adapter/rbczmq_adapter.rb +++ /dev/null @@ -1,33 +0,0 @@ -module IRuby - module SessionAdapter - class RbczmqAdapter < BaseAdapter - def self.load_requirements - require 'rbczmq' - end - - def send(sock, data) - sock.send_message(ZMQ::Message(*data)) - end - - def recv(sock) - sock.recv_message - end - - def heartbeat_loop(sock) - ZMQ.proxy(sock, sock) - end - - private - - def make_socket(type, protocol, host, port) - zmq_context.socket(type).tap do |sock| - sock.bind("#{protocol}://#{host}:#{port}") - end - end - - def zmq_context - @zmq_context ||= ZMQ::Context.new - end - end - end -end diff --git a/run-test.sh b/run-test.sh index 2a5137e..eee3943 100644 --- a/run-test.sh +++ b/run-test.sh @@ -4,7 +4,7 @@ set -ex export PYTHON=python3 -ADAPTERS="cztop rbczmq ffi-rzmq pyzmq" +ADAPTERS="cztop ffi-rzmq pyzmq" for adapter in $ADAPTERS; do export IRUBY_TEST_SESSION_ADAPTER_NAME=$adapter diff --git a/test/iruby/session_adapter/rbczmq_adapter_test.rb b/test/iruby/session_adapter/rbczmq_adapter_test.rb deleted file mode 100644 index c28e4ce..0000000 --- a/test/iruby/session_adapter/rbczmq_adapter_test.rb +++ /dev/null @@ -1,37 +0,0 @@ -require_relative 'session_adapter_test_base' -require 'iruby' - -module IRubyTest - if ENV['IRUBY_TEST_SESSION_ADAPTER_NAME'] == 'rbczmq' - class RbczmqAdapterTest < SessionAdapterTestBase - def adapter_class - IRuby::SessionAdapter::RbczmqAdapter - end - - def test_send - dummy_message = MiniTest::Mock.new.expect(:called!, true) - - dummy_socket = MiniTest::Mock.new.expect(:send_message, nil, [dummy_message]) - - ZMQ.stub(:Message, ->(message) { message.called!; message }) do - @session_adapter.send(dummy_socket, dummy_message) - end - - assert(dummy_message.verify) - assert(dummy_socket.verify) - end - - def test_recv - dummy_message = MiniTest::Mock.new - dummy_message.expect(:equal?, true, [dummy_message]) - - dummy_socket = MiniTest::Mock.new.expect(:recv_message, dummy_message) - - assert_same(dummy_message, @session_adapter.recv(dummy_socket)) - - assert(dummy_message.verify) - assert(dummy_socket.verify) - end - end - end -end diff --git a/test/iruby/session_adapter_test.rb b/test/iruby/session_adapter_test.rb index 81482da..862871e 100644 --- a/test/iruby/session_adapter_test.rb +++ b/test/iruby/session_adapter_test.rb @@ -12,27 +12,12 @@ def load_requirements refute subclass.available? end - def test_select_adapter_class_with_rbczmq - IRuby::SessionAdapter::RbczmqAdapter.stub :available?, true do - IRuby::SessionAdapter::CztopAdapter.stub :available?, false do - IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do - IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do - cls = IRuby::SessionAdapter.select_adapter_class - assert_equal IRuby::SessionAdapter::RbczmqAdapter, cls - end - end - end - end - end - def test_select_adapter_class_with_cztop IRuby::SessionAdapter::CztopAdapter.stub :available?, true do - IRuby::SessionAdapter::RbczmqAdapter.stub :available?, false do - IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do - IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do - cls = IRuby::SessionAdapter.select_adapter_class - assert_equal IRuby::SessionAdapter::CztopAdapter, cls - end + IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do + IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do + cls = IRuby::SessionAdapter.select_adapter_class + assert_equal IRuby::SessionAdapter::CztopAdapter, cls end end end @@ -40,12 +25,10 @@ def test_select_adapter_class_with_cztop def test_select_adapter_class_with_ffirzmq IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, true do - IRuby::SessionAdapter::RbczmqAdapter.stub :available?, false do - IRuby::SessionAdapter::CztopAdapter.stub :available?, false do - IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do - cls = IRuby::SessionAdapter.select_adapter_class - assert_equal IRuby::SessionAdapter::FfirzmqAdapter, cls - end + IRuby::SessionAdapter::CztopAdapter.stub :available?, false do + IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do + cls = IRuby::SessionAdapter.select_adapter_class + assert_equal IRuby::SessionAdapter::FfirzmqAdapter, cls end end end @@ -54,30 +37,16 @@ def test_select_adapter_class_with_ffirzmq def test_select_adapter_class_with_pyzmq skip "pyzmq adapter is disabled" IRuby::SessionAdapter::PyzmqAdapter.stub :available?, true do - IRuby::SessionAdapter::RbczmqAdapter.stub :available?, false do - IRuby::SessionAdapter::CztopAdapter.stub :available?, false do - IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do - cls = IRuby::SessionAdapter.select_adapter_class - assert_equal IRuby::SessionAdapter::PyzmqAdapter, cls - end + IRuby::SessionAdapter::CztopAdapter.stub :available?, false do + IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do + cls = IRuby::SessionAdapter.select_adapter_class + assert_equal IRuby::SessionAdapter::PyzmqAdapter, cls end end end end def test_select_adapter_class_with_env - with_env('IRUBY_SESSION_ADAPTER' => 'rbczmq') do - IRuby::SessionAdapter::RbczmqAdapter.stub :available?, true do - assert_equal IRuby::SessionAdapter::RbczmqAdapter, IRuby::SessionAdapter.select_adapter_class - end - - IRuby::SessionAdapter::RbczmqAdapter.stub :available?, false do - assert_raises IRuby::SessionAdapterNotFound do - IRuby::SessionAdapter.select_adapter_class - end - end - end - with_env('IRUBY_SESSION_ADAPTER' => 'cztop') do IRuby::SessionAdapter::CztopAdapter.stub :available?, true do assert_equal IRuby::SessionAdapter::CztopAdapter, IRuby::SessionAdapter.select_adapter_class diff --git a/test/iruby/session_test.rb b/test/iruby/session_test.rb index 7a67e57..84a0924 100644 --- a/test/iruby/session_test.rb +++ b/test/iruby/session_test.rb @@ -22,8 +22,6 @@ def test_new_with_session_adapter adapter_class = case adapter_name when 'cztop' IRuby::SessionAdapter::CztopAdapter - when 'rbczmq' - IRuby::SessionAdapter::RbczmqAdapter when 'ffi-rzmq' IRuby::SessionAdapter::FfirzmqAdapter when 'pyzmq' @@ -39,12 +37,10 @@ def test_new_with_session_adapter def test_without_any_session_adapter IRuby::SessionAdapter::CztopAdapter.stub :available?, false do - IRuby::SessionAdapter::RbczmqAdapter.stub :available?, false do - IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do - IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do - assert_raises IRuby::SessionAdapterNotFound do - IRuby::Session.new(@session_config) - end + IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do + IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do + assert_raises IRuby::SessionAdapterNotFound do + IRuby::Session.new(@session_config) end end end