package com.navercorp.pinpoint.common.server.bo.serializer.trace.v2;
import com.navercorp.pinpoint.common.hbase.distributor.RangeOneByteSimpleHash;
import com.navercorp.pinpoint.common.server.bo.serializer.RowKeyDecoder;
import com.navercorp.pinpoint.common.server.bo.serializer.RowKeyEncoder;
import com.navercorp.pinpoint.common.util.TransactionId;
import com.sematext.hbase.wd.RowKeyDistributorByHashPrefix;
import org.apache.commons.lang3.RandomUtils;
import org.junit.Assert;
import org.junit.Test;
/**
* @author Woonduk Kang(emeroad)
*/
public class TraceRowKeyEncoderV2Test {
private RowKeyDistributorByHashPrefix distributorByHashPrefix = newDistributorByHashPrefix();
private RowKeyDistributorByHashPrefix newDistributorByHashPrefix() {
// <constructor-arg type="int" value="32"/>
// <constructor-arg type="int" value="40"/>
// <constructor-arg type="int" value="256"/>
int startOffsetForMod = 32;
int endOffsetForMod = 40;
int maxBucketSize = 256;
RowKeyDistributorByHashPrefix.Hasher oneByteSimpleHash = new RangeOneByteSimpleHash(startOffsetForMod, endOffsetForMod, maxBucketSize);
return new RowKeyDistributorByHashPrefix(oneByteSimpleHash);
}
private RowKeyEncoder<TransactionId> traceRowKeyEncoder = new TraceRowKeyEncoderV2(distributorByHashPrefix);
private RowKeyDecoder<TransactionId> traceRowKeyDecoder = new TraceRowKeyDecoderV2();
@Test
public void encodeRowKey() throws Exception {
TransactionId spanTransactionId = new TransactionId("traceAgentId", System.currentTimeMillis(), RandomUtils.nextLong(0, 10000));
byte[] rowKey = traceRowKeyEncoder.encodeRowKey(spanTransactionId);
TransactionId transactionId = traceRowKeyDecoder.decodeRowKey(rowKey);
Assert.assertEquals(transactionId, spanTransactionId);
}
}