3865fb1fbeb518a9979adf7f6ec2630327e7185b
[awesomized/libmemcached] / testing / lib / random_.cpp
1 #include "random_.hpp"
2
3 #include <cstdio>
4 #include <iostream>
5 #include <sys/random.h>
6
7 unsigned random_num(unsigned min, unsigned max) {
8 unsigned p;
9 getrandom(&p, sizeof(p), 0);
10 return (p % (max - min + 1)) + min;
11 }
12
13 unsigned random_port() {
14 return random_num(34567, 65000);
15 }
16
17 string random_socket() {
18 auto sock = tempnam(nullptr, "libmc");
19
20 if (!sock) {
21 perror("random_socket tempnam()");
22 return {};
23 }
24
25 return sock;
26 }
27
28 string random_socket_or_port_string(const string &what) {
29 if (what == "-s") {
30 return random_socket();
31 }
32
33 return to_string(random_port());
34 }
35
36 string random_socket_or_port_flag() {
37 return random_num(0, 1) ? "-p" : "-s";
38 }