Mercurial > hg > orthanc-tests
comparison Tests/Tests.py @ 8:f8d781d1d267
test_changes, test_archive, test_media_archive
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 17 Jun 2015 13:45:54 +0200 |
parents | 302f06f3bba2 |
children | 5f73008bb873 |
comparison
equal
deleted
inserted
replaced
7:302f06f3bba2 | 8:f8d781d1d267 |
---|---|
226 DoGet(_REMOTE, '/instances/%s/frames/0/image-uint16' % i) | 226 DoGet(_REMOTE, '/instances/%s/frames/0/image-uint16' % i) |
227 DoGet(_REMOTE, '/instances/%s/frames/75/preview' % i) | 227 DoGet(_REMOTE, '/instances/%s/frames/75/preview' % i) |
228 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/aaa/preview' % i)) | 228 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/aaa/preview' % i)) |
229 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/76/preview' % i)) | 229 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/frames/76/preview' % i)) |
230 | 230 |
231 | |
232 def test_changes(self): | |
233 # Check emptiness | |
234 c = DoGet(_REMOTE, '/changes') | |
235 self.assertEqual(0, len(c['Changes'])) | |
236 self.assertEqual(0, c['Last']) | |
237 self.assertTrue(c['Done']) | |
238 c = DoGet(_REMOTE, '/changes?last') | |
239 self.assertEqual(0, len(c['Changes'])) | |
240 self.assertEqual(0, c['Last']) | |
241 self.assertTrue(c['Done']) | |
242 | |
243 # Add 1 instance | |
244 i = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID'] | |
245 c = DoGet(_REMOTE, '/changes') | |
246 begin = c['Last'] | |
247 self.assertEqual(4, len(c['Changes'])) | |
248 self.assertTrue(c['Done']) | |
249 self.assertEqual(c['Changes'][-1]['Seq'], c['Last']) | |
250 | |
251 c = DoGet(_REMOTE, '/changes?last') | |
252 self.assertEqual(1, len(c['Changes'])) | |
253 self.assertEqual(begin, c['Last']) | |
254 self.assertTrue(c['Done']) | |
255 c = DoGet(_REMOTE, '/changes?limit=1&since=' + str(begin - 1)) | |
256 self.assertEqual(1, len(c['Changes'])) | |
257 self.assertEqual(begin, c['Last']) | |
258 self.assertTrue(c['Done']) | |
259 c = DoGet(_REMOTE, '/changes?limit=1&since=' + str(begin - 2)) | |
260 self.assertEqual(1, len(c['Changes'])) | |
261 self.assertEqual(begin - 1, c['Last']) | |
262 self.assertFalse(c['Done']) | |
263 c = DoGet(_REMOTE, '/changes?limit=1&since=' + str(begin - 3)) | |
264 self.assertEqual(1, len(c['Changes'])) | |
265 self.assertEqual(begin - 2, c['Last']) | |
266 self.assertFalse(c['Done']) | |
267 | |
268 UploadFolder(_REMOTE, 'Knee/T1') | |
269 UploadFolder(_REMOTE, 'Knee/T2') | |
270 since = begin | |
271 countPatients = 0 | |
272 countStudies = 0 | |
273 countSeries = 0 | |
274 countInstances = 0 | |
275 completed = 0 | |
276 while True: | |
277 c = DoGet(_REMOTE, '/changes', { 'since' : since, 'limit' : 3 }) | |
278 since = c['Last'] | |
279 for i in c['Changes']: | |
280 if i['ResourceType'] == 'Instance': | |
281 countInstances += 1 | |
282 if i['ResourceType'] == 'Patient': | |
283 countPatients += 1 | |
284 if i['ResourceType'] == 'Study': | |
285 countStudies += 1 | |
286 if i['ResourceType'] == 'Series': | |
287 countSeries += 1 | |
288 if i['ChangeType'] == 'NewInstance': | |
289 countInstances += 1 | |
290 if i['ChangeType'] == 'NewPatient': | |
291 countPatients += 1 | |
292 if i['ChangeType'] == 'NewStudy': | |
293 countStudies += 1 | |
294 if i['ChangeType'] == 'NewSeries': | |
295 countSeries += 1 | |
296 if i['ChangeType'] == 'CompletedSeries': | |
297 completed += 1 | |
298 self.assertTrue('ID' in i) | |
299 self.assertTrue('Path' in i) | |
300 self.assertTrue('Seq' in i) | |
301 if c['Done']: | |
302 break | |
303 | |
304 self.assertEqual(2 * 50, countInstances) | |
305 self.assertEqual(2 * 1, countPatients) | |
306 self.assertEqual(2 * 1, countStudies) | |
307 self.assertEqual(2 * 2, countSeries) | |
308 self.assertEqual(0, completed) | |
309 | |
310 | |
311 def test_archive(self): | |
312 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
313 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') | |
314 | |
315 z = GetArchive(_REMOTE, '/patients/%s/archive' % DoGet(_REMOTE, '/patients')[0]) | |
316 self.assertEqual(2, len(z.namelist())) | |
317 | |
318 z = GetArchive(_REMOTE, '/studies/%s/archive' % DoGet(_REMOTE, '/studies')[0]) | |
319 self.assertEqual(2, len(z.namelist())) | |
320 | |
321 z = GetArchive(_REMOTE, '/series/%s/archive' % DoGet(_REMOTE, '/series')[0]) | |
322 self.assertEqual(1, len(z.namelist())) | |
323 | |
324 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
325 | |
326 z = GetArchive(_REMOTE, '/patients/%s/archive' % DoGet(_REMOTE, '/patients')[0]) | |
327 self.assertEqual(2, len(z.namelist())) | |
328 | |
329 | |
330 def test_media_archive(self): | |
331 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
332 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') | |
333 | |
334 z = GetArchive(_REMOTE, '/patients/%s/media' % DoGet(_REMOTE, '/patients')[0]) | |
335 self.assertEqual(3, len(z.namelist())) | |
336 self.assertTrue('IMAGES/IM0' in z.namelist()) | |
337 self.assertTrue('IMAGES/IM1' in z.namelist()) | |
338 self.assertTrue('DICOMDIR' in z.namelist()) | |
339 | |
340 try: | |
341 os.remove('/tmp/DICOMDIR') | |
342 except: | |
343 # The file does not exist | |
344 pass | |
345 | |
346 z.extract('DICOMDIR', '/tmp') | |
347 a = subprocess.check_output([ 'dciodvfy', '/tmp/DICOMDIR' ], | |
348 stderr = subprocess.STDOUT).split('\n') | |
349 self.assertEqual(3, len(a)) | |
350 self.assertTrue(a[0].startswith('Warning')) | |
351 self.assertEqual('BasicDirectory', a[1]) | |
352 self.assertEqual('', a[2]) | |
353 | |
354 a = subprocess.check_output([ 'dcentvfy', '/tmp/DICOMDIR' ], | |
355 stderr = subprocess.STDOUT).split('\n') | |
356 self.assertEqual(1, len(a)) | |
357 self.assertEqual('', a[0]) | |
358 | |
359 a = subprocess.check_output([ 'dcm2xml', '/tmp/DICOMDIR' ]) | |
360 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081908590448738', a) != None) | |
361 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081909113806560', a) != None) | |
362 | |
363 os.remove('/tmp/DICOMDIR') |