""" Author: Michel Peltriaux Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany Contact: michel.peltriaux@sgdnord.rlp.de Created on: 19.08.21 """ from django.core.management import BaseCommand from intervention.models import Intervention class Command(BaseCommand): help = "Performs test on collisions using the identifier generation" def handle(self, *args, **options): identifiers = {} max_iterations = 100000 try: collisions = 0 len_ids = len(identifiers) while len_ids < max_iterations: tmp_intervention = Intervention() _id = tmp_intervention.generate_new_identifier() len_ids = len(identifiers) if _id not in identifiers: if len_ids % (max_iterations/5) == 0: print(len_ids) identifiers[_id] = None else: collisions += 1 print("+++ Collision after {} identifiers +++".format(len_ids)) except KeyboardInterrupt: self._break_line() exit(-1) print( "\n{} collisions in {} identifiers; Collision rate {}%".format( collisions, len_ids, (collisions / len_ids)*100, ) ) def _break_line(self): """ Simply prints a line break Returns: """ self.stdout.write("\n")