History

python/tests/test_sink.py: add more tests, clean up created files

Paul Brossier committed 12 years ago

Commit ab352621 parent 18d8bef2 files · +62 −18Browse files

Showing the changes to python/tests (2 of 2 files). Show all

Unified · Split

2 files
  1. python/tests/test_sink.py +55 −15
  2. python/tests/utils.py +7 −3
python/tests/test_sink.py+55−15
@@ -3,54 +3,94 @@ · 2 unmodified lines
33 from numpy.testing import TestCase, assert_equal, assert_almost_equal
44 from aubio import fvec, source, sink
55 from numpy import array
6−from utils import list_all_sounds
6+from utils import list_all_sounds, get_tmp_sink_path, del_tmp_sink_path
77
88 list_of_sounds = list_all_sounds('sounds')
99 path = None
1010
11+many_files = 300 # 256 opened files is too much
12+
1113 class aubio_sink_test_case(TestCase):
1214
1315 def setUp(self):
14− if not len(list_of_sounds): self.skipTest('add some sound files in \'python/tests/sounds\'')
16+ if not len(list_of_sounds):
17+ self.skipTest('add some sound files in \'python/tests/sounds\'')
1518
1619 def test_many_sinks(self):
17− for i in range(100):
18− g = sink('/tmp/f.wav', 0)
19− write = 256
20+ from tempfile import mkdtemp
21+ import os.path
22+ import shutil
23+ tmpdir = mkdtemp()
24+ sink_list = []
25+ for i in range(many_files):
26+ path = os.path.join(tmpdir, 'f-' + str(i) + '.wav')
27+ g = sink(path, 0)
28+ sink_list.append(g)
29+ write = 32
2030 for n in range(200):
2131 vec = fvec(write)
2232 g(vec, write)
23− del g
33+ g.close()
34+ shutil.rmtree(tmpdir)
35+
36+ def test_many_sinks_not_closed(self):
37+ from tempfile import mkdtemp
38+ import os.path
39+ import shutil
40+ tmpdir = mkdtemp()
41+ sink_list = []
42+ try:
43+ for i in range(many_files):
44+ path = os.path.join(tmpdir, 'f-' + str(i) + '.wav')
45+ g = sink(path, 0)
46+ sink_list.append(g)
47+ write = 256
48+ for n in range(200):
49+ vec = fvec(write)
50+ g(vec, write)
51+ except StandardError:
52+ pass
53+ else:
54+ self.fail("does not fail on too many files open")
55+ for g in sink_list:
56+ g.close()
57+ shutil.rmtree(tmpdir)
2458
2559 def test_read(self):
2660 for path in list_of_sounds:
2761 for samplerate, hop_size in zip([0, 44100, 8000, 32000], [512, 1024, 64, 256]):
2862 f = source(path, samplerate, hop_size)
2963 if samplerate == 0: samplerate = f.samplerate
30− g = sink('/tmp/f.wav', samplerate)
64+ sink_path = get_tmp_sink_path()
65+ g = sink(sink_path, samplerate)
3166 total_frames = 0
3267 while True:
3368 vec, read = f()
3469 g(vec, read)
3570 total_frames += read
3671 if read < f.hop_size: break
37− print "read", "%.2fs" % (total_frames / float(f.samplerate) ),
38− print "(", total_frames, "frames", "in",
39− print total_frames / f.hop_size, "blocks", "at", "%dHz" % f.samplerate, ")",
40− print "from", f.uri,
41− print "to", g.uri
42− #del f, g
72+ if 0:
73+ print "read", "%.2fs" % (total_frames / float(f.samplerate) ),
74+ print "(", total_frames, "frames", "in",
75+ print total_frames / f.hop_size, "blocks", "at", "%dHz" % f.samplerate, ")",
76+ print "from", f.uri,
77+ print "to", g.uri
78+ del_tmp_sink_path(sink_path)
4379
4480 def test_close_file(self):
4581 samplerate = 44100
46− g = sink('/tmp/f.wav', samplerate)
82+ sink_path = get_tmp_sink_path()
83+ g = sink(sink_path, samplerate)
4784 g.close()
85+ del_tmp_sink_path(sink_path)
4886
4987 def test_close_file_twice(self):
5088 samplerate = 44100
51− g = sink('/tmp/f.wav', samplerate)
89+ sink_path = get_tmp_sink_path()
90+ g = sink(sink_path, samplerate)
5291 g.close()
5392 g.close()
93+ del_tmp_sink_path(sink_path)
5494
5595 if __name__ == '__main__':
5696 from unittest import main
python/tests/utils.py+7−3
@@ -19,12 +19,16 @@ def get_default_test_sound(TestCase, rel_dir = 'sounds'): · 18 unmodified lines
1919 else:
2020 return all_sounds[0]
2121
22−def get_tmp_sink_name():
22+def get_tmp_sink_path():
2323 from tempfile import mkstemp
2424 import os
25− fd, name = mkstemp()
25+ fd, path = mkstemp()
2626 os.close(fd)
27− return name
27+ return path
28+
29+def del_tmp_sink_path(path):
30+ import os
31+ os.unlink(path)
2832
2933 def array_from_yaml_file(filename):
3034 import yaml

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t