Sha256: ad4376a11dcea3e4060a6d2d11c069baf963396b90167c687d1088220da3e7e0

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

# frozen_string_literal: true

require_relative 'helper'
require 'localhost/authority'

class SocketTest < MiniTest::Test
  def setup
    super
  end

  def test_tcp
    port = rand(1234..5678)
    server = TCPServer.new('127.0.0.1', port)

    server_fiber = spin do
      while (socket = server.accept)
        spin do
          while (data = socket.gets(8192))
            socket << data
          end
        end
      end
    end

    snooze
    client = TCPSocket.new('127.0.0.1', port)
    client.write("1234\n")
    assert_equal "1234\n", client.readpartial(8192)
    client.close
  ensure
    server_fiber&.stop
    server_fiber&.await
    server&.close
  end

  def test_openssl
    authority = Localhost::Authority.fetch
    context = authority.server_context
    port = rand(1234..5678)
    sock = TCPServer.new('127.0.0.1', port)
    server = OpenSSL::SSL::SSLServer.new(sock, context)

    server_fiber = spin do
      while (socket = server.accept)
        puts "accepted: #{socket.inspect}"
        spin do
          while (data = socket.gets(8192))
            socket << data
          end
        end
      end
    end

    snooze
    p 1
    sock = TCPSocket.new('127.0.0.1', port)
    p 2
    sock.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
    context = OpenSSL::SSL::SSLContext.new
    context.verify_mode = OpenSSL::SSL::VERIFY_NONE
    client = OpenSSL::SSL::SSLSocket.new(sock, context)
    client.sync_close = true
    client.hostname = 'localhost'
    p 3
    client.connect
    p 4
    client.write("GET / HTTP/1.0\r\nHost: realiteq.net\r\n\r\n")#("1234\n")
    p 5
    assert_equal "1234\n", client.readpartial(8192)
    p 6
    client.close
  ensure
    server_fiber&.stop
    server_fiber&.await
    server&.close
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
polyphony-0.43.6 test/test_socket.rb