-
Notifications
You must be signed in to change notification settings - Fork 0
/
loadtest.py
111 lines (78 loc) · 3.54 KB
/
loadtest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/env python3
#This script creates a lot of containers using the journald log-driver sync or async
#then check if all them wrote successfully to the journal.
import subprocess, shlex, threading
from colorama import Fore, Back, Style
def sincrono():
containersCounter = 200
journalctlOutput = []
print('journal usage before: ')
subprocess.call(shlex.split('journalctl --disk-usage'))
print('\n')
for counter in range(0,containersCounter):
print('creating container {}/{}\n'.format(counter, containersCounter))
cmd = 'docker run --log-driver=journald --name test_{} hello-world'.format(counter)
subprocess.call(shlex.split(cmd))
cmdGetJournalCtl = 'journalctl CONTAINER_NAME=test_{}'.format(counter)
outSystemCtl = subprocess.check_output(shlex.split(cmdGetJournalCtl))
journalctlOutput.append(outSystemCtl)
for counter in range(0,containersCounter):
print('removing container {}/{}\n'.format(counter, containersCounter))
cmd = 'docker rm -f test_{}'.format(counter)
subprocess.call(shlex.split(cmd))
print('journal usage after:')
subprocess.call(shlex.split('journalctl --disk-usage'))
print('\nquantidade de logs coletados: {}'.format(len(journalctlOutput)))
for counter in journalctlOutput:
print(counter)
print('\nquantidade de logs coletados: {}'.format(len(journalctlOutput)))
def assincrono(beginIndex, endIndex):
containerName = 'CRO0ISFITIH'
containersCounter = endIndex - beginIndex
ownJournalctlOutput = []
for counter in range(beginIndex, endIndex):
print('creating container {}/{}\n'.format(counter, containersCounter))
cmd = 'docker run --log-driver=journald --name {}_{} hello-world'.format(containerName, counter)
subprocess.call(shlex.split(cmd))
cmdGetJournalCtl = 'journalctl CONTAINER_NAME={}_{}'.format(containerName, counter)
outSystemCtl = subprocess.check_output(shlex.split(cmdGetJournalCtl))
ownJournalctlOutput.append(outSystemCtl)
#removo tudo
for counter in range(beginIndex, endIndex):
print('removing container {}/{}\n'.format(counter, containersCounter))
cmd = 'docker rm -f {}_{}'.format(containerName, counter)
subprocess.call(shlex.split(cmd))
# print('journal usage after:')
# subprocess.call(shlex.split('journalctl --disk-usage'))
print('\nquantidade de logs coletados: {}'.format(len(ownJournalctlOutput)))
# for counter in ownJournalctlOutput:
# print(counter)
#print('\nquantidade de logs coletados: {}'.format(len(ownJournalctlOutput)))
if len(ownJournalctlOutput) != containersCounter:
print(Back.RED + 'Nao gerou a quantidade de log certa')
else:
print(Back.GREEN + 'Gerou a quantidade certa de logs')
print(Style.RESET_ALL)
# def worker(inicio, fim):
# for i in range (inicio, fim):
# print('criando container {}'.format(i))
print(Style.RESET_ALL)
numThreads = 10
numContainers = 1000
beginIndex = 0
qntWork = int(numContainers / numThreads)
print('journal usage before: ')
subprocess.call(shlex.split('journalctl --disk-usage'))
threads = list()
for i in range(0, numThreads):
endIndex = beginIndex + qntWork
t = threading.Thread(target=assincrono, args=(beginIndex, endIndex))
threads.append(t)
t.start()
#worker(beginIndex, endIndex)
beginIndex = endIndex
for index, thread in enumerate(threads):
thread.join()
print('journal usage after:')
subprocess.call(shlex.split('journalctl --disk-usage'))
print(Style.RESET_ALL)