首页 > 代码库 > Cts框架解析(4)
Cts框架解析(4)
Debug
debug的入口在CtsConsole类,所以我们把第一个断点打在249行:
Console console = new CtsConsole();
按F6再按F5进入到Console.startConsole方法中。
按F5进入GlobalConfiguration.createGlobalConfiguration方法中。
该方法内主要是读取全局配置文件并设置IGlobalConfiguration接口对象sInstance。主要方法为95行读取文件的getGlobalConfigPath():
private static String getGlobalConfigPath() throws ConfigurationException { String path = System.getenv(GLOBAL_CONFIG_VARIABLE); if (path != null) { // don't actually check for accessibility here, since the variable // might be specifying // a java resource rather than a filename. Even so, this can help // the user figure out // which global config (if any) was picked up by TF. System.err .format("Attempting to use global config \"%s\" from variable $%s.\n", path, GLOBAL_CONFIG_VARIABLE); return path; } File file = new File(GLOBAL_CONFIG_FILENAME); if (file.exists()) { path = file.getPath(); System.err.format( "Attempting to use auto detected global config \"%s\".\n", path); System.err.flush(); return path; } // FIXME: search in tradefed.sh launch dir (or classpath?) return null; }
首先判断是否设置了全局配置文件的系统变量,如果没有设置,那直接在当前文件目录下找tf_global_config.xml文件。很显然,本程序这些都没有,所以该方法返回的结果应该是null。回到了createGlobalConfiguration(String[] args)方法中:
if (globalConfigPath != null) { // Found a global config file; attempt to parse and use it sInstance = configFactory.createGlobalConfigurationFromArgs( ArrayUtil.buildArray(new String[] { globalConfigPath }, args), nonGlobalArgs); System.err.format("Success! Using global config \"%s\"\n", globalConfigPath); } else { // Use default global config sInstance = new GlobalConfiguration(); nonGlobalArgs = Arrays.asList(args); } return nonGlobalArgs;
因为返回的路径为null,所以直接跳转到else语句块中,new一个新对象,没有设置任何属性。最后将命令行参数封装在list中返回,然后console设置参数,最终启动线程来执行任务。所以第二个断点要打在Console的run方法里,然后按F8进入run方法。
下一篇继续
Cts框架解析(4)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。