1 #include "test/lib/random.hpp"
2 #include "test/lib/Connection.hpp"
5 # include <unistd.h> // getpid()
11 using namespace chrono
;
13 auto time
= duration_cast
<nanoseconds
>(system_clock::now().time_since_epoch());
14 rnd_eng
.seed(static_cast<mt19937_64::result_type
>(time
.count()));
17 unsigned random_port() {
19 auto port
= random_num(5000, 32000);
20 Connection
conn(port
);
31 string
random_port_string(const string
&) {
32 return to_string(random_port());
35 string
random_socket(const string
&prefix
) {
36 return prefix
+ to_string(random_num(1U, UINT32_MAX
)) + "@" + to_string(getpid()) + ".sock";
39 string
random_socket_or_port_string(const string
&what
) {
41 return random_socket();
44 return to_string(random_port());
47 string
random_socket_or_port_flag(const string
&binary
) {
49 return random_num(0, 1) ? "-p" : "-s";
52 char random_ascii(char min
, char max
) {
53 return static_cast<char>(random_num(min
, max
));
56 string
random_ascii_string(size_t len
, char min
, char max
) {
60 for (size_t rem
= 0; rem
< len
; ++rem
) {
61 s
+= random_ascii(min
, max
);
65 assert(strlen(s
.c_str()) == s
.size());
70 pair
<string
, string
> random_ascii_pair(size_t minlen
, size_t maxlen
) {
72 random_ascii_string(random_num(minlen
, maxlen
)),
73 random_ascii_string(random_num(minlen
, maxlen
))
79 char random_binary() {
80 return random_num(CHAR_MIN
, CHAR_MAX
);
83 string
random_binary_string(size_t len
) {
87 for (size_t rem
= 0; rem
< len
; ++rem
) {