]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/journal-remote/log-generator.py
gpt-auto-generator: don't wait for udev
[thirdparty/systemd.git] / src / journal-remote / log-generator.py
CommitLineData
3e67e5c9 1#!/usr/bin/env python3
d3b7fd54
ZJS
2import sys
3import argparse
4
5PARSER = argparse.ArgumentParser()
6PARSER.add_argument('n', type=int)
7PARSER.add_argument('--dots', action='store_true')
757ed4fd
ZJS
8PARSER.add_argument('-m', '--message-size', type=int, default=200)
9PARSER.add_argument('-d', '--data-size', type=int, default=4000)
2c1a55cf 10PARSER.add_argument('--data-type', choices={'random', 'simple'})
d3b7fd54
ZJS
11OPTIONS = PARSER.parse_args()
12
13template = """\
14__CURSOR=s=6863c726210b4560b7048889d8ada5c5;i=3e931;b=f446871715504074bf7049ef0718fa93;m={m:x};t=4fd05c
15__REALTIME_TIMESTAMP={realtime_ts}
16__MONOTONIC_TIMESTAMP={monotonic_ts}
17_BOOT_ID=f446871715504074bf7049ef0718fa93
18_TRANSPORT=syslog
19PRIORITY={priority}
20SYSLOG_FACILITY={facility}
21SYSLOG_IDENTIFIER=/USR/SBIN/CRON
22MESSAGE={message}
23_UID=0
24_GID=0
25_MACHINE_ID=69121ca41d12c1b69a7960174c27b618
26_HOSTNAME=hostname
27SYSLOG_PID=25721
28_PID=25721
29_SOURCE_REALTIME_TIMESTAMP={source_realtime_ts}
30DATA={data}
31"""
32
00d5eaaf 33m = 0x198603b12d7
d3b7fd54
ZJS
34realtime_ts = 1404101101501873
35monotonic_ts = 1753961140951
36source_realtime_ts = 1404101101483516
37priority = 3
38facility = 6
39
40src = open('/dev/urandom', 'rb')
41
42bytes = 0
2c1a55cf 43counter = 0
d3b7fd54
ZJS
44
45for i in range(OPTIONS.n):
757ed4fd
ZJS
46 message = src.read(OPTIONS.message_size)
47 message = repr(message)[2:-1]
48
2c1a55cf
ZJS
49 if OPTIONS.data_type == 'random':
50 data = repr(src.read(OPTIONS.data_size))
51 else:
52 # keep the pattern non-repeating so we get a different blob every time
53 data = '{:0{}}'.format(counter, OPTIONS.data_size)
54 counter += 1
d3b7fd54
ZJS
55
56 entry = template.format(m=m,
57 realtime_ts=realtime_ts,
58 monotonic_ts=monotonic_ts,
59 source_realtime_ts=source_realtime_ts,
60 priority=priority,
61 facility=facility,
62 message=message,
63 data=data)
64 m += 1
65 realtime_ts += 1
66 monotonic_ts += 1
67 source_realtime_ts += 1
68
69 bytes += len(entry)
70
71 print(entry)
72
73 if OPTIONS.dots:
74 print('.', file=sys.stderr, end='', flush=True)
75
76if OPTIONS.dots:
00d5eaaf 77 print(file=sys.stderr)
d3b7fd54 78print('Wrote {} bytes'.format(bytes), file=sys.stderr)