Module: Actir::Remote

Defined in:
lib/actir/remote.rb

Overview

远程测试环境相关的方法

@author: Hub

@Date: 2015-3-6

Class Method Summary collapse

Class Method Details

.get_remote_address(num = 0) ⇒ Object

获取远程selenium测试环境的docker镜像的IPAddress

Examples:

: get_remote_address 2

Parameters:

  • :

    num [Fixnum] selenium-grid 的node镜像的节点数,对应多进程测试时的进程数量



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
# File 'lib/actir/remote.rb', line 23

def self.get_remote_address(num = 0)
  @docker_cfg = Actir::Config.get("config.test_mode.docker") if @docker_cfg == nil
  docker_ip = @docker_cfg["ip"]
  node_sub_name = ( (@docker_cfg["name"] == nil || @docker_cfg["name"] == "") ? "-node" : @docker_cfg["name"])
  docker_node_name = $env + node_sub_name
  docker_inspect_str = "docker inspect -f='{{.NetworkSettings.IPAddress}}' \\`docker ps | grep #{docker_node_name} | grep 5900 | awk '{print \\$11}'\\`"
  #需要判断执行脚本的环境是本地还是Linux服务器,本地需要ssh 
  puts docker_inspect_str if $debug 
  ip_str = if is_local?
    `ssh root@#{docker_ip} "#{docker_inspect_str}"`
  else
    `#{docker_inspect_str}`
  end
  ip_array = ip_str.split("\n")
  address = []
  #如果入参num小于address.size,则返回num个address
  #如果入参num大于address.size,则返回所有address
  #如果入参num为0即默认的不传入参,则返回所有address
  ip_array.each_with_index do |ip, i| 
    address[ip_array.size - 1 -i] = ip + ":" + @docker_cfg["port"]
  end
  if ip_array.size >= num && num != 0
    return address.first(num)
  else
    return address
  end
end

.is_local?Boolean

判断执行环境是否是本地环境(Mac)

Returns:

  • (Boolean)


73
74
75
76
77
78
# File 'lib/actir/remote.rb', line 73

def self.is_local?
  # hostname = `hostname`
  # hostname.include? "local"
  # 暂时先默认都是本地环境
  return true
end