diff options
author | jruesga <jorge@ruesga.com> | 2012-10-17 01:26:36 +0200 |
---|---|---|
committer | jruesga <jorge@ruesga.com> | 2012-10-17 01:26:36 +0200 |
commit | 28a7986f658969212be42a5e62bf54ee49127548 (patch) | |
tree | dd75c682c63ca6f8194968c2b70d50f833c6f622 /tests | |
parent | bd2dc0cb3901b535779da5d8aa802f91f2b418dd (diff) | |
download | android_packages_apps_CMFileManager-28a7986f658969212be42a5e62bf54ee49127548.tar.gz android_packages_apps_CMFileManager-28a7986f658969212be42a5e62bf54ee49127548.tar.bz2 android_packages_apps_CMFileManager-28a7986f658969212be42a5e62bf54ee49127548.zip |
New compress command
archive: tar
compress: gz, bz2
archive+compress: tgz, tar.gz, tar.bz2
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/com/cyanogenmod/explorer/commands/shell/CompressCommandTest.java | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/tests/src/com/cyanogenmod/explorer/commands/shell/CompressCommandTest.java b/tests/src/com/cyanogenmod/explorer/commands/shell/CompressCommandTest.java new file mode 100644 index 00000000..cfb08214 --- /dev/null +++ b/tests/src/com/cyanogenmod/explorer/commands/shell/CompressCommandTest.java @@ -0,0 +1,249 @@ +/* + * Copyright (C) 2012 The CyanogenMod 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.cyanogenmod.explorer.commands.shell; + +import android.os.Environment; +import android.test.suitebuilder.annotation.LargeTest; +import android.util.Log; + +import com.cyanogenmod.explorer.commands.AsyncResultListener; +import com.cyanogenmod.explorer.commands.CompressExecutable; +import com.cyanogenmod.explorer.commands.shell.CompressCommand.CompressionMode; +import com.cyanogenmod.explorer.util.CommandHelper; + +/** + * A class for testing folder usage command. + * + * @see CompressCommand + */ +public class CompressCommandTest extends AbstractConsoleTest { + + private static final String TAG = "CompressCommandTest"; //$NON-NLS-1$ + + private static final String TAR_OUTFILE = + Environment.getDataDirectory().getAbsolutePath() + "/test.tar"; //$NON-NLS-1$ + private static final String TAR_GZIP_OUTFILE = TAR_OUTFILE + ".gz"; //$NON-NLS-1$ + private static final String TAR_BZIP_OUTFILE = TAR_OUTFILE + ".bz2"; //$NON-NLS-1$ + + private static final String[] ARCHIVE_DATA = + { + Environment.getDataDirectory().getAbsolutePath() + "/misc", //$NON-NLS-1$ + Environment.getRootDirectory().getAbsolutePath() + "/build.prop" //$NON-NLS-1$ + }; + private static final String COMPRESS_DATA_SRC = + Environment.getRootDirectory().getAbsolutePath() + "/build.prop"; //$NON-NLS-1$ + private static final String COMPRESS_DATA_DST = + Environment.getDataDirectory().getAbsolutePath() + "/build.prop"; //$NON-NLS-1$ + + /** + * @hide + */ + final Object mSync = new Object(); + /** + * @hide + */ + boolean mNewPartialData; + /** + * @hide + */ + boolean mNormalEnd; + /** + * @hide + */ + boolean mResult; + + /** + * {@inheritDoc} + */ + @Override + public boolean isRootConsoleNeeded() { + return true; + } + + /** + * Method that performs the test of archive data in TAR format. + * + * @throws Exception If test failed + */ + @LargeTest + public void testArchiveTAR() throws Exception { + testArchiveAndCompress(CompressionMode.NONE, TAR_OUTFILE); + } + + /** + * Method that performs the test of archive and compress data in GZIP format. + * + * @throws Exception If test failed + */ + @LargeTest + public void testArchiveCompressGZIP() throws Exception { + testArchiveAndCompress(CompressionMode.GZIP, TAR_GZIP_OUTFILE); + } + + /** + * Method that performs the test of archive and compress data in BZIP format. + * + * @throws Exception If test failed + */ + @LargeTest + public void testArchiveCompressBZIP() throws Exception { + testArchiveAndCompress(CompressionMode.BZIP, TAR_BZIP_OUTFILE); + } + + /** + * Method that performs the test of compress data in GZIP format. + * + * @throws Exception If test failed + */ + @LargeTest + public void testCompressGZIP() throws Exception { + testCompress(CompressionMode.GZIP); + } + + /** + * Method that performs the test of compress data in BZIP format. + * + * @throws Exception If test failed + */ + @LargeTest + public void testCompressBZIP() throws Exception { + testCompress(CompressionMode.BZIP); + } + + /** + * Method that archive and compress data. + * + * @throws Exception If test failed + */ + private void testArchiveAndCompress(CompressionMode mode, String dst) throws Exception { + try { + this.mNewPartialData = false; + this.mNormalEnd = false; + CompressExecutable cmd = + CommandHelper.compress( + getContext(), mode, dst, ARCHIVE_DATA, new AsyncResultListener() { + public void onAsyncStart() { + /**NON BLOCK**/ + } + public void onAsyncEnd(boolean canceled) { + synchronized (CompressCommandTest.this.mSync) { + CompressCommandTest.this.mNormalEnd = true; + CompressCommandTest.this.mSync.notify(); + } + } + public void onAsyncExitCode(int exitCode) { + /**NON BLOCK**/ + } + public void onException(Exception cause) { + fail(String.valueOf(cause)); + } + public void onPartialResult(Object result) { + CompressCommandTest.this.mNewPartialData = true; + Log.d(TAG, (String)result); + } + }, getConsole()); + synchronized (CompressCommandTest.this.mSync) { + CompressCommandTest.this.mSync.wait(60000L); + } + try { + if (!this.mNormalEnd && cmd != null && cmd.isCancelable() && !cmd.isCanceled()) { + cmd.cancel(); + } + } catch (Exception e) {/**NON BLOCK**/} + + // Wait for result + Thread.sleep(500L); + + assertTrue("no new partial data", this.mNewPartialData); //$NON-NLS-1$ + assertNotNull("cmd != null", cmd); //$NON-NLS-1$ + if (cmd != null) { + assertTrue("return != true", cmd.getResult().booleanValue()); //$NON-NLS-1$ + } + } finally { + try { + CommandHelper.deleteFile(getContext(), dst, getConsole()); + } catch (Exception e) {/**NON BLOCK**/} + } + } + + /** + * Method that compress data. + * + * @throws Exception If test failed + */ + private void testCompress(CompressionMode mode) throws Exception { + CompressExecutable cmd = null; + try { + // Copy a file to the folder of the test + CommandHelper.copy(getContext(), COMPRESS_DATA_SRC, COMPRESS_DATA_DST, getConsole()); + + this.mNewPartialData = false; + this.mNormalEnd = false; + cmd = + CommandHelper.compress( + getContext(), mode, COMPRESS_DATA_DST, new AsyncResultListener() { + public void onAsyncStart() { + /**NON BLOCK**/ + } + public void onAsyncEnd(boolean canceled) { + synchronized (CompressCommandTest.this.mSync) { + CompressCommandTest.this.mNormalEnd = true; + CompressCommandTest.this.mSync.notify(); + } + } + public void onAsyncExitCode(int exitCode) { + /**NON BLOCK**/ + } + public void onException(Exception cause) { + fail(String.valueOf(cause)); + } + public void onPartialResult(Object result) { + CompressCommandTest.this.mNewPartialData = true; + Log.d(TAG, (String)result); + } + }, getConsole()); + synchronized (CompressCommandTest.this.mSync) { + CompressCommandTest.this.mSync.wait(15000L); + } + try { + if (!this.mNormalEnd && cmd != null && cmd.isCancelable() && !cmd.isCanceled()) { + cmd.cancel(); + } + } catch (Exception e) {/**NON BLOCK**/} + + // Wait for result + Thread.sleep(500L); + + assertNotNull("cmd != null", cmd); //$NON-NLS-1$ + if (cmd != null) { + assertTrue("return != true", cmd.getResult().booleanValue()); //$NON-NLS-1$ + } + } finally { + if (cmd != null) { + try { + CommandHelper.deleteFile( + this.mContext, COMPRESS_DATA_DST, getConsole()); + } catch (Exception e) {/**NON BLOCK**/} + try { + CommandHelper.deleteFile( + this.mContext, cmd.getOutCompressedFile(), getConsole()); + } catch (Exception e) {/**NON BLOCK**/} + } + } + } + +} |