jmeter 从不同目录获取图像文件的多个列表

u7up0aaq  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(127)

根据文件夹的大小,在不同的文件夹中有不同的images。每个文件夹都有多个目录,如CXMXVX。每个CX/MX/VX都有SER00001SER00002SER00003。每个文件夹都有所有的图像。
使用案例:
1.选择任意大小的任意随机目录,如5MB或30MB或1GB
1.每个5MB/30MB/1Gb文件夹都有CXMXVX等文件夹。
1.每个CX/MX/VX具有SER00001/SER00002/SER00003...文件夹。
1.每个SER00001/SER00002/SER00003...文件夹包含图像。
1.根据allsingleCX的选择,将选择MXVX,就像选择all一样,将选择所有CX,VX & MX,并在所有文件夹中最终选择其下的图像。现在,对于单个文件夹,将仅选择CX,VX and MX中的一个文件夹,并选择所有SER文件夹,最终选择其下的图像

import groovy.io.FileType;
def dir = new File(vars.get("dirName"));
def selectionPattern = ["All","Single"];
def list = [];
def listNew = [];
def list_series = [];
def list_images = [];
def modalityDir = [];
def modalityFileName = [];
def finalModalityName = [];
def rnd = new Random();
def rndSelect = new Random();
def userSelectionForModalityFolder = selectionPattern[rndSelect.nextInt(selectionPattern.size())];

if (userSelectionForModalityFolder === "All") {
    dir.eachDir() {
        dirList ->
        list << dirList
    }
    def randomParentDirectorySelected = list[rnd.nextInt(list.size())];
    randomParentDirectorySelected.eachDir() {
        listDir ->
        list_series << listDir
    }
    for (allSelectionDir in list_series) {
        allSelectionDir.eachDir() {
            allSelectDirectory ->
            list_images << allSelectDirectory
        }
    }
    for (int b = 0; b < list_images.size(); b++) {
        File[] modalityFiles = list_images[b].listFiles();
        modalityFileName << modalityFiles
    }
    for (int n = 0; n < modalityFileName.size(); n++) {
        for (int p = 0; p < modalityFileName[n].size(); p++) {
            finalModalityName << modalityFileName[n][p]
        }
    }
    vars.putObject("All_Modality",finalModalityName);
} else {
    dir.eachDir() {
        dirList ->
        list << dirList
    }
    def randomParentDirectorySelected = list[rnd.nextInt(list.size())]
    randomParentDirectorySelected.eachDir() {
        secDirList ->
        listNew << secDirList
    }
    if (listNew.size() > 2) {
        def totalFile = ranSelect.nextInt(listNew.size());
    } else {
        Random ranSelect = new Random();
        def totalFile = ranSelect.nextInt(listNew.size() + 4);
        def random_ModalitySelection = listNew[rnd.nextInt(listNew.size())]
        random_ModalitySelection.eachDir() {
            modalityD ->
            modalityDir << modalityD
        }
        for (int i = 0; i < modalityDir.size(); i++) {
            File[] modalityFiles = modalityDir[i].listFiles();
            modalityFileName << modalityFiles
        }
        for (int j = 0; j < modalityFileName.size(); j++) {
            for (int k = 0; k < modalityFileName[j].size(); k++) {
                finalModalityName << modalityFileName[j][k]
            }
        }
        vars.putObject("All_Modality",finalModalityName);
    }

}

这段代码工作正常,但我已经声明了太多的名单内我的代码,当我运行大量的图像文件,我得到了较长的代码响应

iaqfqrcu

iaqfqrcu1#

1.我不认为使用随机数据是一个好主意,因为我认为测试必须是repeatable,而使用您的方法,如果检测到性能问题,则必须采取额外的步骤来重放测试场景
1.如果生成列表耗费时间/资源,您可以将其移至setUp Thread Group,为每个虚拟用户预先生成文件列表,并将其写入CSV文件。然后,在主线程组中,您可以使用CSV数据集配置,这将是最快的选项,并将为您提供第1点中提到的可重复性。

相关问题