MyException - 我的异常网
当前位置:我的异常网» 软件架构设计 » 54. 怎么在测试中触发服务器上运行的代理

54. 怎么在测试中触发服务器上运行的代理

www.MyException.Cn  网友分享于:2015-08-26  浏览:3次
54. 如何在测试中触发服务器上运行的代理
Lotus Notes应用程序中的代理按照运行的场所可以分为两类,第一类在客户端上运行,第二类在应用程序所在的服务器上运行。测试代理时,前者可以很简单地通过操作、按钮或从Designer里的代理列表触发运行;后者则没有这样方便。具体地,在服务器上运行的代理又可以分为两类:一类,也是最主要的,是定时运行的;另一类则是由客户段代码调用在服务器上运行的(以下简称被调用的代理)。

在测试中要触发这些在服务器上运行的代理,根据情况有几种方法可以选择:

1.      对于定时代理,最易想到的方法就是修改代理的时程设置,改为服务器当前时间的两三分钟后。这个方法比较费神麻烦,如果多测试几次,等待的时间也不少。而且测试完成后还要记得把时程设置恢复原样。

2.      对于被调用的代理,当然也可以和在正式运行时一样,用代码来触发运行。

3.      如果包含代理的数据库所在的服务器开启了HTTP服务,则一个很便捷的方法就是通过Web调用,比如:http://DominoServer/path/test.nsf/agReminder?RunAgent

4.      写通用的代码来调用。既然在实际开发中,有些代理因为某种需要须在服务器上运行并由客户端上运行的代码调用,那么为了测试我们就可以写一段通用的代码来调用所有在服务器上运行的代理。这段代码可以置于一个工具数据库中,本身也以一个代理的形式被调用。运行后开发人员可以选择要测试的代理所在的数据库,然后程序从其中所有的代理里挑出可以在服务器上测试运行的那些,把它们的名称显示在一个列表里供开发人员选择,最后调用被选中的代理在服务器上运行。


运行工具代理


选择应用程序


选择要运行的代理


运行完成

下面就是调用代理运行的代码:

Option Public
Option Declare
Use "Commons"
Sub Initialize
	Call RunAgentOnServer()
End Sub
%REM
	Function RunAgentOnServer
	Description: Run a selected agent on the server containing the agent.
%END REM
Public Function RunAgentOnServer()
	On Error GoTo ErrHandler
	Dim s As New NotesSession
	Dim ws As New NotesUIWorkspace
	Dim dbinfo As Variant
	'PROMPT_CHOOSEDATABASE=13
	dbinfo=ws.Prompt(13, "Please select the database containing agents.", "Select Database")
	If IsEmpty(dbinfo) Then Exit Function
	Dim db As NotesDatabase
	Set db=s.GetDatabase(dbinfo(0), dbinfo(1))
	If Not db.IsOpen Then
		Print "Database " & dbinfo(2) & " cannot be opened."
		Exit Function
	End If
	Dim agents() As String, i As Integer, agName As String 
	'only show the scheduled agents
	i=0
	ForAll ag In db.Agents
		'sometimes manual agents need to be run on server
		'If Not ag.ServerName="" Then
		'End If
		
		Select Case ag.Target
			Case TARGET_ALL_DOCS_IN_VIEW, TARGET_SELECTED_DOCS, TARGET_UNREAD_DOCS_IN_VIEW
			Case Else  
				ReDim Preserve agents(i)
				agName=ag.Name
			If ag.Trigger=TRIGGER_SCHEDULED Then
					agName="(Scheduled) " & agName
				End If
				agents(i)=agName
				i=i+1			
		End Select
	End ForAll
	Dim agentInfo As Variant
	agentInfo=ws.Prompt(PROMPT_OKCANCELLIST, "Select Agent", "Please select the agent to run on server.", "", agents)
	If IsEmpty(agentInfo) Then Exit Function
	Dim agent As NotesAgent
	Set agent=db.GetAgent(agentInfo)
	Call agent.RunOnServer()
	Print "Agent " & agentInfo & " ran successfully."
	Exit Function
ErrHandler:
	MsgBox GetErrorMsg()
	Exit Function
End Function
5.      保存后运行。最后说的这个方法是基于Domino服务器对定时代理的一个规则:每当一个定时代理被新建或修改后,Domino为了防止当前时间已超过代理时程所预定的第一次运行时间从而错过了一次运行,执行一次代理。因此实际上,服务器上数据库里的某个定时代理在被修改后,无论是直接地还是籍替换设计,很快都会被运行一次。所以如果要测试某个代理,只需变动一下代码再保存就可以。但是这个特性往往会导致代理不必要的运行,所以IBM从R7新增了一个Notes.ini参数:Amgr_SkipPriorDailyScheduledRuns,只要将它设置为1,定时代理在保存后就不会立即执行。这样一来,“保存后运行”这个测试方法就无效了,还是根据情况选择前面四种方法之一合宜。

文章评论

如何成为一名黑客
如何成为一名黑客
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
 程序员的样子
程序员的样子
程序员的鄙视链
程序员的鄙视链
为什么程序员都是夜猫子
为什么程序员都是夜猫子
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
漫画:程序员的工作
漫画:程序员的工作
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
我的丈夫是个程序员
我的丈夫是个程序员
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
10个调试和排错的小建议
10个调试和排错的小建议
程序员都该阅读的书
程序员都该阅读的书
程序员应该关注的一些事儿
程序员应该关注的一些事儿
鲜为人知的编程真相
鲜为人知的编程真相
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Java程序员必看电影
Java程序员必看电影
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员必看的十大电影
程序员必看的十大电影
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
编程语言是女人
编程语言是女人
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
每天工作4小时的程序员
每天工作4小时的程序员
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
那些争议最大的编程观点
那些争议最大的编程观点
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有