使用c++语言以时间戳作为输入生成V4 UUID

generate V4 UUID using timestamp as input in C++ language

本文关键字:输入 V4 UUID c++ 语言 时间戳 使用      更新时间:2023-10-16

我正在寻找一个代码,可以使用UTC时间戳作为输入生成V4 UUID。

我想在我的Load Runner脚本中使用这段代码来在我的Load Runner请求中传递UUID。

如果代码是用c++提供的,将不胜感激

我记得我用过类似

的东西
int GenerateGuid()
{
    typedef struct _GUID
    {
        unsigned long Group1;
        unsigned short Group2;
        unsigned short Group3;
        unsigned char Group4[8];
    } GUID;
    GUID m_guid;
    char msgId[msgIdSize];
    lr_load_dll("ole32.dll");
    CoCreateGuid(&m_guid);
    sprintf(msgId, "%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
        m_guid.Group1, m_guid.Group2, m_guid.Group3,
        m_guid.Group4[0], m_guid.Group4[1], m_guid.Group4[2], m_guid.Group4[3],
        m_guid.Group4[4], m_guid.Group4[5], m_guid.Group4[6], m_guid.Group4[7]);
    lr_save_string(msgId, "msgId");
    return 0;
}

这基本上是调用CoCreateuid函数(将只适用于Windows加载生成器),并将结果存储到msgid LoadRunner参数。

实际上,这是我最后一次使用LoadRunner,就我所记得的,它未能在硬件上产生所需数量的大型POST请求(而且我还必须围绕请求大小的几个人为限制进行工作),而Apache JMeter工作得很有吸引力。只是为了比较,你只需要调用一个函数:${__UUID},就是这样。如果有兴趣,请查看编写您的第一个JMeter脚本文章。

LoadRunner是一个C虚拟用户,而不是c++

我建议您参考内置函数web_save_timestamp_param()lr_save_timestamp()作为您使用的选项

我使用下面的代码在loadrunner中独立于loadgenerator的操作系统生成UUID。请查看此链接-如何从LoadRunner独立于操作系统生成通用唯一标识符,UUID

int lr_guid_gen()
{
    char GUID[40];
    int t = 0;
    char *szTemp = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
    char *szHex = "0123456789abcdef-";
    int nLen = strlen (szTemp);

    for (t=0; t<nLen+1; t++)
    {
        int r = rand () % 16;
        char c = ' ';   
        switch (szTemp[t])
        {
            case 'x' : { c = szHex [r]; } break;
            case 'y' : { c = szHex [r & 0x03 | 0x08]; } break;
            case '-' : { c = '-'; } break;
            case '4' : { c = '4'; } break;
        }
        GUID[t] = ( t < nLen ) ? c : 0x00;
    }
    lr_save_string(GUID,"PAR_GUID");
    return 0;
}