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:
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_MACOS=true
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_TEMPORARY_DISABLED=true
echo '::endgroup::'
set -euxo pipefail
......
......@@ -48,6 +48,7 @@ jobs:
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_AUDIO_OUT_DEVICE=true
export TORCHAUDIO_TEST_ALLOW_SKIP_IF_TEMPORARY_DISABLED=true
echo '::endgroup::'
set -euxo pipefail
......
......@@ -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.common_utils import (
disabledInCI,
get_asset_path,
get_wav_data,
HttpServerMixin,
......@@ -535,6 +536,7 @@ class Unseekable:
return self.fileobj.read(n)
@disabledInCI
@skipIfNoFFmpeg
@skipIfNoExec("sox")
@skipIfNoModule("requests")
......
......@@ -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.common_utils import (
disabledInCI,
get_wav_data,
load_wav,
nested_params,
......@@ -147,6 +148,7 @@ class SaveTestBase(TempDirMixin, TorchaudioTestCase):
self.assertEqual(found, expected)
@disabledInCI
@skipIfNoExec("sox")
@skipIfNoExec("ffmpeg")
@skipIfNoFFmpeg
......@@ -396,6 +398,7 @@ class TestSaveParams(TempDirMixin, PytorchTestCase):
self.assertEqual(data, expected)
@disabledInCI
@skipIfNoExec("sox")
@skipIfNoFFmpeg
class TestSaveNonExistingDirectory(PytorchTestCase):
......
......@@ -7,6 +7,7 @@ from torchaudio._backend.utils import get_info_func
from torchaudio._internal import module_utils as _mod_utils
from torchaudio_unittest.backend.common import get_encoding
from torchaudio_unittest.common_utils import (
disabledInCI,
get_asset_path,
get_wav_data,
HttpServerMixin,
......@@ -15,6 +16,7 @@ from torchaudio_unittest.common_utils import (
skipIfNoExec,
skipIfNoModule,
skipIfNoSox,
skipIfNoSoxDecoder,
sox_utils,
TempDirMixin,
)
......@@ -178,6 +180,7 @@ class TestInfo(TempDirMixin, PytorchTestCase):
assert info.bits_per_sample == bits_per_sample
assert info.encoding == get_encoding("amb", dtype)
@skipIfNoSoxDecoder("amr-nb")
def test_amr_nb(self):
"""`self._info` can check amr-nb file correctly"""
duration = 1
......@@ -256,7 +259,8 @@ class TestInfo(TempDirMixin, PytorchTestCase):
assert info.encoding == "PCM_S"
@skipIfNoSox
@disabledInCI
@skipIfNoSoxDecoder("opus")
class TestInfoOpus(PytorchTestCase):
_info = partial(get_info_func(), backend="sox")
......
......@@ -13,6 +13,7 @@ from torchaudio_unittest.common_utils import (
save_wav,
skipIfNoExec,
skipIfNoSox,
skipIfNoSoxDecoder,
sox_utils,
TempDirMixin,
)
......@@ -237,6 +238,7 @@ class TestLoad(LoadTestBase):
),
name_func=name_func,
)
@skipIfNoSoxDecoder("opus")
def test_opus(self, bitrate, num_channels, compression_level):
"""`sox_io_backend.load` can load opus file correctly."""
ops_path = get_asset_path("io", f"{bitrate}_{compression_level}_{num_channels}ch.opus")
......@@ -281,6 +283,7 @@ class TestLoad(LoadTestBase):
"amb", sample_rate, num_channels, bit_depth=bit_depth, duration=1, encoding=encoding, normalize=normalize
)
@skipIfNoSoxDecoder("amr-nb")
def test_amr_nb(self):
"""`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)
......
......@@ -13,6 +13,7 @@ from torchaudio_unittest.common_utils import (
save_wav,
skipIfNoExec,
skipIfNoSox,
skipIfNoSoxEncoder,
sox_utils,
TempDirMixin,
TorchaudioTestCase,
......@@ -253,6 +254,7 @@ class SaveTest(SaveTestBase):
encoding, bits_per_sample = enc_params
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):
self.assert_save_consistency("amr-nb", num_channels=1, test_mode="path")
......@@ -269,12 +271,18 @@ class SaveTest(SaveTestBase):
("flac",),
("vorbis",),
("sph", "PCM_S", 16),
("amr-nb",),
("amb", "PCM_S", 16),
],
name_func=name_func,
)
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."""
sample_rate = 8000
one_hour = 60 * 60 * sample_rate
......
......@@ -10,6 +10,7 @@ from torchaudio_unittest.common_utils import (
save_wav,
skipIfNoExec,
skipIfNoSox,
skipIfNoSoxDecoder,
sox_utils,
TempDirMixin,
)
......@@ -196,6 +197,7 @@ class TestInfo(TempDirMixin, PytorchTestCase):
assert info.bits_per_sample == bits_per_sample
assert info.encoding == get_encoding("amb", dtype)
@skipIfNoSoxDecoder("amr-nb")
def test_amr_nb(self):
"""`sox_io_backend.info` can check amr-nb file correctly"""
duration = 1
......
......@@ -12,6 +12,7 @@ from torchaudio_unittest.common_utils import (
save_wav,
skipIfNoExec,
skipIfNoSox,
skipIfNoSoxDecoder,
sox_utils,
TempDirMixin,
)
......@@ -234,6 +235,7 @@ class TestLoad(LoadTestBase):
),
name_func=name_func,
)
@skipIfNoSoxDecoder("opus")
def test_opus(self, bitrate, num_channels, compression_level):
"""`sox_io_backend.load` can load opus file correctly."""
ops_path = get_asset_path("io", f"{bitrate}_{compression_level}_{num_channels}ch.opus")
......@@ -278,6 +280,7 @@ class TestLoad(LoadTestBase):
"amb", sample_rate, num_channels, bit_depth=bit_depth, duration=1, encoding=encoding, normalize=normalize
)
@skipIfNoSoxDecoder("amr-nb")
def test_amr_nb(self):
"""`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)
......
......@@ -11,6 +11,7 @@ from torchaudio_unittest.common_utils import (
save_wav,
skipIfNoExec,
skipIfNoSox,
skipIfNoSoxEncoder,
sox_utils,
TempDirMixin,
TorchaudioTestCase,
......@@ -265,6 +266,7 @@ class SaveTest(SaveTestBase):
7,
],
)
@skipIfNoSoxEncoder("amr-nb")
def test_save_amr_nb(self, bit_rate):
self.assert_save_consistency("amr-nb", compression=bit_rate, num_channels=1)
......@@ -281,12 +283,18 @@ class SaveTest(SaveTestBase):
("flac",),
("vorbis",),
("sph", "PCM_S", 16),
("amr-nb",),
("amb", "PCM_S", 16),
],
name_func=name_func,
)
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."""
sample_rate = 8000
one_hour = 60 * 60 * sample_rate
......
......@@ -18,6 +18,8 @@ from .case_utils import (
skipIfNoQengine,
skipIfNoRIR,
skipIfNoSox,
skipIfNoSoxDecoder,
skipIfNoSoxEncoder,
skipIfPy310,
skipIfRocm,
TempDirMixin,
......@@ -53,7 +55,8 @@ __all__ = [
"skipIfNoModule",
"skipIfNoRIR",
"skipIfNoSox",
"skipIfNoSoxBackend",
"skipIfNoSoxDecoder",
"skipIfNoSoxEncoder",
"skipIfRocm",
"skipIfNoQengine",
"skipIfNoFFmpeg",
......
......@@ -234,6 +234,24 @@ skipIfNoSox = _skipIf(
reason="Sox features are not available.",
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(
not torchaudio._extension._IS_RIR_AVAILABLE,
reason="RIR features are not available.",
......
......@@ -94,8 +94,9 @@ class TestSoxEffectsDataset(TempDirMixin, PytorchTestCase):
loader = torch.utils.data.DataLoader(
dataset,
batch_size=32,
num_workers=16,
num_workers=4,
worker_init_fn=init_random_seed,
multiprocessing_context=torch.multiprocessing.get_context("spawn"),
)
for batch in loader:
assert batch.shape == (32, 2, 2 * sample_rate)
......@@ -115,8 +116,9 @@ class TestSoxEffectsDataset(TempDirMixin, PytorchTestCase):
loader = torch.utils.data.DataLoader(
dataset,
batch_size=32,
num_workers=16,
num_workers=4,
worker_init_fn=init_random_seed,
multiprocessing_context=torch.multiprocessing.get_context("spawn"),
)
for batch in loader:
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