mirror of
https://github.com/androidx/media.git
synced 2025-05-17 04:29:55 +08:00
Migrate usages of deprecated SimpleCache constructors
I duplicated some methods in SimpleCacheTest to ensure we keep testing the deprecated code paths for now. PiperOrigin-RevId: 321548802
This commit is contained in:
parent
363a2a3b45
commit
ab95e3f388
@ -81,7 +81,8 @@ public final class CacheDataSourceTest {
|
|||||||
|
|
||||||
tempFolder =
|
tempFolder =
|
||||||
Util.createTempDirectory(ApplicationProvider.getApplicationContext(), "ExoPlayerTest");
|
Util.createTempDirectory(ApplicationProvider.getApplicationContext(), "ExoPlayerTest");
|
||||||
cache = new SimpleCache(tempFolder, new NoOpCacheEvictor());
|
cache =
|
||||||
|
new SimpleCache(tempFolder, new NoOpCacheEvictor(), TestUtil.getInMemoryDatabaseProvider());
|
||||||
upstreamDataSource = new FakeDataSource();
|
upstreamDataSource = new FakeDataSource();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,7 +156,11 @@ public final class CacheDataSourceTest2 {
|
|||||||
private static CacheDataSource buildCacheDataSource(Context context, DataSource upstreamSource,
|
private static CacheDataSource buildCacheDataSource(Context context, DataSource upstreamSource,
|
||||||
boolean useAesEncryption) throws CacheException {
|
boolean useAesEncryption) throws CacheException {
|
||||||
File cacheDir = context.getExternalCacheDir();
|
File cacheDir = context.getExternalCacheDir();
|
||||||
Cache cache = new SimpleCache(new File(cacheDir, EXO_CACHE_DIR), new NoOpCacheEvictor());
|
Cache cache =
|
||||||
|
new SimpleCache(
|
||||||
|
new File(cacheDir, EXO_CACHE_DIR),
|
||||||
|
new NoOpCacheEvictor(),
|
||||||
|
TestUtil.getInMemoryDatabaseProvider());
|
||||||
emptyCache(cache);
|
emptyCache(cache);
|
||||||
|
|
||||||
// Source and cipher
|
// Source and cipher
|
||||||
|
@ -96,7 +96,8 @@ public final class CacheWriterTest {
|
|||||||
mockCache.init();
|
mockCache.init();
|
||||||
tempFolder =
|
tempFolder =
|
||||||
Util.createTempDirectory(ApplicationProvider.getApplicationContext(), "ExoPlayerTest");
|
Util.createTempDirectory(ApplicationProvider.getApplicationContext(), "ExoPlayerTest");
|
||||||
cache = new SimpleCache(tempFolder, new NoOpCacheEvictor());
|
cache =
|
||||||
|
new SimpleCache(tempFolder, new NoOpCacheEvictor(), TestUtil.getInMemoryDatabaseProvider());
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
@ -24,6 +24,7 @@ import static org.mockito.Mockito.doAnswer;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import com.google.android.exoplayer2.database.DatabaseProvider;
|
||||||
import com.google.android.exoplayer2.testutil.TestUtil;
|
import com.google.android.exoplayer2.testutil.TestUtil;
|
||||||
import com.google.android.exoplayer2.upstream.cache.Cache.CacheException;
|
import com.google.android.exoplayer2.upstream.cache.Cache.CacheException;
|
||||||
import com.google.android.exoplayer2.util.Util;
|
import com.google.android.exoplayer2.util.Util;
|
||||||
@ -38,7 +39,6 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
|
|
||||||
/** Unit tests for {@link SimpleCache}. */
|
/** Unit tests for {@link SimpleCache}. */
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
@ -50,18 +50,23 @@ public class SimpleCacheTest {
|
|||||||
|
|
||||||
private File testDir;
|
private File testDir;
|
||||||
private File cacheDir;
|
private File cacheDir;
|
||||||
|
private DatabaseProvider databaseProvider;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void createTestDir() throws Exception {
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
testDir = Util.createTempFile(ApplicationProvider.getApplicationContext(), "SimpleCacheTest");
|
testDir = Util.createTempFile(ApplicationProvider.getApplicationContext(), "SimpleCacheTest");
|
||||||
assertThat(testDir.delete()).isTrue();
|
assertThat(testDir.delete()).isTrue();
|
||||||
assertThat(testDir.mkdirs()).isTrue();
|
assertThat(testDir.mkdirs()).isTrue();
|
||||||
cacheDir = new File(testDir, "cache");
|
cacheDir = new File(testDir, "cache");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void createDatabaseProvider() {
|
||||||
|
databaseProvider = TestUtil.getInMemoryDatabaseProvider();
|
||||||
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDown() {
|
public void deleteTestDir() {
|
||||||
Util.recursiveDelete(testDir);
|
Util.recursiveDelete(testDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +101,33 @@ public class SimpleCacheTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void newInstance_withExistingCacheDirectory_loadsCachedData() throws Exception {
|
@SuppressWarnings("deprecation") // Testing deprecated behaviour
|
||||||
|
public void newInstance_withExistingCacheDirectory_withoutDatabase_loadsCachedData()
|
||||||
|
throws Exception {
|
||||||
|
SimpleCache simpleCache = new SimpleCache(cacheDir, new NoOpCacheEvictor());
|
||||||
|
|
||||||
|
// Write some data and metadata to the cache.
|
||||||
|
CacheSpan holeSpan = simpleCache.startReadWrite(KEY_1, 0, LENGTH_UNSET);
|
||||||
|
addCache(simpleCache, KEY_1, 0, 15);
|
||||||
|
simpleCache.releaseHoleSpan(holeSpan);
|
||||||
|
ContentMetadataMutations mutations = new ContentMetadataMutations();
|
||||||
|
ContentMetadataMutations.setRedirectedUri(mutations, Uri.parse("https://redirect.google.com"));
|
||||||
|
simpleCache.applyContentMetadataMutations(KEY_1, mutations);
|
||||||
|
simpleCache.release();
|
||||||
|
|
||||||
|
// Create a new instance pointing to the same directory.
|
||||||
|
simpleCache = new SimpleCache(cacheDir, new NoOpCacheEvictor());
|
||||||
|
|
||||||
|
// Read the cached data and metadata back.
|
||||||
|
CacheSpan fileSpan = simpleCache.startReadWrite(KEY_1, 0, LENGTH_UNSET);
|
||||||
|
assertCachedDataReadCorrect(fileSpan);
|
||||||
|
assertThat(ContentMetadata.getRedirectedUri(simpleCache.getContentMetadata(KEY_1)))
|
||||||
|
.isEqualTo(Uri.parse("https://redirect.google.com"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void newInstance_withExistingCacheDirectory_withDatabase_loadsCachedData()
|
||||||
|
throws Exception {
|
||||||
SimpleCache simpleCache = getSimpleCache();
|
SimpleCache simpleCache = getSimpleCache();
|
||||||
|
|
||||||
// Write some data and metadata to the cache.
|
// Write some data and metadata to the cache.
|
||||||
@ -127,8 +158,10 @@ public class SimpleCacheTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void newInstance_withExistingCacheDirectory_resolvesInconsistentState() throws Exception {
|
@SuppressWarnings("deprecation") // Testing deprecated behaviour
|
||||||
SimpleCache simpleCache = getSimpleCache();
|
public void newInstance_withExistingCacheDirectory_withoutDatabase_resolvesInconsistentState()
|
||||||
|
throws Exception {
|
||||||
|
SimpleCache simpleCache = new SimpleCache(testDir, new NoOpCacheEvictor());
|
||||||
|
|
||||||
CacheSpan holeSpan = simpleCache.startReadWrite(KEY_1, 0, LENGTH_UNSET);
|
CacheSpan holeSpan = simpleCache.startReadWrite(KEY_1, 0, LENGTH_UNSET);
|
||||||
addCache(simpleCache, KEY_1, 0, 15);
|
addCache(simpleCache, KEY_1, 0, 15);
|
||||||
@ -149,6 +182,30 @@ public class SimpleCacheTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
public void newInstance_withExistingCacheDirectory_withDatabase_resolvesInconsistentState()
|
||||||
|
throws Exception {
|
||||||
|
SimpleCache simpleCache = new SimpleCache(testDir, new NoOpCacheEvictor(), databaseProvider);
|
||||||
|
|
||||||
|
CacheSpan holeSpan = simpleCache.startReadWrite(KEY_1, 0, LENGTH_UNSET);
|
||||||
|
addCache(simpleCache, KEY_1, 0, 15);
|
||||||
|
simpleCache.releaseHoleSpan(holeSpan);
|
||||||
|
simpleCache.removeSpan(simpleCache.getCachedSpans(KEY_1).first());
|
||||||
|
|
||||||
|
// Don't release the cache. This means the index file won't have been written to disk after the
|
||||||
|
// span was removed. Move the cache directory instead, so we can reload it without failing the
|
||||||
|
// folder locking check.
|
||||||
|
File cacheDir2 = new File(testDir, "cache2");
|
||||||
|
cacheDir.renameTo(cacheDir2);
|
||||||
|
|
||||||
|
// Create a new instance pointing to the new directory.
|
||||||
|
simpleCache = new SimpleCache(cacheDir2, new NoOpCacheEvictor(), databaseProvider);
|
||||||
|
|
||||||
|
// The entry for KEY_1 should have been removed when the cache was reloaded.
|
||||||
|
assertThat(simpleCache.getCachedSpans(KEY_1)).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@SuppressWarnings("deprecation") // Encrypted index is deprecated
|
||||||
public void newInstance_withEncryptedIndex() throws Exception {
|
public void newInstance_withEncryptedIndex() throws Exception {
|
||||||
SimpleCache simpleCache = getEncryptedSimpleCache(ENCRYPTED_INDEX_KEY);
|
SimpleCache simpleCache = getEncryptedSimpleCache(ENCRYPTED_INDEX_KEY);
|
||||||
CacheSpan holeSpan = simpleCache.startReadWrite(KEY_1, 0, LENGTH_UNSET);
|
CacheSpan holeSpan = simpleCache.startReadWrite(KEY_1, 0, LENGTH_UNSET);
|
||||||
@ -165,6 +222,7 @@ public class SimpleCacheTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@SuppressWarnings("deprecation") // Encrypted index is deprecated
|
||||||
public void newInstance_withEncryptedIndexAndWrongKey_clearsCache() throws Exception {
|
public void newInstance_withEncryptedIndexAndWrongKey_clearsCache() throws Exception {
|
||||||
SimpleCache simpleCache = getEncryptedSimpleCache(ENCRYPTED_INDEX_KEY);
|
SimpleCache simpleCache = getEncryptedSimpleCache(ENCRYPTED_INDEX_KEY);
|
||||||
|
|
||||||
@ -183,6 +241,7 @@ public class SimpleCacheTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@SuppressWarnings("deprecation") // Encrypted index is deprecated
|
||||||
public void newInstance_withEncryptedIndexAndNoKey_clearsCache() throws Exception {
|
public void newInstance_withEncryptedIndexAndNoKey_clearsCache() throws Exception {
|
||||||
SimpleCache simpleCache = getEncryptedSimpleCache(ENCRYPTED_INDEX_KEY);
|
SimpleCache simpleCache = getEncryptedSimpleCache(ENCRYPTED_INDEX_KEY);
|
||||||
|
|
||||||
@ -619,7 +678,7 @@ public class SimpleCacheTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void usingReleasedCache_throwsException() {
|
public void usingReleasedCache_throwsException() {
|
||||||
SimpleCache simpleCache = new SimpleCache(cacheDir, new NoOpCacheEvictor());
|
SimpleCache simpleCache = getSimpleCache();
|
||||||
simpleCache.release();
|
simpleCache.release();
|
||||||
assertThrows(
|
assertThrows(
|
||||||
IllegalStateException.class,
|
IllegalStateException.class,
|
||||||
@ -627,9 +686,11 @@ public class SimpleCacheTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private SimpleCache getSimpleCache() {
|
private SimpleCache getSimpleCache() {
|
||||||
return new SimpleCache(cacheDir, new NoOpCacheEvictor());
|
return new SimpleCache(cacheDir, new NoOpCacheEvictor(), databaseProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
@SuppressWarnings("deprecation") // Testing deprecated behaviour.
|
||||||
private SimpleCache getEncryptedSimpleCache(byte[] secretKey) {
|
private SimpleCache getEncryptedSimpleCache(byte[] secretKey) {
|
||||||
return new SimpleCache(cacheDir, new NoOpCacheEvictor(), secretKey);
|
return new SimpleCache(cacheDir, new NoOpCacheEvictor(), secretKey);
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,8 @@ public class DashDownloaderTest {
|
|||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
tempFolder =
|
tempFolder =
|
||||||
Util.createTempDirectory(ApplicationProvider.getApplicationContext(), "ExoPlayerTest");
|
Util.createTempDirectory(ApplicationProvider.getApplicationContext(), "ExoPlayerTest");
|
||||||
cache = new SimpleCache(tempFolder, new NoOpCacheEvictor());
|
cache =
|
||||||
|
new SimpleCache(tempFolder, new NoOpCacheEvictor(), TestUtil.getInMemoryDatabaseProvider());
|
||||||
progressListener = new ProgressListener();
|
progressListener = new ProgressListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +82,9 @@ public class DownloadManagerDashTest {
|
|||||||
tempFolder = Util.createTempDirectory(context, "ExoPlayerTest");
|
tempFolder = Util.createTempDirectory(context, "ExoPlayerTest");
|
||||||
File cacheFolder = new File(tempFolder, "cache");
|
File cacheFolder = new File(tempFolder, "cache");
|
||||||
cacheFolder.mkdir();
|
cacheFolder.mkdir();
|
||||||
cache = new SimpleCache(cacheFolder, new NoOpCacheEvictor());
|
cache =
|
||||||
|
new SimpleCache(
|
||||||
|
cacheFolder, new NoOpCacheEvictor(), TestUtil.getInMemoryDatabaseProvider());
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
fakeDataSet =
|
fakeDataSet =
|
||||||
new FakeDataSet()
|
new FakeDataSet()
|
||||||
|
@ -79,7 +79,8 @@ public class DownloadServiceDashTest {
|
|||||||
testThread = new DummyMainThread();
|
testThread = new DummyMainThread();
|
||||||
context = ApplicationProvider.getApplicationContext();
|
context = ApplicationProvider.getApplicationContext();
|
||||||
tempFolder = Util.createTempDirectory(context, "ExoPlayerTest");
|
tempFolder = Util.createTempDirectory(context, "ExoPlayerTest");
|
||||||
cache = new SimpleCache(tempFolder, new NoOpCacheEvictor());
|
cache =
|
||||||
|
new SimpleCache(tempFolder, new NoOpCacheEvictor(), TestUtil.getInMemoryDatabaseProvider());
|
||||||
|
|
||||||
Runnable pauseAction =
|
Runnable pauseAction =
|
||||||
() -> {
|
() -> {
|
||||||
|
@ -47,6 +47,7 @@ import com.google.android.exoplayer2.source.hls.playlist.HlsMasterPlaylist;
|
|||||||
import com.google.android.exoplayer2.testutil.CacheAsserts.RequestSet;
|
import com.google.android.exoplayer2.testutil.CacheAsserts.RequestSet;
|
||||||
import com.google.android.exoplayer2.testutil.FakeDataSet;
|
import com.google.android.exoplayer2.testutil.FakeDataSet;
|
||||||
import com.google.android.exoplayer2.testutil.FakeDataSource;
|
import com.google.android.exoplayer2.testutil.FakeDataSource;
|
||||||
|
import com.google.android.exoplayer2.testutil.TestUtil;
|
||||||
import com.google.android.exoplayer2.upstream.DummyDataSource;
|
import com.google.android.exoplayer2.upstream.DummyDataSource;
|
||||||
import com.google.android.exoplayer2.upstream.cache.Cache;
|
import com.google.android.exoplayer2.upstream.cache.Cache;
|
||||||
import com.google.android.exoplayer2.upstream.cache.CacheDataSource;
|
import com.google.android.exoplayer2.upstream.cache.CacheDataSource;
|
||||||
@ -76,7 +77,8 @@ public class HlsDownloaderTest {
|
|||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
tempFolder =
|
tempFolder =
|
||||||
Util.createTempDirectory(ApplicationProvider.getApplicationContext(), "ExoPlayerTest");
|
Util.createTempDirectory(ApplicationProvider.getApplicationContext(), "ExoPlayerTest");
|
||||||
cache = new SimpleCache(tempFolder, new NoOpCacheEvictor());
|
cache =
|
||||||
|
new SimpleCache(tempFolder, new NoOpCacheEvictor(), TestUtil.getInMemoryDatabaseProvider());
|
||||||
progressListener = new ProgressListener();
|
progressListener = new ProgressListener();
|
||||||
fakeDataSet =
|
fakeDataSet =
|
||||||
new FakeDataSet()
|
new FakeDataSet()
|
||||||
|
@ -21,6 +21,7 @@ import android.net.Uri;
|
|||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
import androidx.test.rule.ActivityTestRule;
|
import androidx.test.rule.ActivityTestRule;
|
||||||
import com.google.android.exoplayer2.MediaItem;
|
import com.google.android.exoplayer2.MediaItem;
|
||||||
|
import com.google.android.exoplayer2.database.ExoDatabaseProvider;
|
||||||
import com.google.android.exoplayer2.offline.StreamKey;
|
import com.google.android.exoplayer2.offline.StreamKey;
|
||||||
import com.google.android.exoplayer2.source.dash.DashUtil;
|
import com.google.android.exoplayer2.source.dash.DashUtil;
|
||||||
import com.google.android.exoplayer2.source.dash.manifest.AdaptationSet;
|
import com.google.android.exoplayer2.source.dash.manifest.AdaptationSet;
|
||||||
@ -69,7 +70,9 @@ public final class DashDownloadTest {
|
|||||||
.setAudioVideoFormats(
|
.setAudioVideoFormats(
|
||||||
DashTestData.AAC_AUDIO_REPRESENTATION_ID, DashTestData.H264_CDD_FIXED);
|
DashTestData.AAC_AUDIO_REPRESENTATION_ID, DashTestData.H264_CDD_FIXED);
|
||||||
tempFolder = Util.createTempDirectory(testRule.getActivity(), "ExoPlayerTest");
|
tempFolder = Util.createTempDirectory(testRule.getActivity(), "ExoPlayerTest");
|
||||||
cache = new SimpleCache(tempFolder, new NoOpCacheEvictor());
|
cache =
|
||||||
|
new SimpleCache(
|
||||||
|
tempFolder, new NoOpCacheEvictor(), new ExoDatabaseProvider(testRule.getActivity()));
|
||||||
httpDataSourceFactory = new DefaultHttpDataSourceFactory("ExoPlayer", null);
|
httpDataSourceFactory = new DefaultHttpDataSourceFactory("ExoPlayer", null);
|
||||||
offlineDataSourceFactory = new CacheDataSource.Factory().setCache(cache);
|
offlineDataSourceFactory = new CacheDataSource.Factory().setCache(cache);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user