Sha256: 8b2cc94a2471d5fae4a11ec392a3f65d8de8a8ebabfb7b4e4d4f8751eea60587

Contents?: true

Size: 1.19 KB

Versions: 2

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

require_relative 'helper'

class TraceTest < MiniTest::Test
  def test_tracing_enabled
    events = []
    Thread.backend.trace_proc = proc { |*e| events << e }
    snooze
    
    assert_equal [
      [:fiber_schedule, Fiber.current, nil],
      [:fiber_switchpoint, Fiber.current],
      [:fiber_run, Fiber.current, nil]
    ], events
  ensure
    Thread.backend.trace_proc = nil
  end

  def test_2_fiber_trace
    events = []
    Thread.backend.trace_proc = proc { |*e| events << e }

    f = spin { sleep 0; :byebye }
    suspend
    sleep 0

    assert_equal [
      [:fiber_create, f],
      [:fiber_schedule, f, nil],
      [:fiber_switchpoint, Fiber.current],
      [:fiber_run, f, nil],
      [:fiber_switchpoint, f],
      [:fiber_event_poll_enter, f],
      [:fiber_schedule, f, nil],
      [:fiber_event_poll_leave, f],
      [:fiber_run, f, nil],
      [:fiber_terminate, f, :byebye],
      [:fiber_switchpoint, Fiber.current],
      [:fiber_event_poll_enter, Fiber.current],
      [:fiber_schedule, Fiber.current, nil],
      [:fiber_event_poll_leave, Fiber.current],
      [:fiber_run, Fiber.current, nil]
    ], events
  ensure
    Thread.backend.trace_proc = nil
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
polyphony-0.59.1 test/test_trace.rb
polyphony-0.59 test/test_trace.rb