need to force flush the RAM in between pytest calls and avoid multiprocess

This commit is contained in:
mmoussallam
2020-06-26 11:03:41 +02:00
parent 39af9502ab
commit caf8f393bd
2 changed files with 50 additions and 49 deletions

View File

@@ -27,7 +27,7 @@ build-gpu: clean
python3 setup.py sdist python3 setup.py sdist
test: test:
$(PYTEST_CMD) $(foreach file, $(wildcard tests/test_*.py), $(PYTEST_CMD) $(file);)
deploy: deploy:

View File

@@ -42,67 +42,68 @@ print("RUNNING TESTS WITH TF VERSION {}".format(tf.__version__))
@pytest.mark.parametrize('test_file, configuration, backend', TEST_CONFIGURATIONS) @pytest.mark.parametrize('test_file, configuration, backend', TEST_CONFIGURATIONS)
def test_separate(test_file, configuration, backend): def test_separate(test_file, configuration, backend):
""" Test separation from raw data. """ """ Test separation from raw data. """
with tf.Session() as sess: tf.reset_default_graph()
instruments = MODEL_TO_INST[configuration] instruments = MODEL_TO_INST[configuration]
adapter = get_default_audio_adapter() adapter = get_default_audio_adapter()
waveform, _ = adapter.load(test_file) waveform, _ = adapter.load(test_file)
separator = Separator(configuration, stft_backend=backend) separator = Separator(configuration, stft_backend=backend, multiprocess=False)
prediction = separator.separate(waveform, test_file) prediction = separator.separate(waveform, test_file)
assert len(prediction) == len(instruments) assert len(prediction) == len(instruments)
for instrument in instruments: for instrument in instruments:
assert instrument in prediction assert instrument in prediction
for instrument in instruments: for instrument in instruments:
track = prediction[instrument] track = prediction[instrument]
assert waveform.shape[:-1] == track.shape[:-1] assert waveform.shape[:-1] == track.shape[:-1]
assert not np.allclose(waveform, track) assert not np.allclose(waveform, track)
for compared in instruments: for compared in instruments:
if instrument != compared: if instrument != compared:
assert not np.allclose(track, prediction[compared]) assert not np.allclose(track, prediction[compared])
@pytest.mark.parametrize('test_file, configuration, backend', TEST_CONFIGURATIONS) @pytest.mark.parametrize('test_file, configuration, backend', TEST_CONFIGURATIONS)
def test_separate_to_file(test_file, configuration, backend): def test_separate_to_file(test_file, configuration, backend):
""" Test file based separation. """ """ Test file based separation. """
with tf.Session() as sess: tf.reset_default_graph()
instruments = MODEL_TO_INST[configuration] instruments = MODEL_TO_INST[configuration]
separator = Separator(configuration, stft_backend=backend) separator = Separator(configuration, stft_backend=backend, multiprocess=False)
name = splitext(basename(test_file))[0] name = splitext(basename(test_file))[0]
with TemporaryDirectory() as directory: with TemporaryDirectory() as directory:
separator.separate_to_file( separator.separate_to_file(
test_file, test_file,
directory) directory)
for instrument in instruments: for instrument in instruments:
assert exists(join( assert exists(join(
directory, directory,
'{}/{}.wav'.format(name, instrument))) '{}/{}.wav'.format(name, instrument)))
@pytest.mark.parametrize('test_file, configuration, backend', TEST_CONFIGURATIONS) @pytest.mark.parametrize('test_file, configuration, backend', TEST_CONFIGURATIONS)
def test_filename_format(test_file, configuration, backend): def test_filename_format(test_file, configuration, backend):
""" Test custom filename format. """ """ Test custom filename format. """
with tf.Session() as sess: tf.reset_default_graph()
instruments = MODEL_TO_INST[configuration] instruments = MODEL_TO_INST[configuration]
separator = Separator(configuration, stft_backend=backend) separator = Separator(configuration, stft_backend=backend, multiprocess=False)
name = splitext(basename(test_file))[0] name = splitext(basename(test_file))[0]
with TemporaryDirectory() as directory: with TemporaryDirectory() as directory:
separator.separate_to_file( separator.separate_to_file(
test_file, test_file,
directory,
filename_format='export/{filename}/{instrument}.{codec}')
for instrument in instruments:
assert exists(join(
directory, directory,
filename_format='export/{filename}/{instrument}.{codec}') 'export/{}/{}.wav'.format(name, instrument)))
for instrument in instruments:
assert exists(join(
directory,
'export/{}/{}.wav'.format(name, instrument)))
@pytest.mark.parametrize('test_file, configuration', MODELS_AND_TEST_FILES) @pytest.mark.parametrize('test_file, configuration', MODELS_AND_TEST_FILES)
def test_filename_conflict(test_file, configuration): def test_filename_conflict(test_file, configuration):
""" Test error handling with static pattern. """ """ Test error handling with static pattern. """
with tf.Session() as sess: tf.reset_default_graph()
separator = Separator(configuration) separator = Separator(configuration, multiprocess=False)
with TemporaryDirectory() as directory: with TemporaryDirectory() as directory:
with pytest.raises(SpleeterError): with pytest.raises(SpleeterError):
separator.separate_to_file( separator.separate_to_file(
test_file, test_file,
directory, directory,
filename_format='I wanna be your lover') filename_format='I wanna be your lover')