windows 云主机测试与回归技巧

1.四大参数校验工具

cpu,内存,磁盘io,网络io。

部分参考了一下微软msdn的这篇文章Tools To Simulate CPU / Memory / Disk Load

cpu

图形化工具 CPUSTRES.EXE

这个工具比较简单,直接选择用几个thread,选择一下priority和activity优先级,即可产生不同的压力。

cpustres.png

命令行工具,consume.exe。

consume 使用方法:

consume RESOURCE [-time SECONDS]

RESOURCE can be one of the following:

-physical-memory
-page-file
-disk-space
-cpu-time
-kernel-pool

内存

内存加压工具:
testlimit.exe

Testlimit64.exe -d -c 2048

即占用2G内存。

testlimit.png

磁盘io

直接参考使用 fio
注意ioengine 使用windowsaio

fio.exe --direct=1 --iodepth=1  --rw=randrw  --rwmixread=70  --bs=16k --size=1g   --ioengine=windowsaio   --group_reporting    --name=file --runtime=300 --time_based --numjobs=1 --thread   --filename=bench

网络io

这个也可以使用和linux下相一致的 iperf

使用方式同linux。

server端
client端

 iperf -u -c  223.252.223.153   -i 2 -b 40M  -t 600

2.穿透vnc快捷键映射

首先讲一下回归测试windows尽可能自动化,降低手工操作的思路:

1.尽可能把测试工具,测试环境准备好(例如关闭防火墙),然后打一个镜像,使用这个镜像进行测试。
2.但是因为需要在不同环境中进行回归,以及由于各种目的,需要测试一个纯净的镜像等需求(例如在基础镜像中进行了一些小的变更),导致未能满足要求1.
3.所以考虑将测试工具打成一个压缩包,上传到对象存储上去。
4.windows server2012使用浏览器下载十分繁琐,因为安全原因,需要很多鼠标点击操作关闭安全策略才能下载,正好调研发现powershell 自带一个curl,注意虽然和linux下curl不完全一样,但是能实现下载并保存为文件的需求。下文有描述通过 scurl键映射一键下载对应回归的工具包。

实现穿透vnc快捷键映射的动机:
1.windows不方便自动化。
2.远程操作涉及到许多gui交互。(关闭防火墙等)
3.vnc不能进行复制粘贴。

目标,把gui操作尽可能的cli化(利用powershell)。

例如:关闭防火墙
1.手工鼠标点击操作极其复杂
2.如果使用powershell

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

挂载云硬盘操作
1.鼠标点击操作极其复杂
2.如果使用powershell

Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS  -Confirm:$false

但是通过vnc,不能和宿主机进行复制黏贴,手输入那么大一串命令行不现实,而且容易出错。
需要做一个键映射,类似vim中的map。将一个较长的命令映射成一个较短的字符串。

考虑使用autohotkey实现。直接使用它的sendraw模块。将相关字符串已按键方式输出,正好输入到vnc中,进行操作。

一个autohotkey demo 脚本。之前使用f1-f10键作为映射键。考虑到相关命令日积月累越来越长,于是使用短命令来映射,我是用s作为leader key

::scurl::
sendraw curl http://testnos1.nos-eastchina1.126.net/windows_tool.zip -OutFile wintool.zip
sleep 10
return

::sdt::
sendraw  http://testnos1.nos-eastchina1.126.net/windows_tool.zip 
return

::sfire::
sendraw  Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
return

;check MTU
::smtu::
sendraw netsh interface ipv4  show subinterfaces
return

::sfio::
sendraw fio.exe --direct=1 --iodepth=1  --rw=randrw  --rwmixread=70  --bs=16k --size=1g   --ioengine=windowsaio   --group_reporting    --name=file --runtime=300 --time_based --numjobs=1 --thread   --filename=bench
return

::siperf::
sendraw iperf -u -c  223.252.223.153   -i 2 -b 40M  -t 600
return

::svol::
sendraw Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS  -Confirm:$false
return

::sping::
sendraw ping 114.114.114.114
return

操作效果如下:

ahk-inject-vnc.gif

3.ansible批量执行

如果需要批量进行多台windows云主机的测试,上述方法手工操作还是太多了,试想手工登录100台vnc然后进行某个操作,orz。

windows云主机的批量处理工具貌似没有linux那么丰富?调研发现某个博主这么说,然而我并没有chef相关经验,而且ansible貌似在windows部署方面也有所进展了。我调通了一个例子,能够实现一部分自动化。

凡是牵扯到工具选型的时候,如果你发现你处于一个非常纠结的地位,那可能是因为竞品工具没有一个能突出重围,导致你在它们各自的优缺点之间难以取舍。我也理解,工具选型要考虑的因素太多。这个项目的选型其实没经过太大波折,很快就决定使用Chef。原因我可以简单说一下,Puppet的API太不友好,ansible和salt对windows的支持程度未知,而根据我以前的经验,Chef对windows的支持还是比较成熟的。所以我们就快刀斩乱麻选择了Chef。

使用方式
ansible 分为server端和client端。这里client端即为被操作的windows云主机。而server端必须使用一台linux云主机,不支持windows!(囧)

server安装完ansible并进行配置之后

root@debian:/opt/ansible# vi hosts.ini

[windows]                                                                                                                                   
59.111.122.255

[windows:vars]
ansible_ssh_user=Administrator
ansible_ssh_pass=mypassword
ansible_ssh_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

client

windows云主机设置

1. 关闭防火墙  Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
2. 运行ConfigureRemotingForAnsible.ps1 这个文件

ad-hoc方式

root@debian-test-master:/opt/ansible# ansible windows -i hosts.ini -m win_ping
59.111.122.255 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

查看主机基本状况

root@debian-test-master:/opt/ansible# ansible windows -i hosts.ini  -m setup
59.111.100.25 | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution": "Microsoft Windows NT 6.3.9600.0",
        "ansible_distribution_version": "6.3.9600.0",
        "ansible_fqdn": "WIN-AQJ5DL6898A",
        "ansible_hostname": "WIN-AQJ5DL6898A",
        "ansible_ip_addresses": [
            "10.173.32.16",
            "fe80::617c:a9ee:f457:cc63",
            "59.111.100.25",
            "fe80::7d2a:e355:45c6:495f"
        ],
        "ansible_os_family": "Windows",
        "ansible_system": "Win32NT",
        "ansible_totalmem": "4294967296"
    },
    "changed": false
}

使用play-book

root@debian-test-master:~/ansible-examples/windows# ansible-playbook  -i hosts.ini ping.yml

PLAY [Ping] ********************************************************************

TASK [setup] *******************************************************************
ok: [59.111.100.25]

TASK [ping] ********************************************************************
ok: [59.111.100.25]

PLAY RECAP *********************************************************************
59.111.100.25              : ok=2    changed=0    unreachable=0    failed=0   

传入文件


root@debian-test-master:~/ansible-examples/windows# ansible-playbook  -i hosts.ini copy.yml 

PLAY [copy file] ***************************************************************

TASK [copy file test] **********************************************************
changed: [59.111.100.25]

PLAY RECAP *********************************************************************
59.111.100.25              : ok=1    changed=1    unreachable=0    failed=0   

其中copy.yml内容为

  1 ---                                                                                                                                          
  2 - name: copy file
  3   hosts: all
  4   gather_facts: false
  5   tasks:
  6     - name: copy file test
  7       win_copy:
  8          src: /root/sssgo
  9          dest: c:\sssgo

windows端可以看到,文件已传入根目录


Alt pic

删除文件

root@debian-test-master:~/ansible-examples/windows# ansible windows   -m win_file -a 'path=c:\\sssgo  state=absent'
59.111.122.255 | SUCCESS => {
    "changed": true
}

即可看到文件被删除。

具体玩法和linux下的类似。这样即可以达到批量控制windows云主机的目的。后续一些繁琐的测试可以通过写ansible playbook 自动化起来。当然,最好能够在windows命令行下找到对应的cli工具,或者自己写脚本或者工具实现。:)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 一、前言 如《第1章Ansible发展史》介绍,作为关注度最高的集中化管理工具,Ansible同样支持Window...
    木纳哥阅读 3,649评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,587评论 18 139
  • ansible 系统架构 ansible简介ansible是新出现的自动化运维工具,ansible是一个配置管理和...
    运维阿文阅读 9,552评论 1 52
  • ###### Ansible总结 ##### 运维工作: 系统安装(物理机、虚拟机)-->程序包安装、配置、服务启...
    二郎5阅读 2,009评论 0 4
  • 《微服务设计》,Building Microservices,作者Sam Newman,译者崔力强、张骏,人民邮电...
    BrianZhang阅读 174评论 0 1