如何使用 JMeter 和 REST 更新 Atlassian Confluence Wiki API
How to update Atlassian Confluence Wiki using JMeter and the REST API
我想要一种在 JMeter 测试完成后更新 wiki 状态页面和上传文件的方法 运行。这是您可以根据 Jenkins 工作的结果有条件地开始的事情。
我是通过以下步骤完成的:
在设置线程组中,添加了一个 BeanShell 采样器以在我的结果文件夹中找到最新的报告文件。
进口org.apache.commons.io.FileUtils;
导入 org.apache.commons.io.filefilter;
导入 org.apache.commons.io.filefilter.WildcardFileFilter;
导入 org.apache.commons.io.comparator.LastModifiedFileComparator;
log.info("GET MOST RECENT RESULTS REPORT FOR THE APP TESTED");
String dir_path = props.get("test_results_path");
File theNewestFile = null;
try {
File dir = new File(dir_path);
FileFilter fileFilter = new WildcardFileFilter("Results_${testApp}*.*");
File[] files = dir.listFiles(fileFilter);
if (files.length > 0) {
/** The newest file comes first **/
Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
theNewestFile = files[0];
String fileName = files[0].getName().toString();
log.info("fileName: "+fileName);
print("fileName: "+fileName);
props.put("varResultsReportFile",fileName);
}
return theNewestFile;
}
catch (Throwable ex) {
log.error("Failed in Beanshell", ex);
throw ex;
}
使用wiki/confluence系统账号登录
- 获取
rest/api/content?title=${testApp}&spaceKey=${testSpaceKey}&expand=version,history
- 使用JSON提取器提取页面版本号(
results..version.number
)和页面id(results..id
)
- 使用 BeanShell 后处理器将页面版本号加 1 并将该值存储在变量中。当您将更新放入 wiki 时,您将需要它
- 获取
rest/api/content?title=${testApp}&spaceKey=${testSpaceKey}&expand=body.storage
- 使用JSON提取器提取页面正文值(
results..body.storage.value
)
- 对您在第 7 步中创建的 JMeter 变量使用 CSS/JQuery 提取器,提取所有 table 值。例如,CSS/JQuery Expression=td 和 Match No= 1 以提取第一列值。
- PUT
rest/api/content/${varPageId}
并在 JSON 正文中,更新您需要更新的单个 table 值并恢复您提取的不需要更新的值。
- POST
rest/api/content/${varResultsPageId}/child/attachment
对于文件上传选项卡,文件路径=${__P(test_results_path)}${__P(varResultsReportFile)} , 参数名称=文件, MIME 类型=text/csv
- 注销
我想要一种在 JMeter 测试完成后更新 wiki 状态页面和上传文件的方法 运行。这是您可以根据 Jenkins 工作的结果有条件地开始的事情。
我是通过以下步骤完成的:
在设置线程组中,添加了一个 BeanShell 采样器以在我的结果文件夹中找到最新的报告文件。
进口org.apache.commons.io.FileUtils; 导入 org.apache.commons.io.filefilter; 导入 org.apache.commons.io.filefilter.WildcardFileFilter; 导入 org.apache.commons.io.comparator.LastModifiedFileComparator;
log.info("GET MOST RECENT RESULTS REPORT FOR THE APP TESTED"); String dir_path = props.get("test_results_path"); File theNewestFile = null; try { File dir = new File(dir_path); FileFilter fileFilter = new WildcardFileFilter("Results_${testApp}*.*"); File[] files = dir.listFiles(fileFilter); if (files.length > 0) { /** The newest file comes first **/ Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE); theNewestFile = files[0]; String fileName = files[0].getName().toString(); log.info("fileName: "+fileName); print("fileName: "+fileName); props.put("varResultsReportFile",fileName); } return theNewestFile; } catch (Throwable ex) { log.error("Failed in Beanshell", ex); throw ex; }
使用wiki/confluence系统账号登录
- 获取
rest/api/content?title=${testApp}&spaceKey=${testSpaceKey}&expand=version,history
- 使用JSON提取器提取页面版本号(
results..version.number
)和页面id(results..id
) - 使用 BeanShell 后处理器将页面版本号加 1 并将该值存储在变量中。当您将更新放入 wiki 时,您将需要它
- 获取
rest/api/content?title=${testApp}&spaceKey=${testSpaceKey}&expand=body.storage
- 使用JSON提取器提取页面正文值(
results..body.storage.value
) - 对您在第 7 步中创建的 JMeter 变量使用 CSS/JQuery 提取器,提取所有 table 值。例如,CSS/JQuery Expression=td 和 Match No= 1 以提取第一列值。
- PUT
rest/api/content/${varPageId}
并在 JSON 正文中,更新您需要更新的单个 table 值并恢复您提取的不需要更新的值。 - POST
rest/api/content/${varResultsPageId}/child/attachment
对于文件上传选项卡,文件路径=${__P(test_results_path)}${__P(varResultsReportFile)} , 参数名称=文件, MIME 类型=text/csv - 注销