第5章6节《MonkeyRunner源码剖析》Monkey原理分析

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。

事件源代表要注入系统的命令事件数据是从哪里过来的。这一小节我们不会对事件源的实现进行深入的分析,因为下一章会做这个事情。这里大家对事件源有个基本概念就足够了。

对Monkey来说,事件的来源可以有多个地方,比如我们用它来做随机压力测试的时候由Monkey自身生成的各种随机事件,又或者作为MonkeyRunner测试框架一部分时从USB/TCP过来的命令,这里我们对USB/TCP过来的事件来源统称为网络事件源。不同的事件源会有不同的类来做相应的实现:

前面的三个事件源是跟我们的MonkeyRunner框架相关的,下一章我们会针对其进行详细分析,在这里我们只需要知道这些事件源代表了事件的不同的来源,然后主要就是处理下面两个事情就好了:

从指定的源获取事件

把命令翻译成monkey事件然后放到命令队列中,事件源的所有事件都是通过命令队列来管理起来的,有事件产生的时候就会往队列里面放,处理完事件后就会把该事件从命令队列中去掉

那么我们继续往下分析Monkey类的run方法,去了解下Monkey在启动的过程中是怎么去根据不同的情况去初始化不同的事件源的。

代码5-6-1 Monkey – run 初始化事件源

425/** 426* Run the command! 427* 428* @param args The command-line arguments 429* @return Returns a posix-style result code. 0 for no error. 430*/ (String[] args) {…(mServerPort != -1) { 515try { 516mEventSource = new MonkeySourceNetwork(mServerPort); 517} catch (IOException e) { 518System.out.println(“Error binding to network socket.”); 519return -5; 520}…}

run方法前面省略的一大段代码的作用简要来说就是根据不同的情况来初始化不同的事件源,比如如果在启动Monkey的时候指定了” -f scriptfile”且指定了一个脚本文件的话,那么就初始化MonkeySourceScript事件源。但这些在这里其实都不重要,因为它们跟Monkey作为MonkeyRunner的服务没有很大关系,MonkeyRunner启动Monkey使用的命令是”monkey -port 12345”。 所以这里真正的重点是第514-516行的代码,如果启动Monkey的时候指定了”-port”这个参数的话,初始化的就是MonkeySourceNetwork这个事件源,专门用来从网络上获取事件。

也许大家在这里会有疑问,网络来的事件源不是还有MonkeySourceNetworkViews和MonkeySourceNetworkVars吗?怎么这里没有看到呢?其实这两个类提供的主要是静态方法,没有必要初始化,当MonkeySourceNetwork需要用到它们的时候会在内部调用它们的方法。

——— 未完待续———

作者:天地会珠海分舵 微信公众号:TechGoGoGo 微博: CSDN:

,家!甜蜜的家!天下最美好的莫过於家

第5章6节《MonkeyRunner源码剖析》Monkey原理分析

相关文章:

你感兴趣的文章:

标签云: