存档

‘开发’ 分类的存档

Kafka入门:简介

2020年2月18日 没有评论

据官方概括,Kafka是一个分布式流处理平台。这句话什么意思?

一个典型的流处理平台具有三个关键能力:

  • 支持发布与订阅流,这些流包含了消息记录,类似消息队列。
  • 可以存储记录流,以便容错
  • 当记录产生时能快速进行处理

显然,Kafka具备这些能力。Kafka通常应用在两大类应用场景中:

  • 构建实时数据流管道,用以不同应用或系统之间获取数据
  • 构建实时流处理应用,用以转换或处理数据流

在介绍kafka如何实现这些功能之前,先简单了解几个概念:

  • kafka通常是以集群的方式运行在跨越多个数据中心的多台服务器上的
  • kafka可以存储不同类别的记录流,这些类别称之为topics
  • kafka中的每条记录有key、value和timestamp组成
分类: 开发 标签:

如何自动打开Chrome的开发者工具(devtools)

2020年1月15日 没有评论

有时候为了调试方便,我们需要Chrome开始运行时就自动打开开发者工具(devtools)控制台。如何实现呢?

Chrome启动时支持众多选项,可在命令行中运行chrome可执行程序,后边添加–auto-open-devtools-for-tabs参数即可。即chrome.exe –auto-open-devtools-for-tabs

需要注意的是,此参数仅对首个chrome浏览器生效,如果已经打开了其他的chrome浏览器,需要先关闭。

或者,追加–user-data-dir=./即可。

即chrome.exe –auto-open-devtools-for-tabs –user-data-dir=./

分类: 开发, 资料 标签:

阿里云ECS程序开机启动失败原因及解决办法

2020年1月10日 没有评论
  1. 场景描述:
    • 程序a、b均部署在阿里云ecs上,需要开机启动。a需要获取ecs的ip地址,b有较多依赖项。
    • 将a、b启动脚本均配置在rc.local中
    • a存在获取不到ip地址的情况,b存在启动失败的情况
  2. 解决办法:
    • 不通过rc.local启动
    • 将a、b启动脚本配置在crontab中,前面加上@reboot即可:
      @reboot start_a.sh
    • 对于a,需要等待阿里云后台服务启动完成之后才运行。这个需要修改crond.service。如下,追加cloud-final.service即可
      cat /etc/systemd/system/multi-user.target.wants/crond.service
      
      [Unit]
      Description=Command Scheduler
      After=auditd.service systemd-user-sessions.service time-sync.target cloud-final.service
分类: Shell, 资料 标签: ,

公网弹性云虚拟主机中Selenium Grid节点通信配置方法

2019年12月16日 没有评论

通常我们的自动化测试系统是部署在公司内网的,用于日常的功能验证。这时,Selenium hub和node节点之间只需要绑定本地ip即可,即配置-host localIp。

但是如果在诸如阿里云ECS、亚马逊EC2等云虚拟主机中部署hub和node,并且需要通过公网地址通信,则发现这样配置是行不通的。

  • 弹性云虚拟主机通常不配备独立的公网网卡,而是绑定弹性公网ip,这类公网ip无法通过ifconfig查询到,若host指定这类ip,selenium会因无法绑定ip地址而不能运行。
  • 对于hub节点,可通过绑定所有地址来监听node请求:-host 0.0.0.0
  • 对于node节点,首先通过-hub指定hub节点的公网ip。然后显式配置remoteHost参数:-remoteHost http://nodePublicIp:port。这个remoteHost会在node向hub注册时发送给hub,告诉hub需要通过remoteHost来给node发送指令。可不指定-host,selenium自动绑定本地localIp。

如此,我们就可以在公网使用不同服务商提供的弹性主机,来进行自动化测试了。

js检测网页视频是否有流的两种方法

2019年10月12日 没有评论

当前web页面一般通过video标签来播放视频(点播或直播),我们在做音视频的自动化测试时,需要通过程序自动检测是否有视频流。

在具体的实践中,有两种方法可以实现视频流的检测:

  1. video标签的属性
    var video = document.getElementsByTagName('video');
    var isPalying = !(video.paused || video.ended || video.seeking || video.readyState < video.HAVE_FUTURE_DATA);
  2. 比较不同时刻的视频图像
    • 在页面上构造一个canvas,在其上绘制当前视频的图像
    • 通过getImageData获取图像的RGBA数据,简单计算(如求和)得到一个数值
    • 隔一段时间(如1秒)再依次获取若干图像的计算值
    • 通过比较这几个图像计算值是否相等,可以判断这段时间内是否有活动的视频流
  3. 可综合上述两种方法进行视频流的检测

方法2详细细节可加QQ群【KITE-WebRTC自动化测试】讨论。

shell脚本异步执行多任务并等待任务结束

2019年6月21日 没有评论

通常情况下,shell脚本中每条命令都是逐条按顺序执行的。如果想同时执行多条命令,并在所有命令完成后退出,这该如何实现?

我们可以在需要异步执行的命令后加&来实现后台运行,同时,使用wait来等待后台任务执行完成。

比如:

#!/bin/sh
i=0
while [ $i -lt 3 ];do
    long_time_task &
    let i++
done
wait
分类: Shell 标签: