diff options
author | Justin Giorgi <jgiorgi@google.com> | 2017-05-30 15:30:56 -0700 |
---|---|---|
committer | Julien Desprez <jdesprez@google.com> | 2017-06-16 21:25:43 +0000 |
commit | a15da12f24a7526a0b343f73fcddd584102dd24f (patch) | |
tree | b53eba2afb2203b34777641e868927c55a912d44 | |
parent | c87467bf1b7be7cd0e796412c8c06fa08f3ef779 (diff) | |
download | tradefederation-a15da12f24a7526a0b343f73fcddd584102dd24f.tar.gz |
Added getFiles method to DeviceFolderBuildInfo
Base BuildInfo class is missing device images.
Test: Unit test on new method.
Bug: b/62223650, b/30815281
Change-Id: Ib63affc488f7c3f231083470da33ff9f25abb998
(cherry picked from commit 8f92eff05258604b253719aa7892079911261890)
3 files changed, 108 insertions, 1 deletions
diff --git a/src/com/android/tradefed/build/DeviceFolderBuildInfo.java b/src/com/android/tradefed/build/DeviceFolderBuildInfo.java index 5c7befe69..0fa4abb30 100644 --- a/src/com/android/tradefed/build/DeviceFolderBuildInfo.java +++ b/src/com/android/tradefed/build/DeviceFolderBuildInfo.java @@ -16,6 +16,9 @@ package com.android.tradefed.build; import java.io.File; +import java.util.Collection; +import java.util.ArrayList; +import java.util.List; /** * A {@link IDeviceBuildInfo} that also contains other build artifacts contained in a directory on @@ -247,7 +250,16 @@ public class DeviceFolderBuildInfo extends BuildInfo implements IDeviceBuildInfo mDeviceBuild.setRamdiskFile(ramdisk, version); } - + /** {@inheritDoc} */ + @Override + public Collection<VersionedFile> getFiles() { + Collection<VersionedFile> rootFiles = super.getFiles(); + Collection<VersionedFile> deviceFiles = mDeviceBuild.getFiles(); + List<VersionedFile> combinedFiles = new ArrayList<VersionedFile>(); + combinedFiles.addAll(rootFiles); + combinedFiles.addAll(deviceFiles); + return combinedFiles; + } /** * {@inheritDoc} diff --git a/tests/src/com/android/tradefed/UnitTests.java b/tests/src/com/android/tradefed/UnitTests.java index 20026fb2d..8f064a311 100644 --- a/tests/src/com/android/tradefed/UnitTests.java +++ b/tests/src/com/android/tradefed/UnitTests.java @@ -18,6 +18,7 @@ package com.android.tradefed; import com.android.tradefed.build.BuildInfoTest; import com.android.tradefed.build.DeviceBuildDescriptorTest; import com.android.tradefed.build.DeviceBuildInfoTest; +import com.android.tradefed.build.DeviceFolderBuildInfoTest; import com.android.tradefed.build.FileDownloadCacheTest; import com.android.tradefed.build.KernelBuildInfoTest; import com.android.tradefed.build.KernelDeviceBuildInfoTest; @@ -227,6 +228,7 @@ import org.junit.runners.Suite.SuiteClasses; BuildInfoTest.class, DeviceBuildInfoTest.class, DeviceBuildDescriptorTest.class, + DeviceFolderBuildInfoTest.class, FileDownloadCacheTest.class, KernelBuildInfoTest.class, KernelDeviceBuildInfoTest.class, diff --git a/tests/src/com/android/tradefed/build/DeviceFolderBuildInfoTest.java b/tests/src/com/android/tradefed/build/DeviceFolderBuildInfoTest.java new file mode 100644 index 000000000..b21d261ad --- /dev/null +++ b/tests/src/com/android/tradefed/build/DeviceFolderBuildInfoTest.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.tradefed.build; + +import static org.junit.Assert.*; + +import com.android.tradefed.util.FileUtil; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.io.File; +import java.util.Collection; + +/** Unit tests for {@link BuildInfo}. */ +@RunWith(JUnit4.class) +public class DeviceFolderBuildInfoTest { + private DeviceFolderBuildInfo mDeviceFolderBuildInfo; + private File mFile; + + @Before + public void setUp() throws Exception { + mDeviceFolderBuildInfo = new DeviceFolderBuildInfo("1", "target"); + mDeviceFolderBuildInfo.setFolderBuild(new FolderBuildInfo("1", "target")); + mDeviceFolderBuildInfo.setDeviceBuild(new DeviceBuildInfo()); + mFile = FileUtil.createTempFile("image", "tmp"); + } + + @After + public void tearDown() throws Exception { + FileUtil.deleteFile(mFile); + } + + /** Return bool collection contains VersionedFile with specified version." */ + boolean hasFile(Collection<VersionedFile> files, String version) { + for (VersionedFile candidate : files) { + if (candidate.getVersion().equals(version)) { + return true; + } + } + return false; + } + + /** + * Test {@link DeviceFolderBuildInfo#getFiles()}. Verify files added to root and nested + * DeviceBuildInfo are in result. + */ + @Test + public void testGetFiles_both() { + mDeviceFolderBuildInfo.setFile("foo", mFile, "foo-version"); + mDeviceFolderBuildInfo.setDeviceImageFile(mFile, "img-version"); + Collection<VersionedFile> files = mDeviceFolderBuildInfo.getFiles(); + + assertEquals(2, files.size()); + assertTrue(hasFile(files, "foo-version")); + assertTrue(hasFile(files, "img-version")); + } + + /** + * Test {@link DeviceFolderBuildInfo#getFiles()}. Verify empty result when no files are present. + */ + @Test + public void testGetFiles_none() { + Collection<VersionedFile> files = mDeviceFolderBuildInfo.getFiles(); + assertEquals(0, files.size()); + } + + /** Test {@link DeviceFolderBuildInfo#getFiles()}. Verify device image in result. */ + @Test + public void testGetFiles_deviceImages() { + mDeviceFolderBuildInfo.setDeviceImageFile(mFile, "img-version"); + Collection<VersionedFile> files = mDeviceFolderBuildInfo.getFiles(); + + assertEquals(1, files.size()); + assertTrue(hasFile(files, "img-version")); + } +} |