lib/gladys.rb
# frozen_string_literal: true # Performance optimizations for Ruby if RUBY_ENGINE == "ruby" # Optimize GC for high-throughput scenarios GC.start(full_mark: true, immediate_sweep: true) if GC.respond_to?(:start) # Configure for better concurrent performance if defined?(GC.compact) at_exit { GC.compact } end end require "bundler/setup" Bundler.require(:default) $LOAD_PATH.unshift File.dirname(__FILE__) require "active_support" require "active_support/core_ext/numeric/bytes" require "active_support/number_helper" require "active_support/time" require "benchmark" require "concurrent" require "pg" require "sequel" require "socket" require "thor" require "json" require "securerandom" require "dry-configurable" require "pgvector" require "enumerable-stats" module Gladys require "gladys/help" require "gladys/time_series/counter" require "gladys/time_series/percentile" require "gladys/helpers/default" require "gladys/database" require "gladys/option_set" require "gladys/errors" require "gladys/client" require "gladys/metrics" require "gladys/workload" require "gladys/script" require "gladys/report" require "gladys/context" require "gladys/cli" require "gladys/container" require "gladys/actions/base" require "gladys/actions/benchmark" require "gladys/actions/cleanup" require "gladys/actions/prepare" def self.logger Client.logger end def self.log(message) logger.info message end def self.log_debug(message) logger.debug(message) end def self.report_script_error(script, error) raise error if Client.raise_on_error? logger.error("Error in script: #{script.name}") logger.error(error.message) logger.error(error.backtrace.select { |line| line.include?(script.path) }.join("\n\t")) end def self.report_error(error) raise error if Client.raise_on_error? logger.error(error.message) logger.debug(error.backtrace.join("\n\t")) end end