Sha256: 456626087cab0d4a380b6f82032d01a83a4449228398abeaf6da30a09e67be1f

Contents?: true

Size: 1.31 KB

Versions: 8

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

require_relative 'helper'

class ProcessSupervisionTest < MiniTest::Test
  def test_process_supervisor_with_block
    i, o = IO.pipe

    watcher = spin do
      Polyphony.watch_process do
        i.close
        sleep 5
      ensure
        o << 'foo'
        o.close
      end
    end

    supervisor = spin { supervise(watcher, restart: :always) }

    sleep 0.05
    supervisor.terminate
    supervisor.await

    o.close
    msg = i.read
    assert_equal 'foo', msg
  end

  def test_process_supervisor_restart_with_block
    i1, o1 = IO.pipe
    i2, o2 = IO.pipe

    count = 0
    watcher = spin do
      count += 1
      Polyphony.watch_process do
        i1.gets
        o2.puts count
      end
    end

    supervisor = spin { supervise(watcher, restart: :always) }

    o1.puts
    l = i2.gets
    assert_equal "1\n", l

    o1.puts
    l = i2.gets
    assert_equal "2\n", l

    o1.puts
    l = i2.gets
    assert_equal "3\n", l
  end

  def test_process_supervisor_with_cmd
    fn = '/tmp/test_process_supervisor_with_cmd'
    FileUtils.rm(fn) rescue nil

    watcher = spin do
      Polyphony.watch_process("echo foo >> #{fn}")
    end

    supervisor = spin { supervise(watcher) }

    sleep 0.2
    supervisor.terminate
    supervisor.await

    assert_equal "foo\n", IO.read(fn)

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
polyphony-1.6 test/test_process_supervision.rb
polyphony-1.5 test/test_process_supervision.rb
polyphony-1.4 test/test_process_supervision.rb
polyphony-1.3 test/test_process_supervision.rb
polyphony-1.2.1 test/test_process_supervision.rb
polyphony-1.2 test/test_process_supervision.rb
polyphony-1.1.1 test/test_process_supervision.rb
polyphony-1.1 test/test_process_supervision.rb