下载配置文件的内容参见以下代码:
清单 1.下载配置文件的代码
读取下载配置文件的代码如下:
清单 2.读取下载配置文件的代码
from xml.dom.minidom import parse, parseString from MyDownloadTask import MyDownloadTask def readFromProperty(xmlfile): tasklist = [] dom = parse(xmlfile) for node in dom.getElementsByTagName('item'): name = node.getAttribute('name') weekday = node.getAttribute('weekday') time = node.getAttribute('time') source = node.getAttribute('source') target = node.getAttribute('target') type = node.getAttribute('type') // 定义一个下载任务 task = MyDownloadTask() task.create(name, weekday, time, source, target, type) // 加入下载任务列表 tasklist.append(task) return tasklist |
实现具体的下载逻辑如下:
清单 3.实现下载的代码
class MyDownloadTask(object): …… // 定义一些变量 def create(self, name, weekday, time, source, target, type): self.name = name self.weekday = int(weekday) self.source = source self.target = target index = time.find(":") self.hour = int(time[0:index]) self.minute = int(time[index+1:]) self.type = type def run() // 使用用户名和密码通过防火墙 password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm() password_mgr.add_password(None, self.source, username, password) handler = urllib.request.HTTPBasicAuthHandler(password_mgr) opener = urllib.request.build_opener(handler) urllib.request.install_opener (opener) // 从站点下载文件 content = urllib.request.urlopen(self. source).read() f=open(self.target + self.buildno,"wb") f.write(content) f.close() |
此例指出目前有一项下载任务,下载类型是源代码,链接为 https://sample.sourcecode.com, 将其保持到 C 盘 sourcetar 文件夹下,时间为每天早上 7 点钟。(-1 代表任意时间)。项目组可以根据需要增加下载项。比如,我们项目组由于资源文件经常要修改,所以需要每天上午和下午都要检测是否有新的代码包,所以配置了两个下载任务。上午的时间一般都在 7 点,这样可以在每位同事上班打开电脑的那个时刻就获得大洋彼岸美国项目组下班时候的最新进展。
正如前文所述,该测试系统中我们提供一个 Web 管理站点,用户可以根据项目的需要配置下载任务,不必麻烦系统管理员来修改下载配置文件。该模块使用 Flex 和 Java 技术实现(参见图 3)。用户可以通过它了解当前系统已有的下载任务。此外,用户也可以通过管理站点创建,修改和删除下载任务。这些更改最终都会被保存到 XML 配置文件中。
图 3. 下载管理界面