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