Mercurial > hg > sonic-annotator
changeset 117:5be4995f4029
Tests (and minor resulting fixes) for remote file download
author | Chris Cannam |
---|---|
date | Wed, 08 Oct 2014 13:14:39 +0100 (2014-10-08) |
parents | 1c0799754670 |
children | 0fe5abb56a6e eb0f3a2029b8 |
files | .hgsubstate runner/FeatureExtractionManager.cpp runner/main.cpp tests/audio/6clicks.ogg tests/audio/playlist.m3u tests/expected/transforms-summaries-percussiononsets-all-files.csv tests/expected/transforms-summaries-percussiononsets-playlist.csv tests/test-multiple-audio.sh |
diffstat | 8 files changed, 81 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgsubstate Fri Oct 03 15:42:55 2014 +0100 +++ b/.hgsubstate Wed Oct 08 13:14:39 2014 +0100 @@ -1,2 +1,2 @@ d16f0fd6db6104d87882bc43788a3bb1b0f8c528 dataquay -7a8f7a553b37bf8054cff054a4561271f897506e svcore +60e2927b1475b752d14615da9516d893332878a3 svcore
--- a/runner/FeatureExtractionManager.cpp Fri Oct 03 15:42:55 2014 +0100 +++ b/runner/FeatureExtractionManager.cpp Wed Oct 08 13:14:39 2014 +0100 @@ -453,7 +453,11 @@ FileSource source(audioSource, &retrievalProgress); if (!source.isAvailable()) { cerr << "ERROR: File or URL \"" << audioSource.toStdString() - << "\" could not be located" << endl; + << "\" could not be located"; + if (source.getErrorString() != "") { + cerr << ": " << source.getErrorString(); + } + cerr << endl; throw FileNotFound(audioSource); }
--- a/runner/main.cpp Fri Oct 03 15:42:55 2014 +0100 +++ b/runner/main.cpp Wed Oct 08 13:14:39 2014 +0100 @@ -354,14 +354,17 @@ { QStringList expanded; foreach (QString path, sources) { - cerr << "expandPlaylists: looking at " << path << endl; if (QFileInfo(path).suffix().toLower() == "m3u") { ProgressPrinter retrievalProgress("Opening playlist file..."); FileSource source(path, &retrievalProgress); if (!source.isAvailable()) { - cerr << "ERROR: File or URL \"" << path.toStdString() - << "\" could not be located" << endl; - throw FileNotFound(path); + // Don't fail or throw an exception here, just keep + // the file in the list -- it will be tested again + // when adding it as a source and that's the proper + // time to fail. All we're concluding here is that it + // isn't a valid playlist + expanded.push_back(path); + continue; } source.waitForData(); PlaylistFileReader reader(source); @@ -728,7 +731,7 @@ } sources = expandPlaylists(sources); - + bool good = true; QSet<QString> badSources;
--- a/tests/audio/playlist.m3u Fri Oct 03 15:42:55 2014 +0100 +++ b/tests/audio/playlist.m3u Wed Oct 08 13:14:39 2014 +0100 @@ -1,2 +1,2 @@ -3clicks8.wav -6clicks8.wav +3clicks.mp3 +6clicks.ogg
--- a/tests/expected/transforms-summaries-percussiononsets-all-files.csv Fri Oct 03 15:42:55 2014 +0100 +++ b/tests/expected/transforms-summaries-percussiononsets-all-files.csv Wed Oct 08 13:14:39 2014 +0100 @@ -14,6 +14,10 @@ ,0.000000000,5.201269840,median,168,"(median value, continuous-time average)" ,0.000000000,5.201269840,mode,0,"(modal value, continuous-time average)" ,0.000000000,5.201269840,mean,677.241,"(mean value, continuous-time average)" +"./audio/6clicks.ogg",0.000000000,10.031020407,mean,166.612,"(mean value, continuous-time average)" +,0.000000000,10.031020407,median,167,"(median value, continuous-time average)" +,0.000000000,10.031020407,mode,170,"(modal value, continuous-time average)" +,0.000000000,10.031020407,mean,713.148,"(mean value, continuous-time average)" "./audio/6clicks8.wav",0.000000000,10.031020407,mean,169.079,"(mean value, continuous-time average)" ,0.000000000,10.031020407,median,169,"(median value, continuous-time average)" ,0.000000000,10.031020407,mode,164,"(modal value, continuous-time average)"
--- a/tests/expected/transforms-summaries-percussiononsets-playlist.csv Fri Oct 03 15:42:55 2014 +0100 +++ b/tests/expected/transforms-summaries-percussiononsets-playlist.csv Wed Oct 08 13:14:39 2014 +0100 @@ -1,8 +1,8 @@ -"3clicks8.wav",0.000000000,5.201269840,mean,162.585,"(mean value, continuous-time average)" -,0.000000000,5.201269840,median,168,"(median value, continuous-time average)" +"3clicks.mp3",0.000000000,5.201269840,mean,164.674,"(mean value, continuous-time average)" +,0.000000000,5.201269840,median,169,"(median value, continuous-time average)" ,0.000000000,5.201269840,mode,0,"(modal value, continuous-time average)" -,0.000000000,5.201269840,mean,677.241,"(mean value, continuous-time average)" -"6clicks8.wav",0.000000000,10.031020407,mean,169.079,"(mean value, continuous-time average)" -,0.000000000,10.031020407,median,169,"(median value, continuous-time average)" -,0.000000000,10.031020407,mode,164,"(modal value, continuous-time average)" -,0.000000000,10.031020407,mean,695.759,"(mean value, continuous-time average)" +,0.000000000,5.201269840,mean,680.411,"(mean value, continuous-time average)" +"6clicks.ogg",0.000000000,10.031020407,mean,166.612,"(mean value, continuous-time average)" +,0.000000000,10.031020407,median,167,"(median value, continuous-time average)" +,0.000000000,10.031020407,mode,170,"(modal value, continuous-time average)" +,0.000000000,10.031020407,mean,713.148,"(mean value, continuous-time average)"
--- a/tests/test-multiple-audio.sh Fri Oct 03 15:42:55 2014 +0100 +++ b/tests/test-multiple-audio.sh Wed Oct 08 13:14:39 2014 +0100 @@ -11,6 +11,11 @@ transform=$mypath/transforms/transforms-summaries-percussiononsets-detectionfunction.n3 +urlbase=http://vamp-plugins.org/sonic-annotator/testfiles + + +# 1. Recursive local directory + # Note, the output here depends on all the audio files present -- we # would have to regenerate it if we added more test audio files. Note # that the -r flag is not supposed to pick up playlist files, only @@ -22,18 +27,25 @@ csvcompare $tmpfile $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and recursive dir option" $tmpfile $expected.csv -# Here we remove any leading path from the audio file in the output, + +# 2. Local playlist file referring to local audio files + +# Here we strip any leading path from the audio file in the output, # because the playlist reader will have resolved files to absolute # paths and those will differ between systems -$r -t $transform -w csv --csv-stdout $mypath/audio/playlist.m3u --summary-only 2>/dev/null | sed 's,^"\.*/[^"]*/,",' > $tmpfile || \ +$r -t $transform -w csv --csv-stdout $mypath/audio/playlist.m3u --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \ fail "Fails to run transform $transform with playlist input" expected=$mypath/expected/transforms-summaries-percussiononsets-playlist csvcompare $tmpfile $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and playlist input" $tmpfile $expected.csv -# Same here, just so we can use the same output comparison file as above -$r -t $transform -w csv --csv-stdout $mypath/audio/3clicks8.wav $mypath/audio/6clicks8.wav --summary-only 2>/dev/null | sed 's,^"\.*/[^"]*/,",' > $tmpfile || \ + +# 3. Multiple files supplied directly on command line + +# Strip paths again, just so we can use the same output comparison +# file as above +$r -t $transform -w csv --csv-stdout $mypath/audio/3clicks.mp3 $mypath/audio/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \ fail "Fails to run transform $transform with 2-file input" expected=$mypath/expected/transforms-summaries-percussiononsets-playlist @@ -41,4 +53,42 @@ faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile $expected.csv +# 4. Remote playlist file referring to remote audio files +$r -t $transform -w csv --csv-stdout $urlbase/playlist.m3u --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \ + fail "Fails to run transform $transform with remote playlist input" + +expected=$mypath/expected/transforms-summaries-percussiononsets-playlist +csvcompare $tmpfile $expected.csv || \ + faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile $expected.csv + + +# 5. Local playlist file referring to mixture of remote and local audio files + +$r -t $transform -w csv --csv-stdout $mypath/audio/remote-playlist.m3u --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \ + fail "Fails to run transform $transform with playlist of remote files" + +expected=$mypath/expected/transforms-summaries-percussiononsets-playlist +csvcompare $tmpfile $expected.csv || \ + faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile $expected.csv + + +# 6. Multiple remote files supplied directly on command line + +$r -t $transform -w csv --csv-stdout $urlbase/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \ + fail "Fails to run transform $transform with 2-file remote input" + +expected=$mypath/expected/transforms-summaries-percussiononsets-playlist +csvcompare $tmpfile $expected.csv || \ + faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile $expected.csv + + +# 7. Mixture of remote and local files supplied on command line + +$r -t $transform -w csv --csv-stdout $mypath/audio/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null | sed 's,^"[^"]*/,",' > $tmpfile || \ + fail "Fails to run transform $transform with 2-file remote input" + +expected=$mypath/expected/transforms-summaries-percussiononsets-playlist +csvcompare $tmpfile $expected.csv || \ + faildiff "Output mismatch for transform $transform with summaries and mixed local/remote 2-file input" $tmpfile $expected.csv +