NOTE: Loadrunner does have a function(lr_generate_uuid) for UUID but it does not generate your standard UUID.
Below are three different UUID functions that I normally use depending on the requirement.
For example, If only requirement is that UUID be 32 hexadecimal digits then I will use simple LR UUID to generate it. If there are proper checks in place to see the UUID generated is valid then I will use a proper UUID function's. Therefore you can select which one you want to use depending on your requirement.
Simple UUID - this is a simple 32 hexadecimal digits. You can generate hexaadecimal in Loadrunner using %x or %X Random number.
Following screenshot shows how to generate a random Hexadecimal.
Lr UUID - this function generates 32 hexadecimal digits UUID using Version 4(random) variant. This is the most common format I have seen applications use.
Win UUID - this function uses windows inbuild CoCreateGuid function (ole32.dll). The original code is written by Scott Moore and I have modified it a little bit.
NOTE: I have left the deallocation of pointer for you to do in the code.
#define Hexlength 50 //Max length char *lr_guid_gen(); //explicitely declare the function char *lr_uuid_gen(); //explicitely declare the function Action() { char *Win_UUID=0; //declare window function UUID variable char *slr_UUID=0; //declare loadrunner function UUID variable char *lr_uuid; //declare UUID variable Win_UUID=(char *)malloc(sizeof(char)); //allocate dynamic memory slr_UUID=(char *)malloc(sizeof(char)); //allocate dynamic memory Win_UUID=lr_guid_gen(); //execute Window UUID function slr_UUID=lr_uuid_gen(); //execute LR UUID function lr_uuid=lr_generate_uuid(); //assign result generated by loadrunner internal function to lr_uuid /*output a simple UUID*/ lr_output_message("smp_UUID: %s",lr_eval_string("{sHex}{sHex}-{sHex}-{sHex}-{sHex}-{sHex}{sHex}{sHex}")); //you could use something like this as well -> lr_output_message("smp_UUID: %s",lr_eval_string("{sHex}{sHex}-{sHex}-{FourHex}-{sHex}-{sHex}{sHex}{sHex}")); /*output loadrunner UUID*/ lr_output_message("slr_UUID: %s",lr_eval_string(slr_UUID)); /*output window generated UUID*/ lr_output_message("Win_UUID: %s",lr_eval_string(Win_UUID)); /*output base64 UUID*/ lr_output_message("%s",lr_uuid); /*frees uuid created by lr_generarte_uuid*/ lr_generate_uuid_free(lr_uuid); return 0; } /*This function uses windows ole32 CoCreateGuid function to generate UUID*/ char *lr_guid_gen() { typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[4]; } GUID; char guid[Hexlength]; GUID m_guid; lr_load_dll ("ole32.dll"); CoCreateGuid(&m_guid); sprintf (guid, "%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", m_guid.Data1, m_guid.Data2, m_guid.Data3, m_guid.Data4[0], m_guid.Data4[1], m_guid.Data4[2], m_guid.Data4[3], m_guid.Data4[4], m_guid.Data4[5], m_guid.Data4[6], m_guid.Data4[7]); return guid; } /*This function uses loadrunner random numbers to generate version 4 UUID*/ char *lr_uuid_gen() { char uuid[Hexlength]; switch (atoi(lr_eval_string("{RandNo}"))) { case 1: sprintf(uuid,lr_eval_string("{Hex}{Hex}-{Hex}-{FourHex}-{aHex}-{Hex}{Hex}{Hex}")); break; case 2: sprintf(uuid,lr_eval_string("{Hex}{Hex}-{Hex}-{FourHex}-{bHex}-{Hex}{Hex}{Hex}")); break; case 3: sprintf(uuid,lr_eval_string("{Hex}{Hex}-{Hex}-{FourHex}-{EightHex}-{Hex}{Hex}{Hex}")); break; case 4: sprintf(uuid,lr_eval_string("{Hex}{Hex}-{Hex}-{FourHex}-{NineHex}-{Hex}{Hex}{Hex}")); break; default: break; } return uuid; }
Output:
Action.c(23): smp_UUID: 492ec6db-dcaf-fb6d-1009-72a542e26ee7 Action.c(26): slr_UUID: c4fbde14-4f41-4963-8400-32f77f6e0633 Action.c(29): Win_UUID: cee9f8fd-3715-4183-b367-a4c13b84a7c8 Action.c(32): LBase_64: J3+Lpj2t20KzpBSgg0e5Bg== Action.c(23): smp_UUID: 65ea1bc1-8434-e05b-92f5-7e23a0f7e253 Action.c(26): slr_UUID: 358390f7-2405-4b03-8be4-b8c61b90a2b6 Action.c(29): Win_UUID: 75d74eb9-a2bf-42b4-b114-61d634a2c7db Action.c(32): LBase_64: uzxvhpLXP0ifUjMSqzngCQ== Action.c(23): smp_UUID: 0a86ce02-7413-1da3-bd39-63fc4cb9d60e Action.c(26): slr_UUID: 726546c5-500d-4ef2-a27e-f447bb925143 Action.c(29): Win_UUID: db65a02f-1ca1-4fb3-ab22-0e41088b1633 Action.c(32): LBase_64: IJV65qREQUOe5CVwcE5aVQ== Action.c(23): smp_UUID: 6678a6ac-3356-eb2f-63e6-02fe5a5185f2 Action.c(26): slr_UUID: acddc8f9-746d-4655-838c-7802483e06bb Action.c(29): Win_UUID: e7a7ff1c-4019-4053-a51a-7567582d825c Action.c(32): LBase_64: i+b5VpgA7Ueis8r1bxBTJg== Action.c(23): smp_UUID: 3f8eb05e-9936-b5fc-6be9-454fd8fb9ab5 Action.c(26): slr_UUID: cc835158-9e86-4df5-8a4e-1e3f25808754 Action.c(29): Win_UUID: 3d604abe-046b-43dc-a5c4-e759fb04f960 Action.c(32): LBase_64: Rk2mSYUuOUmU0Yti_W+a5Q==
If you have a different function to generate UUID in Loadrunner, I would love to know about it.
No comments:
Post a Comment