module Fog::Mock

Attributes

delay[R]

Public Class Methods

delay=(new_delay) click to toggle source
# File lib/fog/core/mock.rb, line 26
def self.delay=(new_delay)
  raise ArgumentError, "delay must be non-negative" unless new_delay >= 0
  @delay = new_delay
end
not_implemented(message = "Contributions welcome!") click to toggle source
# File lib/fog/core/mock.rb, line 31
def self.not_implemented(message = "Contributions welcome!")
  raise Fog::Errors::MockNotImplemented, message
end
random_base64(length) click to toggle source
# File lib/fog/core/mock.rb, line 51
def self.random_base64(length)
  random_selection(
    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
    length
  )
end
random_hex(length) click to toggle source
# File lib/fog/core/mock.rb, line 58
def self.random_hex(length)
  max = ("f" * length).to_i(16)
  rand(max).to_s(16).rjust(length, "0")
end
random_ip(opts = { :version => :v4 }) click to toggle source
# File lib/fog/core/mock.rb, line 35
def self.random_ip(opts = { :version => :v4 })
  version = opts[:version]
  if version == :v6
    bit_length = 128
    family = Socket::AF_INET6
  elsif version == :v4
    bit_length = 32
    family = Socket::AF_INET
  else
    raise ArgumentError, "Unknown IP version: #{version}"
  end

  seed = 1 + rand((2**bit_length) - 1)
  IPAddr.new(seed, family).to_s
end
random_letters(length) click to toggle source
# File lib/fog/core/mock.rb, line 63
def self.random_letters(length)
  random_selection(
    "abcdefghijklmnopqrstuvwxyz",
    length
  )
end
random_letters_and_numbers(length) click to toggle source
# File lib/fog/core/mock.rb, line 75
def self.random_letters_and_numbers(length)
  random_selection(
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
    length
  )
end
random_numbers(length) click to toggle source
# File lib/fog/core/mock.rb, line 70
def self.random_numbers(length)
  max = ("9" * length).to_i
  rand(max).to_s
end
random_selection(characters, length) click to toggle source
# File lib/fog/core/mock.rb, line 82
def self.random_selection(characters, length)
  selection = ""
  length.times do
    position = rand(characters.length)
    selection << characters[position..position]
  end
  selection
end
reset() click to toggle source
# File lib/fog/core/mock.rb, line 91
def self.reset
  mocked_services = []
  Fog.constants.map do |x|
    next if Fog.autoload?(x)
    x_const = Fog.const_get(x)
    x_const.respond_to?(:constants) && x_const.constants.map do |y|
      next if x_const.autoload?(y)
      y_const = x_const.const_get(y)
      y_const.respond_to?(:constants) && y_const.constants.map do |z|
        next if y_const.autoload?(z)
        mocked_services << y_const.const_get(z) if z.to_sym == :Mock
      end
    end
  end

  mocked_services.each do |mocked_service|
    next unless mocked_service.respond_to?(:reset)
    mocked_service.reset
  end
end