Sha256: b1109049cd8a36b2d18e51904bbc3174968f61e607deb725ca93545501c7440b

Contents?: true

Size: 1009 Bytes

Versions: 1

Compression:

Stored size: 1009 Bytes

Contents

module StressReporter
  module Actions
    # Actions to report on passenger usage.
    # Current requests, urls, pids
    # TODO: We should not assume that xm_last_url_for_{pid} are in /tmp
    # TODO: Spawning passenger-status is slow
    class Xmanager

      CMD = "passenger-status"
      PID_REGEX = /PID:\s*(\d+)/

      # Report returns a string array
      def self.report
        out = []
        Xmanager.current_requests.each_pair do |pid, url|
          out << "PID:\t#{ pid }\tREQUEST:\t#{ url }"
        end
        out
      end

      private

      # Returns array of pids of current passenger processes
      def self.pids
        p = `#{ CMD }`
        p.scan(PID_REGEX).flatten
      end

      # Returns hash { pid => url }
      def self.current_requests
        requests = {}
        pids.each do |pid|
          requests[pid] =
            File.read("/tmp/xm_last_url_for_#{ pid }").chomp rescue "Not xmanager or fresh process"
        end
        requests
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stress_reporter-0.0.4 lib/stress_reporter/actions/xmanager.rb