Commit 49e9ed94 authored by moto's avatar moto Committed by Facebook GitHub Bot
Browse files

Disable some tests that need libsox (#3494)

Summary:
In preparation for https://github.com/pytorch/audio/pull/3082

Disable those FFmpeg tests that depend on sox CLI. These tests need to be updated or removed so as not to use sox CLI.

Auto-skip some sox tests if decoder/encoder are not available

Pull Request resolved: https://github.com/pytorch/audio/pull/3494

Differential Revision: D47761948

Pulled By: mthrok

fbshipit-source-id: 3a48d7f280f8376a48d223947dd41a7cdc8cbc30
parent e483a67a
...@@ -49,6 +49,7 @@ jobs: ...@@ -49,6 +49,7 @@ jobs:
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_ON_PYTHON_310=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_ON_PYTHON_310=true
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_AUDIO_OUT_DEVICE=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_AUDIO_OUT_DEVICE=true
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MACOS=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MACOS=true
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_TEMPORARY_DISABLED=true
echo '::endgroup::' echo '::endgroup::'
set -euxo pipefail set -euxo pipefail
......
...@@ -48,6 +48,7 @@ jobs: ...@@ -48,6 +48,7 @@ jobs:
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_ON_PYTHON_310=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_ON_PYTHON_310=true
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_sentencepiece=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_sentencepiece=true
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_AUDIO_OUT_DEVICE=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_AUDIO_OUT_DEVICE=true
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_TEMPORARY_DISABLED=true
echo '::endgroup::' echo '::endgroup::'
set -euxo pipefail set -euxo pipefail
......
...@@ -11,6 +11,7 @@ from torchaudio.io._compat import _parse_save_args ...@@ -11,6 +11,7 @@ from torchaudio.io._compat import _parse_save_args
from torchaudio_unittest.backend.dispatcher.sox.common import name_func from torchaudio_unittest.backend.dispatcher.sox.common import name_func
from torchaudio_unittest.common_utils import ( from torchaudio_unittest.common_utils import (
disabledInCI,
get_asset_path, get_asset_path,
get_wav_data, get_wav_data,
HttpServerMixin, HttpServerMixin,
...@@ -535,6 +536,7 @@ class Unseekable: ...@@ -535,6 +536,7 @@ class Unseekable:
return self.fileobj.read(n) return self.fileobj.read(n)
@disabledInCI
@skipIfNoFFmpeg @skipIfNoFFmpeg
@skipIfNoExec("sox") @skipIfNoExec("sox")
@skipIfNoModule("requests") @skipIfNoModule("requests")
......
...@@ -12,6 +12,7 @@ from torchaudio.io._compat import _parse_save_args ...@@ -12,6 +12,7 @@ from torchaudio.io._compat import _parse_save_args
from torchaudio_unittest.backend.dispatcher.sox.common import get_enc_params, name_func from torchaudio_unittest.backend.dispatcher.sox.common import get_enc_params, name_func
from torchaudio_unittest.common_utils import ( from torchaudio_unittest.common_utils import (
disabledInCI,
get_wav_data, get_wav_data,
load_wav, load_wav,
nested_params, nested_params,
...@@ -147,6 +148,7 @@ class SaveTestBase(TempDirMixin, TorchaudioTestCase): ...@@ -147,6 +148,7 @@ class SaveTestBase(TempDirMixin, TorchaudioTestCase):
self.assertEqual(found, expected) self.assertEqual(found, expected)
@disabledInCI
@skipIfNoExec("sox") @skipIfNoExec("sox")
@skipIfNoExec("ffmpeg") @skipIfNoExec("ffmpeg")
@skipIfNoFFmpeg @skipIfNoFFmpeg
...@@ -396,6 +398,7 @@ class TestSaveParams(TempDirMixin, PytorchTestCase): ...@@ -396,6 +398,7 @@ class TestSaveParams(TempDirMixin, PytorchTestCase):
self.assertEqual(data, expected) self.assertEqual(data, expected)
@disabledInCI
@skipIfNoExec("sox") @skipIfNoExec("sox")
@skipIfNoFFmpeg @skipIfNoFFmpeg
class TestSaveNonExistingDirectory(PytorchTestCase): class TestSaveNonExistingDirectory(PytorchTestCase):
......
...@@ -7,6 +7,7 @@ from torchaudio._backend.utils import get_info_func ...@@ -7,6 +7,7 @@ from torchaudio._backend.utils import get_info_func
from torchaudio._internal import module_utils as _mod_utils from torchaudio._internal import module_utils as _mod_utils
from torchaudio_unittest.backend.common import get_encoding from torchaudio_unittest.backend.common import get_encoding
from torchaudio_unittest.common_utils import ( from torchaudio_unittest.common_utils import (
disabledInCI,
get_asset_path, get_asset_path,
get_wav_data, get_wav_data,
HttpServerMixin, HttpServerMixin,
...@@ -15,6 +16,7 @@ from torchaudio_unittest.common_utils import ( ...@@ -15,6 +16,7 @@ from torchaudio_unittest.common_utils import (
skipIfNoExec, skipIfNoExec,
skipIfNoModule, skipIfNoModule,
skipIfNoSox, skipIfNoSox,
skipIfNoSoxDecoder,
sox_utils, sox_utils,
TempDirMixin, TempDirMixin,
) )
...@@ -178,6 +180,7 @@ class TestInfo(TempDirMixin, PytorchTestCase): ...@@ -178,6 +180,7 @@ class TestInfo(TempDirMixin, PytorchTestCase):
assert info.bits_per_sample == bits_per_sample assert info.bits_per_sample == bits_per_sample
assert info.encoding == get_encoding("amb", dtype) assert info.encoding == get_encoding("amb", dtype)
@skipIfNoSoxDecoder("amr-nb")
def test_amr_nb(self): def test_amr_nb(self):
"""`self._info` can check amr-nb file correctly""" """`self._info` can check amr-nb file correctly"""
duration = 1 duration = 1
...@@ -256,7 +259,8 @@ class TestInfo(TempDirMixin, PytorchTestCase): ...@@ -256,7 +259,8 @@ class TestInfo(TempDirMixin, PytorchTestCase):
assert info.encoding == "PCM_S" assert info.encoding == "PCM_S"
@skipIfNoSox @disabledInCI
@skipIfNoSoxDecoder("opus")
class TestInfoOpus(PytorchTestCase): class TestInfoOpus(PytorchTestCase):
_info = partial(get_info_func(), backend="sox") _info = partial(get_info_func(), backend="sox")
......
...@@ -13,6 +13,7 @@ from torchaudio_unittest.common_utils import ( ...@@ -13,6 +13,7 @@ from torchaudio_unittest.common_utils import (
save_wav, save_wav,
skipIfNoExec, skipIfNoExec,
skipIfNoSox, skipIfNoSox,
skipIfNoSoxDecoder,
sox_utils, sox_utils,
TempDirMixin, TempDirMixin,
) )
...@@ -237,6 +238,7 @@ class TestLoad(LoadTestBase): ...@@ -237,6 +238,7 @@ class TestLoad(LoadTestBase):
), ),
name_func=name_func, name_func=name_func,
) )
@skipIfNoSoxDecoder("opus")
def test_opus(self, bitrate, num_channels, compression_level): def test_opus(self, bitrate, num_channels, compression_level):
"""`sox_io_backend.load` can load opus file correctly.""" """`sox_io_backend.load` can load opus file correctly."""
ops_path = get_asset_path("io", f"{bitrate}_{compression_level}_{num_channels}ch.opus") ops_path = get_asset_path("io", f"{bitrate}_{compression_level}_{num_channels}ch.opus")
...@@ -281,6 +283,7 @@ class TestLoad(LoadTestBase): ...@@ -281,6 +283,7 @@ class TestLoad(LoadTestBase):
"amb", sample_rate, num_channels, bit_depth=bit_depth, duration=1, encoding=encoding, normalize=normalize "amb", sample_rate, num_channels, bit_depth=bit_depth, duration=1, encoding=encoding, normalize=normalize
) )
@skipIfNoSoxDecoder("amr-nb")
def test_amr_nb(self): def test_amr_nb(self):
"""`sox_io_backend.load` can load amr_nb format correctly.""" """`sox_io_backend.load` can load amr_nb format correctly."""
self.assert_format("amr-nb", sample_rate=8000, num_channels=1, bit_depth=32, duration=1) self.assert_format("amr-nb", sample_rate=8000, num_channels=1, bit_depth=32, duration=1)
......
...@@ -13,6 +13,7 @@ from torchaudio_unittest.common_utils import ( ...@@ -13,6 +13,7 @@ from torchaudio_unittest.common_utils import (
save_wav, save_wav,
skipIfNoExec, skipIfNoExec,
skipIfNoSox, skipIfNoSox,
skipIfNoSoxEncoder,
sox_utils, sox_utils,
TempDirMixin, TempDirMixin,
TorchaudioTestCase, TorchaudioTestCase,
...@@ -253,6 +254,7 @@ class SaveTest(SaveTestBase): ...@@ -253,6 +254,7 @@ class SaveTest(SaveTestBase):
encoding, bits_per_sample = enc_params encoding, bits_per_sample = enc_params
self.assert_save_consistency("amb", encoding=encoding, bits_per_sample=bits_per_sample, test_mode="path") self.assert_save_consistency("amb", encoding=encoding, bits_per_sample=bits_per_sample, test_mode="path")
@skipIfNoSoxEncoder("amr-nb")
def test_save_amr_nb(self): def test_save_amr_nb(self):
self.assert_save_consistency("amr-nb", num_channels=1, test_mode="path") self.assert_save_consistency("amr-nb", num_channels=1, test_mode="path")
...@@ -269,12 +271,18 @@ class SaveTest(SaveTestBase): ...@@ -269,12 +271,18 @@ class SaveTest(SaveTestBase):
("flac",), ("flac",),
("vorbis",), ("vorbis",),
("sph", "PCM_S", 16), ("sph", "PCM_S", 16),
("amr-nb",),
("amb", "PCM_S", 16), ("amb", "PCM_S", 16),
], ],
name_func=name_func, name_func=name_func,
) )
def test_save_large(self, format, encoding=None, bits_per_sample=None): def test_save_large(self, format, encoding=None, bits_per_sample=None):
self._test_save_large(format, encoding, bits_per_sample)
@skipIfNoSoxEncoder("amr-nb")
def test_save_large_amr_nb(self):
self._test_save_large("amr-nb")
def _test_save_large(self, format, encoding=None, bits_per_sample=None):
"""`self._save` can save large files.""" """`self._save` can save large files."""
sample_rate = 8000 sample_rate = 8000
one_hour = 60 * 60 * sample_rate one_hour = 60 * 60 * sample_rate
......
...@@ -10,6 +10,7 @@ from torchaudio_unittest.common_utils import ( ...@@ -10,6 +10,7 @@ from torchaudio_unittest.common_utils import (
save_wav, save_wav,
skipIfNoExec, skipIfNoExec,
skipIfNoSox, skipIfNoSox,
skipIfNoSoxDecoder,
sox_utils, sox_utils,
TempDirMixin, TempDirMixin,
) )
...@@ -196,6 +197,7 @@ class TestInfo(TempDirMixin, PytorchTestCase): ...@@ -196,6 +197,7 @@ class TestInfo(TempDirMixin, PytorchTestCase):
assert info.bits_per_sample == bits_per_sample assert info.bits_per_sample == bits_per_sample
assert info.encoding == get_encoding("amb", dtype) assert info.encoding == get_encoding("amb", dtype)
@skipIfNoSoxDecoder("amr-nb")
def test_amr_nb(self): def test_amr_nb(self):
"""`sox_io_backend.info` can check amr-nb file correctly""" """`sox_io_backend.info` can check amr-nb file correctly"""
duration = 1 duration = 1
......
...@@ -12,6 +12,7 @@ from torchaudio_unittest.common_utils import ( ...@@ -12,6 +12,7 @@ from torchaudio_unittest.common_utils import (
save_wav, save_wav,
skipIfNoExec, skipIfNoExec,
skipIfNoSox, skipIfNoSox,
skipIfNoSoxDecoder,
sox_utils, sox_utils,
TempDirMixin, TempDirMixin,
) )
...@@ -234,6 +235,7 @@ class TestLoad(LoadTestBase): ...@@ -234,6 +235,7 @@ class TestLoad(LoadTestBase):
), ),
name_func=name_func, name_func=name_func,
) )
@skipIfNoSoxDecoder("opus")
def test_opus(self, bitrate, num_channels, compression_level): def test_opus(self, bitrate, num_channels, compression_level):
"""`sox_io_backend.load` can load opus file correctly.""" """`sox_io_backend.load` can load opus file correctly."""
ops_path = get_asset_path("io", f"{bitrate}_{compression_level}_{num_channels}ch.opus") ops_path = get_asset_path("io", f"{bitrate}_{compression_level}_{num_channels}ch.opus")
...@@ -278,6 +280,7 @@ class TestLoad(LoadTestBase): ...@@ -278,6 +280,7 @@ class TestLoad(LoadTestBase):
"amb", sample_rate, num_channels, bit_depth=bit_depth, duration=1, encoding=encoding, normalize=normalize "amb", sample_rate, num_channels, bit_depth=bit_depth, duration=1, encoding=encoding, normalize=normalize
) )
@skipIfNoSoxDecoder("amr-nb")
def test_amr_nb(self): def test_amr_nb(self):
"""`sox_io_backend.load` can load amr_nb format correctly.""" """`sox_io_backend.load` can load amr_nb format correctly."""
self.assert_format("amr-nb", sample_rate=8000, num_channels=1, bit_depth=32, duration=1) self.assert_format("amr-nb", sample_rate=8000, num_channels=1, bit_depth=32, duration=1)
......
...@@ -11,6 +11,7 @@ from torchaudio_unittest.common_utils import ( ...@@ -11,6 +11,7 @@ from torchaudio_unittest.common_utils import (
save_wav, save_wav,
skipIfNoExec, skipIfNoExec,
skipIfNoSox, skipIfNoSox,
skipIfNoSoxEncoder,
sox_utils, sox_utils,
TempDirMixin, TempDirMixin,
TorchaudioTestCase, TorchaudioTestCase,
...@@ -265,6 +266,7 @@ class SaveTest(SaveTestBase): ...@@ -265,6 +266,7 @@ class SaveTest(SaveTestBase):
7, 7,
], ],
) )
@skipIfNoSoxEncoder("amr-nb")
def test_save_amr_nb(self, bit_rate): def test_save_amr_nb(self, bit_rate):
self.assert_save_consistency("amr-nb", compression=bit_rate, num_channels=1) self.assert_save_consistency("amr-nb", compression=bit_rate, num_channels=1)
...@@ -281,12 +283,18 @@ class SaveTest(SaveTestBase): ...@@ -281,12 +283,18 @@ class SaveTest(SaveTestBase):
("flac",), ("flac",),
("vorbis",), ("vorbis",),
("sph", "PCM_S", 16), ("sph", "PCM_S", 16),
("amr-nb",),
("amb", "PCM_S", 16), ("amb", "PCM_S", 16),
], ],
name_func=name_func, name_func=name_func,
) )
def test_save_large(self, format, encoding=None, bits_per_sample=None): def test_save_large(self, format, encoding=None, bits_per_sample=None):
self._test_save_large(format, encoding, bits_per_sample)
@skipIfNoSoxEncoder("amr-nb")
def test_save_large_amr_nb(self):
self._test_save_large("amr-nb")
def _test_save_large(self, format, encoding=None, bits_per_sample=None):
"""`sox_io_backend.save` can save large files.""" """`sox_io_backend.save` can save large files."""
sample_rate = 8000 sample_rate = 8000
one_hour = 60 * 60 * sample_rate one_hour = 60 * 60 * sample_rate
......
...@@ -18,6 +18,8 @@ from .case_utils import ( ...@@ -18,6 +18,8 @@ from .case_utils import (
skipIfNoQengine, skipIfNoQengine,
skipIfNoRIR, skipIfNoRIR,
skipIfNoSox, skipIfNoSox,
skipIfNoSoxDecoder,
skipIfNoSoxEncoder,
skipIfPy310, skipIfPy310,
skipIfRocm, skipIfRocm,
TempDirMixin, TempDirMixin,
...@@ -53,7 +55,8 @@ __all__ = [ ...@@ -53,7 +55,8 @@ __all__ = [
"skipIfNoModule", "skipIfNoModule",
"skipIfNoRIR", "skipIfNoRIR",
"skipIfNoSox", "skipIfNoSox",
"skipIfNoSoxBackend", "skipIfNoSoxDecoder",
"skipIfNoSoxEncoder",
"skipIfRocm", "skipIfRocm",
"skipIfNoQengine", "skipIfNoQengine",
"skipIfNoFFmpeg", "skipIfNoFFmpeg",
......
...@@ -234,6 +234,24 @@ skipIfNoSox = _skipIf( ...@@ -234,6 +234,24 @@ skipIfNoSox = _skipIf(
reason="Sox features are not available.", reason="Sox features are not available.",
key="NO_SOX", key="NO_SOX",
) )
def skipIfNoSoxDecoder(ext):
return _skipIf(
not torchaudio._extension._SOX_INITIALIZED or ext not in torchaudio.utils.sox_utils.list_read_formats(),
f'sox does not handle "{ext}" for read.',
key="NO_SOX_DECODER",
)
def skipIfNoSoxEncoder(ext):
return _skipIf(
not torchaudio._extension._SOX_INITIALIZED or ext not in torchaudio.utils.sox_utils.list_write_formats(),
f'sox does not handle "{ext}" for write.',
key="NO_SOX_ENCODER",
)
skipIfNoRIR = _skipIf( skipIfNoRIR = _skipIf(
not torchaudio._extension._IS_RIR_AVAILABLE, not torchaudio._extension._IS_RIR_AVAILABLE,
reason="RIR features are not available.", reason="RIR features are not available.",
......
...@@ -94,8 +94,9 @@ class TestSoxEffectsDataset(TempDirMixin, PytorchTestCase): ...@@ -94,8 +94,9 @@ class TestSoxEffectsDataset(TempDirMixin, PytorchTestCase):
loader = torch.utils.data.DataLoader( loader = torch.utils.data.DataLoader(
dataset, dataset,
batch_size=32, batch_size=32,
num_workers=16, num_workers=4,
worker_init_fn=init_random_seed, worker_init_fn=init_random_seed,
multiprocessing_context=torch.multiprocessing.get_context("spawn"),
) )
for batch in loader: for batch in loader:
assert batch.shape == (32, 2, 2 * sample_rate) assert batch.shape == (32, 2, 2 * sample_rate)
...@@ -115,8 +116,9 @@ class TestSoxEffectsDataset(TempDirMixin, PytorchTestCase): ...@@ -115,8 +116,9 @@ class TestSoxEffectsDataset(TempDirMixin, PytorchTestCase):
loader = torch.utils.data.DataLoader( loader = torch.utils.data.DataLoader(
dataset, dataset,
batch_size=32, batch_size=32,
num_workers=16, num_workers=4,
worker_init_fn=init_random_seed, worker_init_fn=init_random_seed,
multiprocessing_context=torch.multiprocessing.get_context("spawn"),
) )
for batch in loader: for batch in loader:
assert batch.shape == (32, 2, 2 * sample_rate) assert batch.shape == (32, 2, 2 * sample_rate)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment