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()