JMeter - Generate Random MAC Addresses

26 views
Skip to first unread message

Ajith R

unread,
Jun 28, 2024, 4:41:52 AM (7 days ago) Jun 28
to JMeter Forum
Hi Team,

I have a JSR223 Sampler with the below script:

import TestApp.MessageRegister;
import TestApp.Message;
import TestApp.MessagePropertyAnnotation;
import TestApp.MessageTypeAnnotation;
import TestApp.RegisteredDeviceStatus;
import com.csa.asn1.MessageType;
import com.csa.asn1.BinaryWriterASN1;
import com.csa.asn1.BitConverter;
import com.csa.asn1.Tag;
import org.apache.commons.codec.binary.Hex;

MessageRegister registerMsg = new MessageRegister();
registerMsg.MacAddress = "60:5B:20:0E:FE:E5";
registerMsg.ManufactureDate = "2024-06-06T18:00:00.0000000Z";
registerMsg.SerialNumber = vars.get("serialNumber");
registerMsg.Model = "Model";
registerMsg.StagedVersion = "1";
registerMsg.RunningVersion = "1";
registerMsg.ManufactureVersion = "1";

byte[] bytes =  registerMsg.ToBytes();

return (Hex.encodeHexString(bytes));


The MAC address need to be randomized. Also, we need to ensure its unique per thread (not iteration).

Please help. Thanks for your support.

Regards,
Ajith

DT

unread,
Jun 28, 2024, 4:50:39 AM (7 days ago) Jun 28
to JMeter Forum
You can use the following function to generate a random MAC address:

def macAddress() {
    def rnd = new Random()
    def mac = new StringBuilder()

    (1..6).each {
        int value = rnd.nextInt(256)
        def hexStr = Integer.toHexString(value).padLeft(2, '0')
        mac.append(hexStr)
        if (it < 6) {
            mac.append(':')
        }
    }

    return mac.toString()
}

However "random" doesn't mean "unique" so it would be a good idea to pre-generate as many addresses as you will need somewhere in setUp Thread Group, write them into a file and finally use CSV Data Set Config in the "normal" Thread Group to read these pre-generated values. 
Reply all
Reply to author
Forward
0 new messages