Mercurial > hg > orthanc-tests
diff PerfsDb/DbPopulator.py @ 161:27b3b0df5f90
2 upload tests
author | am@osimis.io |
---|---|
date | Fri, 17 Aug 2018 17:24:11 +0200 |
parents | df1f9946571c |
children | dbc42a03ee75 |
line wrap: on
line diff
--- a/PerfsDb/DbPopulator.py Fri Aug 17 16:17:57 2018 +0200 +++ b/PerfsDb/DbPopulator.py Fri Aug 17 17:24:11 2018 +0200 @@ -1,6 +1,7 @@ import typing +import time from orthancRestApi import OrthancClient - +from TestResult import TestResult from DbSize import DbSize class DbPopulator: @@ -9,7 +10,8 @@ self._orthanc = orthanc self._dbSize = dbSize self._sourceInstanceId = None - + self._fileCounter = 0 + def populate(self): self._sourceInstanceId = self._orthanc.uploadDicomFile("../Database/DummyCT.dcm") @@ -17,25 +19,43 @@ patientCount = 1 smallStudiesPerPatient = 2 largeStudiesPerPatient = 1 + seriesPerSmallStudy = 1 + seriesPerLargeStudy = 2 + instancesPerSmallSeries = 1 instancesPerLargeSeries = 5 elif self._dbSize == DbSize.Small: - patientCount = 20 + patientCount = 100 smallStudiesPerPatient = 2 largeStudiesPerPatient = 1 - instancesPerLargeSeries = 300 + seriesPerSmallStudy = 1 + seriesPerLargeStudy = 2 + instancesPerSmallSeries = 1 + instancesPerLargeSeries = 30 elif self._dbSize == DbSize.Medium: patientCount = 1000 smallStudiesPerPatient = 2 - largeStudiesPerPatient = 1 - instancesPerLargeSeries = 500 + largeStudiesPerPatient = 2 + seriesPerSmallStudy = 1 + seriesPerLargeStudy = 2 + instancesPerSmallSeries = 1 + instancesPerLargeSeries = 300 elif self._dbSize == DbSize.Large: - patientCount = 20000 - smallStudiesPerPatient = 4 - largeStudiesPerPatient = 8 - instancesPerLargeSeries = 500 + patientCount = 10000 + smallStudiesPerPatient = 2 + largeStudiesPerPatient = 2 + seriesPerSmallStudy = 1 + seriesPerLargeStudy = 2 + instancesPerSmallSeries = 1 + instancesPerLargeSeries = 300 else: raise NotImplementedError + print("Will generate data for (approximately):") + print("{n:>12} patients".format(n=patientCount)) + print("{n:>12} studies".format(n=patientCount * (smallStudiesPerPatient + largeStudiesPerPatient))) + print("{n:>12} instances".format(n=patientCount * (smallStudiesPerPatient * seriesPerSmallStudy * instancesPerSmallSeries + largeStudiesPerPatient * seriesPerLargeStudy * instancesPerLargeSeries))) + + startTime = time.time() # first add data that are the same in small and large DBs (and that can be used in tests for comparing the same things !!) # used in TestFindStudyByPatientId5Results @@ -55,14 +75,16 @@ print("Generating data for patient " + str(patientIndex)) for i in range(0, smallStudiesPerPatient): print("Generating small study " + str(i)) - self.createStudy(studyIndex=studyIndex, patientIndex=patientIndex, seriesCount=2, instancesPerSeries=instancesPerLargeSeries) + self.createStudy(studyIndex=studyIndex, patientIndex=patientIndex, seriesCount=seriesPerSmallStudy, instancesPerSeries=instancesPerSmallSeries) studyIndex+=1 for i in range(0, largeStudiesPerPatient): print("Generating large study " + str(i)) - self.createStudy(studyIndex=studyIndex, patientIndex=patientIndex, seriesCount=4, instancesPerSeries=instancesPerLargeSeries) + self.createStudy(studyIndex=studyIndex, patientIndex=patientIndex, seriesCount=seriesPerLargeStudy, instancesPerSeries=instancesPerLargeSeries) studyIndex+=1 - print("Generation completed") + endTime = time.time() + print("Generation completed. Elapsed time: {duration:.2f} sec".format(duration=endTime-startTime)) + print("Uploaded {n} files -> {p:.2f} files/sec".format(n=self._fileCounter, p=self._fileCounter/(endTime-startTime))) def createStudy(self, studyIndex: int, patientIndex: int, seriesCount: int, instancesPerSeries: int): for seriesIndex in range(0, seriesCount): @@ -71,6 +93,7 @@ self._orthanc.uploadDicom(dicomFile) def createDicomFile(self, patientIndex: int, studyIndex: int, seriesIndex: int, instanceIndex: int) -> object: + self._fileCounter += 1 return self._orthanc.instances.modify( instanceId=self._sourceInstanceId, replaceTags={