package com.qiniu.android;
import android.test.AndroidTestCase;
import android.util.Log;
import com.qiniu.android.collect.Config;
import junit.framework.Assert;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
/**
* Created by Simon on 12/6/16.
*/
public class ACollectUploadInfoUpTest extends AndroidTestCase {
private static long recordFileLastModified = 337l;
private static Queue<Long> queue = new LinkedList<Long>() {{
offer(1l);
offer(2l);
offer(3l);
offer(4l);
}};
@Override
protected void setUp() throws Exception {
testInit();
}
public static void testInit() {
Config.isRecord = true;
Config.isUpload = true;
Config.interval = 0;
Config.uploadThreshold = 2 * 1024;
Config.maxRecordFileSize = 3 * 1024;
}
public static void recordFile() {
File recordFile = getRecordFile();
if (recordFile.length() < Config.maxRecordFileSize && recordFile.length() > 10) {
Assert.assertNotSame(recordFile.lastModified(), recordFileLastModified);
}
recordFileLastModified = recordFile.lastModified();
int log = "200,CwIAAF4znMnpno0U,up.qiniu.com,183.131.7.18,80,383.0,1481014578,262144,form\n".length();
long fileSize = recordFile.length();
putRecordFileSize(fileSize);
long avgSize = getRecordFileAvgSize();
Assert.assertTrue(fileSize < Config.maxRecordFileSize + log * 2);
String sizes = getRecordFileSizes();
System.out.println("RecordFileSize: " + sizes);
Assert.assertTrue("文件大小有变化,不大可能一直相同。" + sizes, !isRecordFileSizeAllSame());
Assert.assertTrue("有上传,上传后清理文件,文件大小平均值不大可能大于上传阀值。" + sizes, avgSize < Config.uploadThreshold + log * 2);
}
private static void putRecordFileSize(long size) {
queue.offer(size);
if (queue.size() > 4) {
queue.poll();
}
}
private static long getRecordFileAvgSize() {
long sum = 0;
long count = 0;
Iterator<Long> it = queue.iterator();
while (it.hasNext()) {
count += 1;
sum += it.next();
}
return sum / count;
}
private static boolean isRecordFileSizeAllSame() {
long size = -1;
boolean same = true;
Iterator<Long> it = queue.iterator();
while (it.hasNext()) {
long temp = it.next();
if (size > 0) {
same = same && (size == temp);
}
size = temp;
}
return same;
}
private static String getRecordFileSizes() {
StringBuilder ss = new StringBuilder("");
Iterator<Long> it = queue.iterator();
while (it.hasNext()) {
ss.append(it.next()).append(", ");
}
return ss.toString();
}
public static File getRecordFile() {
String recordFileName = "_qiniu_record_file_upm6xola4sk3";
File recordFile = new File(Config.recordDir, recordFileName);
return recordFile;
}
public static void recordFileTest() {
// showRecordInfo();
recordFile();
}
public static void showRecordInfo() {
File recordFile = getRecordFile();
Log.d("recordFile", "recordFile.getAbsolutePath(): " + recordFile.getAbsolutePath());
Log.d("recordFile", "recordFile.length(): " + recordFile.length());
Log.d("recordFile", "recordFile.lastModified(): " + new Date(recordFile.lastModified()));
showContent(recordFile);
}
private static void showContent(File recordFile) {
FileReader fileReader = null;
BufferedReader br = null;
try {
fileReader = new FileReader(recordFile);
br = new BufferedReader(fileReader);
String line = null;
Log.d("recordFile", "recordFile content: start");
while ((line = br.readLine()) != null) {
Log.d("recordFile", line);
}
Log.d("recordFile", "recordFile content: end");
} catch (Exception e) {
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileReader != null) {
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}