CN108399120A - 异步消息监控方法和装置 - Google Patents
异步消息监控方法和装置 Download PDFInfo
- Publication number
- CN108399120A CN108399120A CN201710065908.4A CN201710065908A CN108399120A CN 108399120 A CN108399120 A CN 108399120A CN 201710065908 A CN201710065908 A CN 201710065908A CN 108399120 A CN108399120 A CN 108399120A
- Authority
- CN
- China
- Prior art keywords
- asynchronous message
- asynchronous
- readjustment
- mark object
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种异步消息监控方法和装置。所述方法包括:通过主线程获取异步消息,加入异步消息集合;创建异步调用线程,从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息;通过所述标识对象获取所述异步消息的指针地址,根据所述指针地址执行所述异步消息回调操作,记录所述异步消息回调操作的执行路径中的各个回调的函数地址的状态信息;通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象以获取所述异步消息的执行路径中回调的函数地址的状态信息。根据标识对象自动、快速准确的获取了异步消息执行路径中各函数地址的状态信息。
Description
技术领域
本发明涉及计算机应用领域,特别是涉及一种异步消息监控方法和装置。
背景技术
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。传统的接口测试采用异步测试时,需要采用时间等待来确定异步消息是否完结,而等待时间设置的不合适,容易出现错误,无法准确获取异步消息的执行的路径信息。
发明内容
本发明实施例提供一种异步消息监控方法和装置,可以快速准确的获取异步消息的执行的路径信息。
一种异步消息监控方法,包括:
通过主线程获取异步消息,将所述异步消息加入异步消息集合;
创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息;
通过所述标识对象获取所述异步消息的指针地址,根据所述指针地址执行所述异步消息回调操作,记录所述异步消息回调操作的执行路径中的各个回调的函数地址的状态信息;
通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象进行以获取所述异步消息的执行路径中回调的函数地址的状态信息。
一种异步消息监控装置,包括:
异步消息抓取模块,用于通过主线程获取异步消息,将所述异步消息加入异步消息集合;
标识对象注入模块,用于创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息;
回调执行模块,用于通过所述标识对象获取所述异步消息的指针地址,根据所述指针地址执行所述异步消息回调操作,记录所述异步消息回调操作的执行路径中的各个回调的函数地址的状态信息;
状态信息获取模块,用于通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象进行以获取所述异步消息的执行路径中回调的函数地址的状态信息。
上述异步消息监控方法和装置,通过主线程获取异步消息,并将异步消息加入异步消息集合中,并创建异步消息处理的异步调用线程,通过异步调用线程获取异步消息,并创建与异步消息对应的标识对象,将标识对象注入到异步消息,通过标识对象记录异步消息回调操作的执行路径中各个回调的函数地址的状态信息,将标识对象传递给主线程,由主线程根据标识对象获取该异步消息的执行路径中回调的函数地址的状态信息,从而自动、快速准确的获取了异步消息执行路径中各函数地址的状态信息。
附图说明
图1为一个实施例中计算机设备的内部结构示意图;
图2为一个实施例中异步消息监控方法的流程图;
图3为另一个实施例中异步消息监控方法的流程图;
图4为一个实施例中异步消息监控装置的结构框图;
图5为另一个实施例中异步消息监控装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一客户端称为第二客户端,且类似地,可将第二客户端称为第一客户端。第一客户端和第二客户端两者都是客户端,但其不是同一客户端。
图1为一个实施例中计算机设备的内部结构示意图。如图1所示,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统和异步消息监控装置,该异步消息监控装置用于实现适用于计算机设备的一种异步消息监控方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的内存储器为非易失性存储介质中的异步消息监控装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行一种异步消息监控方法。该计算机设备的网络接口用于据以与外部的计算机设备通过网络连接通信,比如接收计算机设备发送测试请求以及向计算机设备返回响应结果等。计算机设备可以用独立的计算机设备或者是多个计算机设备组成的计算机设备集群来实现。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图2为一个实施例中异步消息监控方法的流程图。如图2所示,一种异步消息监控方法,包括步骤202至步骤208。其中:
步骤202,通过主线程获取异步消息,将所述异步消息加入异步消息集合。
一个程序启动时就有一个进程被操作系统创建,同时一个线程也立即运行,该线程则为该程序的主线程。本实施例中,主线程可为接口测试程序的主线程。
主线程获取到接口消息后,判断该接口消息是否为异步消息,若是,则将异步消息加入异步消息集合,若否,则表示为同步消息,执行同步函数调用,测试结束。
异步消息是指通过异步调用的消息,即会重新起一个线程或进程执行函数调用的消息。异步调用是指两个通信应用之间可以不用同时在线等待,任何一方只需各自处理自己的业务,比如发送方发送消息以后不用等接收方的响应,可以接着处理其他的任务。
异步消息集合中记录了异步消息。异步消息集合可以以堆栈或队列方式存在。
同步消息是指通过同步方式实现的消息,即一个线程或进程中顺序调用的消息。同步方式是指两个通信应用服务之间必须要进行同步,两个服务之间必须都是正常运行的。发送程序和接收程序都必须一直处于运行状态,并且随时做好相互通信的准备。发送程序首先向接收程序发起一个请求,称之为发送消息,发送程序紧接着就会堵塞当前自身的进程,不与其他应用进行任何的通信以及交互,等待接收程序的响应,待发送消息得到接收程序的返回消息之后会继续向下运行,进行下一步的业务处理。
步骤204,创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息。
本实施例中,每次创建一个异步调用线程从异步消息集合中获取一个异步消息。然后创建一个与该异步消息对应的标识对象,并将该标识对象注入到该异步消息中。该标识对象是用于唯一表示异步消息的。该标识对象具有轮询地址的功能,能够轮询被注入的异步消息中的回调的函数地址的状态信息。
步骤206,通过所述标识对象获取所述异步消息的指针地址,根据所述指针地址执行所述异步消息回调操作,记录所述异步消息回调操作的执行路径中的各个回调的函数地址的状态信息。
本实施例中,异步消息的指针地址是指IMP地址(implementation),是实现object-c方法的代码块地址,可以像C函数一样直接调用。通常情况下通过[objectmethod:parameter]或objc_msgSend()的方式向对象发送消息,然后objective-C运行时寻找匹配此消息的IMP,然后调用它。[object method:parameter]是Object-C语言消息传递调用的方法。objc_msgSend()是IOS系统底层提供的实现消息传递的接口。C函数是一种面向过程的开发语言函数。object-c是一套面向对象的语言,具备面向对象的语言特性(封装、继承、多态)。同时它也具备静态语言的特性,又有动态特性(动态类型、动态绑定和动态加载)。
回调操作是指一个函数调用另一个函数。例如函数A调用函数B,是一个回调。回调的函数地址的状态信息可为处于调用状态或处于释放销毁状态。
回调的函数地址是指通过函数指针调用的函数的地址。
在一个实施例中,还可获取异步消息回调操作的执行路径中的路径信息和回调信息。路径信息是指调用路径。例如有4个方法A、B、C、D,通过异步方式调用顺序是A调用B,B调用C,C调用D,则路径信息是A->B->C->D。回调信息是指A调用B,即一个回调关系。
步骤208,通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象以获取所述异步消息的执行路径中回调的函数地址的状态信息。
在一个实施例中,异步调用线程将标识对象传递给主线程,主线程对标识对象进行分析处理得到异步消息的执行路径中的回调的函数地址的状态信息。销毁异步调用线程,节省线程资源,且方便区分多个函数地址的状态信息。
上述异步消息监控方法,通过主线程获取异步消息,并将异步消息加入异步消息集合中,并创建异步消息处理的异步调用线程,通过异步调用线程获取异步消息,并创建与异步消息对应的标识对象,将标识对象注入到异步消息,通过标识对象记录异步消息回调操作的执行路径中各个回调的函数地址的状态信息,将标识对象传递给主线程,由主线程根据标识对象获取该异步消息的执行路径中回调的函数地址的状态信息,从而自动、快速准确的获取了异步消息执行路径中各函数地址的状态信息。
在一个实施例中,所述记录所述异步消息回调操作的执行路径中的各个回调的函数地址的状态信息,包括:通过所述标识对象轮询所述异步消息的回调的函数地址,检测所述回调的函数地址是否被释放;
若所述回调的函数地址未被释放,则通过所述标识对象获取并保存执行路径中回调的函数地址的状态信息,并轮询所述回调的函数地址的下一级的回调的函数地址;
若所述回调的函数地址被释放,则返回到所述回调的函数地址的上一级的回调的函数地址,判断回调操作是否结束;
若所述回调操作结束,则通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象以获取所述异步消息的执行路径中各个回调的函数地址的状态信息。
本实施例中,标识对象可为一个指针,可时刻记录函数地址的状态信息、路径信息和回调信息等。回调的函数地址的下一级的回调的函数地址,例如路径信息A->B->C->D中,C是B的下一级的回调的函数地址,A是B的上一级的回调的函数地址。通过判断回调的函数地址处于调用或释放状态的不同情况,记录函数地址的状态信息,并采用对应的轮询策略,即函数地址未被释放,则轮询下一级的函数地址,若被释放,则轮询上一级的函数地址,直到所有回调的函数地址都销毁为止,从而准确的获取各个回调的函数地址的状态信息。
在一个实施例中,在通过所述标识对象获取并保存执行路径的状态信息之后,上述异步消息监控方法还包括:获取所述异步消息的时间戳;根据所述时间戳判断是否超时,若未超时,则执行所述轮询所述回调的函数地址的下一级的回调的函数地址的步骤,若超时,则执行所述通过所述标识对象获取所述异步消息的指针地址,执行所述异步消息回调的步骤。
异步消息的时间戳是指预先设置对异步消息所允许的响应时间,如1分钟等。获取异步消息的生命周期,将异步消息的生命周期与异步消息的时间戳进行比较,若生命周期长于时间戳,则认为消息传递超时。异步消息的生命周期是指异步消息从获取函数地址,实例化开始到函数地址被销毁的阶段的时长。
在一个实施例中,上述异步消息监控方法还包括:若所述回调操作未结束,则继续执行通过所述标识对象轮询所述异步消息的回调的函数地址,检测所述回调的函数地址是否被释放的步骤。
在一个实施例中,上述异步消息监控方法还包括:判断所述异步消息集合是否为空,若是,则结束,若否,则继续执行创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息的步骤。
异步消息集合为空是指异步消息集合中的异步消息均被取出执行。
在一个实施例中,将所述标识对象注入到所述异步消息,包括:通过挂钩函数建立所述标识对象与所述异步消息的映射关系。
挂钩函数(hook)是消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。通过挂钩函数将标识对象与异步消息建立映射关系,实现了将标识对象注入到异步消息中,方便通过标识对象获取异步消息中各个回调的函数地址的状态信息。
图3为另一个实施例中异步消息监控方法的流程图。如图3所示,一种异步消息监控方法,包括:
步骤302,接口的参数初始化。
本实施例中,在接口测试前需要配置接口测试驱动,通过接口测试驱动进行接口测试。接口的参数初始化是指对接口的参数进行初始配置。
接口的参数是动态的,比如(void)exzample:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context这个接口,参数就是keyPath,object,change,context。
步骤304,获取接口消息。
接口测试会创建一个主线程,通过主线程获取接口消息。
步骤306,判断接口消息是否为异步消息,若是,执行步骤312,若否,执行步骤308。
步骤308,表示为同步消息,执行同步函数调用,然后执行步骤310。
步骤310,测试结束。
步骤312,将异步消息加入异步消息队列。
判断该接口消息是否为异步消息,若是,则将异步消息加入异步消息队列,若否,则执行同步函数调用,测试结束。异步消息是指通过异步调用的消息,即会重新起一个线程或进程执行函数调用的消息。同步消息是指通过同步方式实现的消息,即一个线程或进程中顺序调用的消息。
步骤314,创建异步消息处理的异步调用线程。
步骤316,通过异步调用线程从异步消息队列中获取异步消息。
步骤318,创建与所述异步消息对应的标识对象。
步骤320,将该标识对象注入到异步消息中。
通过挂钩函数建立所述标识对象与所述异步消息的映射关系。
步骤322,通过标识对象获取所述异步消息的指针地址,执行所述异步消息回调操作。
通过标识对象获取所述异步消息的指针地址,根据所述指针地址执行所述异步消息回调操作。
步骤324,通过标识对象轮询异步消息中的回调的函数地址。
步骤326,判断回调的函数地址是否释放,若是,执行步骤340,若否,执行步骤328。
步骤328,通过标识对象记录并保存执行路径中的执行数据。
本实施例中,执行数据可包括回调的函数地址的状态信息、路径信息和回调信息。回调的函数地址是指通过函数指针调用的函数的地址。路径信息是指调用路径。回调的函数地址的状态信息可包括调用状态或释放销毁状态。回调信息是指回调关系。执行数据还可包括异步消息名称、异步消息的回调的函数地址。
步骤330,通过标识对象计算异步消息的时间戳。
异步消息的时间戳是指预先设置对异步消息所允许的响应时间,如1分钟等。获取异步消息的生命周期,将异步消息的生命周期与异步消息的时间戳进行比较,若生命周期长于时间戳,则认为消息传递超时。异步消息的生命周期是指异步消息从获取函数地址,实例化开始到函数地址被销毁的阶段的时长。
步骤332,根据时间戳判断是否超时,若否,执行步骤334,若是,执行步骤322。
步骤334,通过标识对象继续轮询下一级的回调的函数地址,执行步骤324。
步骤340,回调结束。
步骤342,通过标识对象轮询上一级的回调的函数地址。
步骤344,判断回调操作是否结束,若是,执行步骤346,若否,执行步骤324。
步骤346,通过异步调用线程将标识对象传递给主线程。
步骤348,销毁异步调用线程。
步骤350,分析标识对象。
读取标识对象可得到异步消息的执行路径中的执行数据。
步骤352,获取异步消息的执行路径中的执行数据。
步骤354,判断异步消息队列是否为空,若是,则执行步骤310,若否,执行步骤314。
上述异步消息监控方法,通过主线程获取异步消息,并将异步消息加入异步消息集合中,并创建异步消息处理的异步调用线程,通过异步调用线程获取异步消息,并创建与异步消息对应的标识对象,将标识对象注入到异步消息,通过标识对象记录异步消息回调操作的执行路径中各个回调的函数地址的状态信息,将标识对象传递给主线程,由主线程根据标识对象获取该异步消息的执行路径中回调的函数地址的状态信息,从而自动、快速准确的获取了异步消息执行路径中各函数地址的状态信息;每次将标识对象传递给主线程后,销毁异步调用线程,可方便通过标识对象区分异步消息,以及区分函数地址的状态。
图4为一个实施例中异步消息监控装置的结构框图。如图4所示,一种异步消息监控装置400,包括异步消息抓取模块402、标识对象注入模块404、回调执行模块406和状态信息获取模块408。其中:
异步消息抓取模块402用于通过主线程获取异步消息,将所述异步消息加入异步消息集合。
标识对象注入模块404用于创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息。
回调执行模块406用于通过所述标识对象获取所述异步消息的指针地址,执行所述异步消息回调操作,记录所述异步消息回调操作的执行路径中的各个回调的函数地址的状态信息。
状态信息获取模块408用于通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象以获取所述异步消息的执行路径中各个回调的函数地址的状态信息。
上述异步消息监控装置,通过主线程获取异步消息,并将异步消息加入异步消息集合中,并创建异步消息处理的异步调用线程,通过异步调用线程获取异步消息,并创建与异步消息对应的标识对象,将标识对象注入到异步消息,通过标识对象记录异步消息回调操作的执行路径中各个回调的函数地址的状态信息,将标识对象传递给主线程,由主线程根据标识对象获取该异步消息的执行路径中回调的函数地址的状态信息,从而自动、快速准确的获取了异步消息执行路径中各函数地址的状态信息。
在一个实施例中,回调执行模块406还用于通过所述标识对象轮询所述异步消息的回调的函数地址,检测所述回调的函数地址是否被释放;
若所述回调的函数地址未被释放,则通过所述标识对象获取并保存执行路径中回调的函数地址的状态信息,并轮询所述回调的函数地址的下一级的回调的函数地址;
若所述回调的函数地址被释放,则返回到所述回调的函数地址的上一级的回调的函数地址,判断回调操作是否结束;以及
若所述回调操作结束,则所述状态信息获取模块通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象以获取所述异步消息的执行路径的状态信息。
在一个实施例中,所述回调执行模块406还用于在通过所述标识对象获取并保存执行路径的状态信息之后,获取所述异步消息的时间戳;根据所述时间戳判断是否超时,若未超时,则轮询所述回调的函数地址的下一级的回调的函数地址,若超时,则通过所述标识对象获取所述异步消息的指针地址,执行所述异步消息回调。
在一个实施例中,所述回调执行模块406还用于若所述回调操作未结束,则继续通过所述标识对象轮询所述异步消息的回调的函数地址,检测所述回调的函数地址是否被释放。
图5为另一个实施例中异步消息监控装置的结构框图。如图5所示,一种异步消息监控装置400,除了包括异步消息抓取模块402、标识对象注入模块404、回调执行模块406和状态信息获取模块408,还包括判断模块410。其中
判断模块410用于判断所述异步消息集合是否为空,若是,则结束,若否,则所述标识对象注入模块404还用于继续创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息。
在一个实施例中,所述标识对象注入模块404还用于通过挂钩函数建立所述标识对象与所述异步消息的映射关系。
在一个实施例中,上述异步消息监控装置还包括接口初始化模块、接口消息获取模块、消息类型判断模块、同步执行模块。
接口初始化模块用于将接口的参数初始化。接口消息获取模块用于获取接口消息。消息类型判断模块用于判断接口消息是否为异步消息,若是,则异步消息抓取模块402用于通过主线程获取异步消息,将所述异步消息加入异步消息队列,若否,则表示为同步消息,同步执行模块用于执行同步函数调用。标识对象注入模块404创建异步消息处理的异步调用线程,通过异步调用线程从异步消息队列中获取异步消息,创建与所述异步消息对应的标识对象,将该标识对象注入到异步消息中。回调执行模块406通过标识对象获取所述异步消息的指针地址,执行所述异步消息回调操作,通过标识对象轮询异步消息中的回调的函数地址,判断回调的函数地址是否释放,若否,通过标识对象记录并保存执行路径中的执行数据,通过标识对象计算异步消息的时间戳,根据时间戳判断是否超时,若是,通过标识对象获取所述异步消息的指针地址,执行所述异步消息回调操作,若否,通过标识对象继续轮询下一级的回调的函数地址。判断回调的函数地址已被释放,则回调结束,通过标识对象轮询上一级的回调的函数地址,判断回调操作是否结束,若是,则状态信息获取模块408通过异步调用线程将标识对象传递给主线程,销毁异步调用线程,分析标识对象,获取异步消息的执行路径中的执行数据;判断模块410判断异步消息队列是否为空,若是测试结束,若否,则标识对象注入模块404创建异步消息处理的异步调用线程,通过异步调用线程从异步消息队列中获取异步消息,创建与所述异步消息对应的标识对象,将该标识对象注入到异步消息中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种异步消息监控方法,包括:
通过主线程获取异步消息,将所述异步消息加入异步消息集合;
创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息;
通过所述标识对象获取所述异步消息的指针地址,根据所述指针地址执行所述异步消息回调操作,记录所述异步消息回调操作的执行路径中的各个回调的函数地址的状态信息;
通过所述异步调用线程将所述标识对象传递到所述主线程,并销毁所述异步调用线程,读取所述标识对象以获取所述异步消息的执行路径中回调的函数地址的状态信息。
2.根据权利要求1所述的方法,其特征在于,所述记录所述异步消息回调操作的执行路径中的各个回调的函数地址的状态信息,包括:
通过所述标识对象轮询所述异步消息的回调的函数地址,检测所述回调的函数地址是否被释放;
若所述回调的函数地址未被释放,则通过所述标识对象获取并保存执行路径中回调的函数地址的状态信息,并轮询所述回调的函数地址的下一级的回调的函数地址;
若所述回调的函数地址被释放,则返回到所述回调的函数地址的上一级的回调的函数地址,判断回调操作是否结束;
若所述回调操作结束,则通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象以获取所述异步消息的执行路径中回调的函数地址的状态信息。
3.根据权利要求2所述的方法,其特征在于,在通过所述标识对象获取并保存执行路径的状态信息之后,所述方法还包括:
获取所述异步消息的时间戳;
根据所述时间戳判断是否超时,若未超时,则执行所述轮询所述回调的函数地址的下一级的回调的函数地址的步骤,若超时,则执行所述通过所述标识对象获取所述异步消息的指针地址,执行所述异步消息回调的步骤。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述回调操作未结束,则继续执行通过所述标识对象轮询所述异步消息的回调的函数地址,检测所述回调的函数地址是否被释放的步骤。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述异步消息集合是否为空,若是,则结束,若否,则继续执行创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息的步骤。
6.根据权利要求1所述的方法,其特征在于,所述将所述标识对象注入到所述异步消息,包括:
通过挂钩函数建立所述标识对象与所述异步消息的映射关系。
7.一种异步消息监控装置,其特征在于,包括:
异步消息抓取模块,用于通过主线程获取异步消息,将所述异步消息加入异步消息集合;
标识对象注入模块,用于创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息;
回调执行模块,用于通过所述标识对象获取所述异步消息的指针地址,根据所述指针地址执行所述异步消息回调操作,记录所述异步消息回调操作的执行路径中的各个回调的函数地址的状态信息;
状态信息获取模块,用于通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象以获取所述异步消息的执行路径中回调的函数地址的状态信息。
8.根据权利要求7所述的装置,其特征在于,所述回调执行模块还用于通过所述标识对象轮询所述异步消息的回调的函数地址,检测所述回调的函数地址是否被释放;
若所述回调的函数地址未被释放,则通过所述标识对象获取并保存执行路径中回调的函数地址的状态信息,并轮询所述回调的函数地址的下一级的回调的函数地址;
若所述回调的函数地址被释放,则返回到所述回调的函数地址的上一级的回调的函数地址,判断回调操作是否结束;以及
若所述回调操作结束,则所述状态信息获取模块通过所述异步调用线程将所述标识对象传递所述主线程,并销毁所述异步调用线程,读取所述标识对象以获取所述异步消息的执行路径中回调的函数地址的状态信息。
9.根据权利要求8所述的装置,其特征在于,所述回调执行模块还用于在通过所述标识对象获取并保存执行路径的状态信息之后,获取所述异步消息的时间戳;根据所述时间戳判断是否超时,若未超时,则轮询所述回调的函数地址的下一级的回调的函数地址,若超时,则通过所述标识对象获取所述异步消息的指针地址,执行所述异步消息回调。
10.根据权利要求8所述的装置,其特征在于,所述回调执行模块还用于若所述回调操作未结束,则继续通过所述标识对象轮询所述异步消息的回调的函数地址,检测所述回调的函数地址是否被释放。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
判断模块,用于判断所述异步消息集合是否为空,若是,则结束,若否,则所述标识对象注入模块还用于继续创建异步消息处理的异步调用线程,通过所述异步调用线程从所述异步消息集合中获取异步消息,创建与所述异步消息对应的标识对象,并将所述标识对象注入到所述异步消息。
12.根据权利要求7所述的装置,其特征在于,所述标识对象注入模块还用于通过挂钩函数建立所述标识对象与所述异步消息的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710065908.4A CN108399120B (zh) | 2017-02-06 | 2017-02-06 | 异步消息监控方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710065908.4A CN108399120B (zh) | 2017-02-06 | 2017-02-06 | 异步消息监控方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108399120A true CN108399120A (zh) | 2018-08-14 |
CN108399120B CN108399120B (zh) | 2021-01-29 |
Family
ID=63093971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710065908.4A Active CN108399120B (zh) | 2017-02-06 | 2017-02-06 | 异步消息监控方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108399120B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408251A (zh) * | 2018-09-28 | 2019-03-01 | 北京龙拳风暴科技有限公司 | 消息发送方法与装置、消息接收处理方法与装置 |
CN111222014A (zh) * | 2019-12-30 | 2020-06-02 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、电子设备及存储介质 |
CN111385255A (zh) * | 2018-12-28 | 2020-07-07 | 北京金山云网络技术有限公司 | 一种异步调用实现方法、装置、服务器及服务器集群 |
WO2020140680A1 (zh) * | 2019-01-02 | 2020-07-09 | 深圳壹账通智能科技有限公司 | 异步回调方法、装置、计算机设备和存储介质 |
CN113687879A (zh) * | 2021-07-22 | 2021-11-23 | 成都鲁易科技有限公司 | 跨平台框架与平台交互库的交互方法及装置 |
CN115033222A (zh) * | 2022-06-22 | 2022-09-09 | 吉林大学 | 线程管理方法、装置、电子设备、计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1552029A (zh) * | 2001-07-02 | 2004-12-01 | Bea系统公司 | 用于异步Web服务的Web服务开发平台 |
CN101262352A (zh) * | 2008-03-04 | 2008-09-10 | 浙江大学 | 一体化安全管理中数据统一加速处理方法 |
CN101572632A (zh) * | 2009-03-04 | 2009-11-04 | 公安部第三研究所 | 信息安全管理系统管理端接口的测试方法 |
US20110145653A1 (en) * | 2008-08-15 | 2011-06-16 | Verum Holding B.V. | Method and system for testing complex machine control software |
US8127277B2 (en) * | 2007-05-21 | 2012-02-28 | International Business Machines Corporation | Framework for conditionally executing code in an application using conditions in the framework and in the application |
CN102402481A (zh) * | 2010-10-06 | 2012-04-04 | 微软公司 | 异步程序代码的模糊测试 |
CN102841803A (zh) * | 2011-06-24 | 2012-12-26 | 中兴通讯股份有限公司 | 一种异步调用java线程中本地代码的方法及装置 |
CN104750548A (zh) * | 2015-04-01 | 2015-07-01 | 贵州电网公司信息通信分公司 | 基于混合模式跨平台应用的异步请求方法 |
CN106155882A (zh) * | 2015-03-27 | 2016-11-23 | 中国科学院信息工程研究所 | 一种Android软件动态行为分析中的路径感知方法 |
-
2017
- 2017-02-06 CN CN201710065908.4A patent/CN108399120B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1552029A (zh) * | 2001-07-02 | 2004-12-01 | Bea系统公司 | 用于异步Web服务的Web服务开发平台 |
US8127277B2 (en) * | 2007-05-21 | 2012-02-28 | International Business Machines Corporation | Framework for conditionally executing code in an application using conditions in the framework and in the application |
CN101262352A (zh) * | 2008-03-04 | 2008-09-10 | 浙江大学 | 一体化安全管理中数据统一加速处理方法 |
US20110145653A1 (en) * | 2008-08-15 | 2011-06-16 | Verum Holding B.V. | Method and system for testing complex machine control software |
CN101572632A (zh) * | 2009-03-04 | 2009-11-04 | 公安部第三研究所 | 信息安全管理系统管理端接口的测试方法 |
CN102402481A (zh) * | 2010-10-06 | 2012-04-04 | 微软公司 | 异步程序代码的模糊测试 |
CN102841803A (zh) * | 2011-06-24 | 2012-12-26 | 中兴通讯股份有限公司 | 一种异步调用java线程中本地代码的方法及装置 |
CN106155882A (zh) * | 2015-03-27 | 2016-11-23 | 中国科学院信息工程研究所 | 一种Android软件动态行为分析中的路径感知方法 |
CN104750548A (zh) * | 2015-04-01 | 2015-07-01 | 贵州电网公司信息通信分公司 | 基于混合模式跨平台应用的异步请求方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408251A (zh) * | 2018-09-28 | 2019-03-01 | 北京龙拳风暴科技有限公司 | 消息发送方法与装置、消息接收处理方法与装置 |
CN109408251B (zh) * | 2018-09-28 | 2020-11-03 | 北京龙拳风暴科技有限公司 | 消息发送方法与装置、消息接收处理方法与装置 |
CN111385255A (zh) * | 2018-12-28 | 2020-07-07 | 北京金山云网络技术有限公司 | 一种异步调用实现方法、装置、服务器及服务器集群 |
CN111385255B (zh) * | 2018-12-28 | 2022-05-06 | 北京金山云网络技术有限公司 | 一种异步调用实现方法、装置、服务器及服务器集群 |
WO2020140680A1 (zh) * | 2019-01-02 | 2020-07-09 | 深圳壹账通智能科技有限公司 | 异步回调方法、装置、计算机设备和存储介质 |
CN111222014A (zh) * | 2019-12-30 | 2020-06-02 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、电子设备及存储介质 |
CN111222014B (zh) * | 2019-12-30 | 2024-03-26 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、电子设备及存储介质 |
CN113687879A (zh) * | 2021-07-22 | 2021-11-23 | 成都鲁易科技有限公司 | 跨平台框架与平台交互库的交互方法及装置 |
CN113687879B (zh) * | 2021-07-22 | 2023-05-05 | 成都鲁易科技有限公司 | 跨平台框架与平台交互库的交互方法及装置 |
CN115033222A (zh) * | 2022-06-22 | 2022-09-09 | 吉林大学 | 线程管理方法、装置、电子设备、计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108399120B (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399120A (zh) | 异步消息监控方法和装置 | |
US11940965B2 (en) | Data migration method and apparatus | |
CN105207832B (zh) | 一种服务器压力测试方法和装置 | |
CN110287696B (zh) | 一种反弹shell进程的检测方法、装置和设备 | |
CN110688280B (zh) | 一种告警事件的管理系统、方法、设备和存储介质 | |
CN110099398B (zh) | 网络故障信息收集方法、网络系统、存储介质及网络设备 | |
CN111106983B (zh) | 一种检测网络连通性的方法及装置 | |
TW200910836A (en) | Monitoring of computer network resources having service level objectives | |
JPH0644239B2 (ja) | コンピュ−タ テスト装置及び方法 | |
CN104809046B (zh) | 一种应用程序联网控制方法和应用程序联网控制装置 | |
CN109634878A (zh) | 监控方法、监控装置、服务器、终端和可读存储介质 | |
CN110806965A (zh) | 自动测试方法、装置、设备和介质 | |
CN112363980B (zh) | 一种分布式系统的数据处理方法及装置 | |
US7627785B1 (en) | Capturing machine state of unstable Java program | |
CN106230658B (zh) | 一种监控网络设备的方法和装置 | |
CN107729207A (zh) | 一种应用程序主线程的监控方法及装置 | |
CN110022332B (zh) | 一种超文本传输安全协议代理方法、装置、设备及介质 | |
CN109981386B (zh) | 网络质量的测试方法、测试服务器和测试系统 | |
CN108076070B (zh) | 一种fasp协议阻断方法、装置及分析系统 | |
CN106341342A (zh) | 维持通信连接的方法、装置、终端及服务器 | |
CN107483294B (zh) | 监控网络请求的方法及装置 | |
CN110209564A (zh) | 打印机日志的获取方法、打印机、服务器和打印机系统 | |
CN109284174A (zh) | 一种多业务进程性能统计方法、装置和系统 | |
CN109698774A (zh) | 用于监测设备工作状态的方法及装置 | |
CN115276844A (zh) | 通信模组的测试方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221122 Address after: 1402, Floor 14, Block A, Haina Baichuan Headquarters Building, No. 6, Baoxing Road, Haibin Community, Xin'an Street, Bao'an District, Shenzhen, Guangdong 518100 Patentee after: Shenzhen Yayue Technology Co.,Ltd. Address before: 518000 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 Floors Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |