package com.qiniu.android; import android.test.InstrumentationTestCase; import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.MediumTest; import android.util.Log; import com.qiniu.android.common.FixedZone; import com.qiniu.android.common.Zone; import com.qiniu.android.http.ResponseInfo; import com.qiniu.android.storage.Configuration; import com.qiniu.android.storage.UpCompletionHandler; import com.qiniu.android.storage.UploadManager; import com.qiniu.android.utils.Etag; import junit.framework.Assert; import org.json.JSONObject; import java.io.File; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; public class ResumeUploadTest extends InstrumentationTestCase { final CountDownLatch signal = new CountDownLatch(1); private UploadManager uploadManager; private volatile String key; private volatile ResponseInfo info = null; private volatile JSONObject resp; public void setUp() throws Exception { Configuration config = new Configuration.Builder().build(); uploadManager = new UploadManager(config); ACollectUploadInfoTest.testInit(); } private void template(int size) throws Throwable { final String expectKey = "r=" + size + "k"; final File f = TempFile.createFile(size); runTestOnUiThread(new Runnable() { // THIS IS THE KEY TO SUCCESS public void run() { uploadManager.put(f, expectKey, TestConfig.token_z0, new UpCompletionHandler() { public void complete(String k, ResponseInfo rinfo, JSONObject response) { Log.i("qiniutest", k + rinfo); key = k; info = rinfo; resp = response; signal.countDown(); } }, null); } }); try { signal.await(1200, TimeUnit.SECONDS); // wait for callback Assert.assertNotNull("timeout", info); } catch (InterruptedException e) { e.printStackTrace(); } Assert.assertEquals(info.toString(), expectKey, key); Assert.assertTrue(info.toString(), info.isOK()); Assert.assertNotNull(info.reqId); Assert.assertNotNull(resp); String hash = resp.getString("hash"); Assert.assertEquals(hash, Etag.file(f)); TempFile.remove(f); ACollectUploadInfoTest.recordFileTest(); } private void template2(int size) throws Throwable { final String expectKey = "r=" + size + "k"; final File f = TempFile.createFile(size); String[] s = new String[]{"up.qbox.me"}; Zone z = new FixedZone(s); Configuration c = new Configuration.Builder() .zone(z) .build(); UploadManager uploadManager2 = new UploadManager(c); uploadManager2.put(f, expectKey, TestConfig.token_z0, new UpCompletionHandler() { public void complete(String k, ResponseInfo rinfo, JSONObject response) { Log.i("qiniutest", k + rinfo); key = k; info = rinfo; resp = response; signal.countDown(); } }, null); try { signal.await(1200, TimeUnit.SECONDS); // wait for callback Assert.assertNotNull("timeout", info); } catch (InterruptedException e) { e.printStackTrace(); } Assert.assertEquals(info.toString(), expectKey, key); Assert.assertTrue(info.toString(), info.isOK()); Assert.assertEquals(expectKey, key); //上传策略含空格 \"fname\":\" $(fname) \" Assert.assertEquals(f.getName(), resp.optString("fname", "res doesn't include the FNAME").trim()); Assert.assertTrue(info.isOK()); Assert.assertNotNull(info.reqId); Assert.assertNotNull(resp); String hash = resp.getString("hash"); Assert.assertEquals(hash, Etag.file(f)); TempFile.remove(f); ACollectUploadInfoTest.recordFileTest(); } @MediumTest public void test600k() throws Throwable { template(600); } @MediumTest public void test600k2() throws Throwable { template2(600); } @LargeTest public void test4M1k2() throws Throwable { template2(1024 * 4 + 1); } @LargeTest public void test4M() throws Throwable { template(1024 * 4); } // @LargeTest // public void test8M1k() throws Throwable{ // template(1024*8+1); // } }