Source code for test_suite.test_apps.file_operations
from random import randint, random
from multiprocessing import Process
import time
[docs]def file_reader():
"""
Opens file, read from it.
:return:
"""
while True:
with open("files/test_file", 'r') as f:
z = f.read()
time.sleep(random()/10)
[docs]def file_writer():
"""
Opens file and write to it.
:return:
"""
while True:
z = None
with open("files/test_file", 'r') as f:
z = f.read()
with open("files/test_file_write_" + str(randint(0, 10000)), 'w') as f:
f.write(z[:1000*randint(1, 64)])
time.sleep(1)
[docs]def spawner(target):
"""
Create random number of processes. Kills/creates random number of processes.
:return:
"""
processes = []
processes = _subroutine_spawn(processes, target)
while True:
if randint(0, 10) > 5:
processes = _subroutine_spawn(processes, target)
else:
processes = _subroutine_kill(processes)
time.sleep(randint(0, 3))
def _subroutine_spawn(processes, target):
to_create = randint(2, 10)
for i in range(to_create):
p = Process(target=target)
processes.append(p)
p.start()
return processes
def _subroutine_kill(processes):
length = len(processes)
to_delete = randint(0, length-1)
for i in range(to_delete):
i_p = randint(0, len(processes) - 1)
processes[i_p].terminate()
processes.pop(i_p)
return processes
if __name__ == '__main__':
p1 = Process(target=spawner, args=(file_reader, ))
p1.start()
p2 = Process(target=spawner, args=(file_writer, ))
p2.start()