package com.alibaba.doris.dataserver.store.log;
import java.io.File;
import java.util.Random;
import junit.framework.TestCase;
import com.alibaba.doris.common.data.Key;
import com.alibaba.doris.common.data.Value;
import com.alibaba.doris.common.data.impl.KeyImpl;
import com.alibaba.doris.common.data.impl.ValueImpl;
import com.alibaba.doris.common.data.util.ByteUtils;
import com.alibaba.doris.dataserver.store.log.db.ClumpConfigure;
import com.alibaba.doris.dataserver.store.log.entry.LogEntry;
import com.alibaba.doris.dataserver.store.log.entry.SetLogEntry;
import com.alibaba.doris.dataserver.store.log.utils.LogFileUtil;
/**
* @author ajun Email:jack.yuj@alibaba-inc.com
*/
public abstract class BaseTestCase extends TestCase {
protected ClumpConfigure getClumpConfigure() {
ClumpConfigure config = new ClumpConfigure();
config.setPath(this.getClass().getClassLoader().getResource("").getPath() + "test_data" + File.separatorChar);
config.setReadBufferSize(1024 * 512);
config.setWriteBufferSize(1024 * 512);
config.setWriteDirect(true);// 不缓存数据直接写入磁盘
return config;
}
protected LogEntry generateLogEntry() {
StringBuilder sb = new StringBuilder(512);
for (int i = 0; i < 100; i++) {
sb.append("1234567890");
}
String valueString = sb.toString() + r.nextDouble();
final Key key = new KeyImpl(1, "key" + r.nextInt(), 0);
final Value value = new ValueImpl(ByteUtils.stringToByte(valueString), System.currentTimeMillis());
value.setFlag((short) 10);
SetLogEntry logEntry = new SetLogEntry(key, value);
return logEntry;
}
protected String getCurrentClassPath() {
Class<?> clazz = this.getClass();
String path = clazz.getClassLoader().getResource("").getPath();
String clazzName = clazz.getName();
int index = clazzName.lastIndexOf('.');
if (index > 0) {
clazzName = clazzName.substring(0, index);
}
return path + clazzName.replace('.', File.separatorChar);
}
protected void clear(String clumpName) {
ClumpConfigure config = getClumpConfigure();
String headFile = LogFileUtil.generateHeadFileName(config.getPath(), clumpName);
String dataFile = LogFileUtil.generateDataFileName(config.getPath(), clumpName);
File f = new File(headFile);
if (f.exists()) {
f.delete();
}
File f2 = new File(dataFile);
if (f2.exists()) {
f2.delete();
}
}
private Random r = new Random();
}