VirtualBox

Ignore:
Timestamp:
Mar 2, 2019 8:48:24 PM (6 years ago)
Author:
vboxsync
Message:

FsPerf: Benchmark RTDirOpen/Close without the RTDirRead part, since the old linux shared folder code suffered in this scenario. bugref:9172

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/utils/fs/FsPerf.cpp

    r77448 r77540  
    247247    kCmdOpt_Rename,
    248248    kCmdOpt_NoRename,
     249    kCmdOpt_DirOpen,
     250    kCmdOpt_NoDirOpen,
    249251    kCmdOpt_DirEnum,
    250252    kCmdOpt_NoDirEnum,
     
    325327    { "--rename",           kCmdOpt_Rename,         RTGETOPT_REQ_NOTHING },
    326328    { "--no-rename",        kCmdOpt_NoRename,       RTGETOPT_REQ_NOTHING },
     329    { "--dir-open",         kCmdOpt_DirOpen,        RTGETOPT_REQ_NOTHING },
     330    { "--no-dir-open",      kCmdOpt_NoDirOpen,      RTGETOPT_REQ_NOTHING },
    327331    { "--dir-enum",         kCmdOpt_DirEnum,        RTGETOPT_REQ_NOTHING },
    328332    { "--no-dir-enum",      kCmdOpt_NoDirEnum,      RTGETOPT_REQ_NOTHING },
     
    391395static bool         g_fUtimes    = true;
    392396static bool         g_fRename    = true;
     397static bool         g_fDirOpen   = true;
    393398static bool         g_fDirEnum   = true;
    394399static bool         g_fMkRmDir   = true;
     
    10061011
    10071012
     1013DECL_FORCE_INLINE(int) fsPerfOpenClose(const char *pszDir)
     1014{
     1015    RTDIR hDir;
     1016    RTTESTI_CHECK_RC_RET(RTDirOpen(&hDir, pszDir), VINF_SUCCESS, rcCheck);
     1017    RTTESTI_CHECK_RC(RTDirClose(hDir), VINF_SUCCESS);
     1018    return VINF_SUCCESS;
     1019}
     1020
     1021
     1022void vsPerfDirOpen(void)
     1023{
     1024    RTTestISub("dir open");
     1025    RTDIR hDir;
     1026
     1027    /*
     1028     * Non-existing files.
     1029     */
     1030    RTTESTI_CHECK_RC(RTDirOpen(&hDir, InEmptyDir(RT_STR_TUPLE("no-such-file"))), VERR_FILE_NOT_FOUND);
     1031    RTTESTI_CHECK_RC(RTDirOpen(&hDir, InEmptyDir(RT_STR_TUPLE("no-such-dir" RTPATH_SLASH_STR "no-such-file"))), FSPERF_VERR_PATH_NOT_FOUND);
     1032    RTTESTI_CHECK_RC(RTDirOpen(&hDir, InDir(RT_STR_TUPLE("known-file" RTPATH_SLASH_STR "no-such-file"))), VERR_PATH_NOT_FOUND);
     1033
     1034    /*
     1035     * Check that open + close works.
     1036     */
     1037    g_szEmptyDir[g_cchEmptyDir] = '\0';
     1038    RTTESTI_CHECK_RC_RETV(RTDirOpen(&hDir, g_szEmptyDir), VINF_SUCCESS);
     1039    RTTESTI_CHECK_RC(RTDirClose(hDir), VINF_SUCCESS);
     1040
     1041
     1042    /*
     1043     * Profile empty dir and dir with many files.
     1044     */
     1045    g_szEmptyDir[g_cchEmptyDir] = '\0';
     1046    PROFILE_FN(fsPerfOpenClose(g_szEmptyDir), g_nsTestRun, "RTDirOpen/Close empty");
     1047    if (g_fManyFiles)
     1048    {
     1049        InDir(RT_STR_TUPLE("manyfiles"));
     1050        PROFILE_FN(fsPerfOpenClose(g_szDir), g_nsTestRun, "RTDirOpen/Close manyfiles");
     1051    }
     1052}
     1053
     1054
    10081055DECL_FORCE_INLINE(int) fsPerfEnumEmpty(void)
    10091056{
     
    10481095    RTTestISub("dir enum");
    10491096    RTDIR hDir;
    1050 
    1051     /* Non-existing files. */
    1052     RTTESTI_CHECK_RC(RTDirOpen(&hDir, InEmptyDir(RT_STR_TUPLE("no-such-file"))), VERR_FILE_NOT_FOUND);
    1053     RTTESTI_CHECK_RC(RTDirOpen(&hDir, InEmptyDir(RT_STR_TUPLE("no-such-dir" RTPATH_SLASH_STR "no-such-file"))), FSPERF_VERR_PATH_NOT_FOUND);
    1054     RTTESTI_CHECK_RC(RTDirOpen(&hDir, InDir(RT_STR_TUPLE("known-file" RTPATH_SLASH_STR "no-such-file"))), VERR_PATH_NOT_FOUND);
    10551097
    10561098    /*
     
    28092851                g_fUtimes    = true;
    28102852                g_fRename    = true;
     2853                g_fDirOpen   = true;
    28112854                g_fDirEnum   = true;
    28122855                g_fMkRmDir   = true;
     
    28332876                g_fUtimes    = false;
    28342877                g_fRename    = false;
     2878                g_fDirOpen   = false;
    28352879                g_fDirEnum   = false;
    28362880                g_fMkRmDir   = false;
     
    28582902            CASE_OPT(Utimes);
    28592903            CASE_OPT(Rename);
     2904            CASE_OPT(DirOpen);
    28602905            CASE_OPT(DirEnum);
    28612906            CASE_OPT(MkRmDir);
     
    30103055                if (g_fRename)
    30113056                    fsPerfRename();
     3057                if (g_fDirOpen)
     3058                    vsPerfDirOpen();
    30123059                if (g_fDirEnum)
    30133060                    vsPerfDirEnum();
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette