elasticsearch-secure-nodes/generate/hamlet.py

raw link view readme
1
2 import datetime
3 import sys, os
4 from random import randint
5 from time import time
6 import requests
7 import json
8 import socket
9 import fcntl
10 import struct
11
12 from random import randrange, randint
13
14 with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'hamlet_distinct.t'), 'r') as f:
15 hamlet_all = f.read()
16
17 genData = hamlet_all.split(' ')
18
19 def hamlet(count):
20 return genData[randint(1, len(genData) - 1)] + ('' if count == 1 else ' ' + hamlet(count - 1))
21
22 interface = b'eth0'
23 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
24 address = socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', interface[:15]))[20:24])
25
26 endpoint = 'http://{}:9200/librarygen'.format(address)
27
28 print(endpoint)
29
30 def call(verb, endpoint, obj = None):
31 headers = {
32 "Accept": "application/json",
33 }
34 endpoint = endpoint.lower()
35
36 verb = verb.lower()
37
38 jsonData = json.dumps(obj)
39
40 if verb == 'get':
41 response = requests.get(endpoint, headers=headers)
42 elif verb == 'post':
43 response = requests.post(endpoint, headers=headers, data=jsonData)
44 elif verb == 'put':
45 response = requests.put(endpoint, headers=headers, data=jsonData)
46 elif verb == 'delete':
47 response = requests.delete(endpoint, headers=headers)
48
49 return response
50
51 def create_date():
52 return '{}-{:02}-{:02}T{:02}:{:02}:{:02}Z'.format(randint(2006, 2016), randint(1, 12), randint(1, 28), randint(0, 23), randint(0, 59), randint(0, 59))
53
54 call('PUT', endpoint, {
55 "settings": {
56 "index.mapping.single_type": True,
57 "number_of_replicas": 1,
58 "number_of_shards": 6
59 }
60 })
61
62 def run():
63 then = time()
64 count = 0
65 while True:
66 try:
67 item = {
68 "title": hamlet(4),
69 "authors": [hamlet(_) for _ in range(1, randrange(2,4))],
70 "editor": hamlet(1) if randrange(4) == 0 else None,
71 "abstract": hamlet(randrange(100, 400)),
72 "metadata": {
73 "pages": randrange(1,400),
74 "isbn": '9780' + str(randrange(100000000, 999999999)),
75 "genre": hamlet(1),
76 },
77 "created": create_date(),
78 "modified": create_date(),
79 }
80 call('POST', '{}/book'.format(endpoint), item)
81 count = count + 1
82 except KeyboardInterrupt:
83 now = time()
84 print('Stopped ({})'.format(count / (now - then)))
85 sys.exit(0)
86
87
88 if __name__ == '__main__':
89 run()
90