module Hive
The Hive
automated testing framework
Constants
- DAEMON_NAME
- LOG_DIRECTORY
- PIDS_DIRECTORY
Public Class Methods
config()
click to toggle source
# File lib/hive.rb, line 43 def self.config Chamber.env end
hive_mind()
click to toggle source
# File lib/hive.rb, line 68 def self.hive_mind Hive.logger.debug "Sysname: #{Sys::Uname.sysname}" Hive.logger.debug "Release: #{Sys::Uname.release}" if ! @hive_mind if @hive_mind = MindMeld::Hive.new( url: Chamber.env.network.hive_mind? ? Chamber.env.network.hive_mind : nil, pem: Chamber.env.network.cert ? Chamber.env.network.cert : nil, ca_file: Chamber.env.network.cafile ? Chamber.env.network.cafile : nil, verify_mode: Chamber.env.network.verify_mode ? Chamber.env.network.verify_mode : nil, device: { hostname: Hive.hostname, version: Gem::Specification.find_by_name('hive-runner').version.to_s, runner_plugins: Hash[Gem::Specification.all.select{ |g| g.name =~ /hive-runner-/ }.map { |p| [p.name, p.version.to_s] }], macs: Mac.addrs, ips: [Hive.ip_address], brand: Hive.config.brand? ? Hive.config.brand : 'BBC', model: Hive.config.model? ? Hive.config.model : 'Hive', operating_system_name: Sys::Uname.sysname, operating_system_version: Sys::Uname.release, device_type: 'Hive' } ) and Etc.respond_to?(:nprocessors) # Require Ruby >= 2.2 @hive_mind.add_statistics( label: 'Processor count', value: Etc.nprocessors, format: 'integer' ) if Chamber.env.diagnostics? && Chamber.env.diagnostics.hive? && Chamber.env.diagnostics.hive.load_warning? && Chamber.env.diagnostics.hive.load_error? @hive_mind.add_statistics( [ { label: 'Load average warning threshold', value: Chamber.env.diagnostics.hive.load_warning, format: 'float' }, { label: 'Load average error threshold', value: Chamber.env.diagnostics.hive.load_error, format: 'float' } ] ) end @hive_mind.flush_statistics if @logger @logger.hive_mind = @hive_mind end end end @hive_mind end
hostname()
click to toggle source
Get the hostname of the Hive
# File lib/hive.rb, line 155 def self.hostname Socket.gethostname.split('.').first end
ip_address()
click to toggle source
Get the IP address of the Hive
# File lib/hive.rb, line 149 def self.ip_address ip = Socket.ip_address_list.detect { |intf| intf.ipv4_private? } ip.ip_address end
logger()
click to toggle source
# File lib/hive.rb, line 47 def self.logger if ! @logger @logger = Hive::Log.new if Hive.config.logging.main_filename? @logger.add_logger("#{LOG_DIRECTORY}/#{Hive.config.logging.main_filename}", Chamber.env.logging.main_level? ? Chamber.env.logging.main_level : 'INFO') end if Hive.config.logging.console_level? @logger.add_logger(STDOUT, Hive.config.logging.console_level) end @logger.default_progname = 'Hive core' end if ! @logger.hive_mind @logger.hive_mind = @hive_mind end @logger end
poll()
click to toggle source
Poll the device database
# File lib/hive.rb, line 127 def self.poll Hive.logger.debug "Polling hive" rtn = Hive.hive_mind.poll Hive.logger.debug "Return data: #{rtn}" if rtn.has_key? 'error' Hive.logger.warn "Hive polling failed: #{rtn['error']}" else Hive.logger.info "Successfully polled hive" end end
register()
click to toggle source
# File lib/hive.rb, line 122 def self.register @register ||= Hive::Register.new end
send_statistics()
click to toggle source
Gather and send statistics
# File lib/hive.rb, line 139 def self.send_statistics Hive.hive_mind.add_statistics( label: 'Load average', value: Sys::CPU.load_avg[0], format: 'float' ) Hive.hive_mind.flush_statistics end