File: test_middleware.rb

package info (click to toggle)
ruby-stackprof 0.2.26-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 552 kB
  • sloc: python: 2,494; ruby: 1,264; perl: 920; ansic: 761; javascript: 735; makefile: 4
file content (86 lines) | stat: -rw-r--r-- 2,817 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
$:.unshift File.expand_path('../../lib', __FILE__)
require 'stackprof'
require 'stackprof/middleware'
require 'minitest/autorun'
require 'tmpdir'

class StackProf::MiddlewareTest < Minitest::Test

  def test_path_default
    StackProf::Middleware.new(Object.new)

    assert_equal 'tmp/', StackProf::Middleware.path
  end

  def test_path_custom
    StackProf::Middleware.new(Object.new, { path: 'foo/' })

    assert_equal 'foo/', StackProf::Middleware.path
  end

  def test_save_default
    middleware = StackProf::Middleware.new(->(env) { 100.times { Object.new } },
                                          save_every: 1,
                                          enabled: true)
    Dir.mktmpdir do |dir|
      Dir.chdir(dir) { middleware.call({}) }
      dir = File.join(dir, "tmp")
      assert File.directory? dir
      profile = Dir.entries(dir).reject { |x| File.directory?(x) }.first
      assert profile
      assert_equal "stackprof", profile.split("-")[0]
      assert_equal "cpu", profile.split("-")[1]
      assert_equal Process.pid.to_s, profile.split("-")[2]
    end
  end

  def test_save_custom
    middleware = StackProf::Middleware.new(->(env) { 100.times { Object.new } },
                                          path: "foo/",
                                          save_every: 1,
                                          enabled: true)
    Dir.mktmpdir do |dir|
      Dir.chdir(dir) { middleware.call({}) }
      dir = File.join(dir, "foo")
      assert File.directory? dir
      profile = Dir.entries(dir).reject { |x| File.directory?(x) }.first
      assert profile
      assert_equal "stackprof", profile.split("-")[0]
      assert_equal "cpu", profile.split("-")[1]
      assert_equal Process.pid.to_s, profile.split("-")[2]
    end
  end

  def test_enabled_should_use_a_proc_if_passed
    env = {}

    StackProf::Middleware.new(Object.new, enabled: Proc.new{ false })
    refute StackProf::Middleware.enabled?(env)

    StackProf::Middleware.new(Object.new, enabled: Proc.new{ true })
    assert StackProf::Middleware.enabled?(env)
  end

  def test_enabled_should_use_a_proc_if_passed_and_use_the_request_env
    enable_proc = Proc.new {|env| env['PROFILE'] }

    env = Hash.new { false }
    StackProf::Middleware.new(Object.new, enabled: enable_proc)
    refute StackProf::Middleware.enabled?(env)

    env = Hash.new { true }
    StackProf::Middleware.new(Object.new, enabled: enable_proc)
    assert StackProf::Middleware.enabled?(env)
  end

  def test_raw
    StackProf::Middleware.new(Object.new, raw: true)
    assert StackProf::Middleware.raw
  end

  def test_metadata
    metadata = { key: 'value' }
    StackProf::Middleware.new(Object.new, metadata: metadata)
    assert_equal metadata, StackProf::Middleware.metadata
  end
end unless RUBY_ENGINE == 'truffleruby'