Skip to content

Commit

Permalink
#3548 Change the storage type of Dot from HashSet to ArrayList
Browse files Browse the repository at this point in the history
1. add code
2. add testcase
  • Loading branch information
koo-taejin authored and Xylus committed Nov 15, 2017
1 parent 0d1e6fa commit 9987015
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 32 deletions.
Expand Up @@ -17,16 +17,16 @@

import com.navercorp.pinpoint.web.vo.scatter.Dot;

import java.util.HashSet;
import java.util.Set;
import java.util.ArrayList;
import java.util.List;

/**
* @author Taejin Koo
*/
public class DotGroup {

private final Coordinates coordinates;
private final Set<Dot> dotSet = new HashSet<>();
private final List<Dot> dotList = new ArrayList<>();

private Dot dotLeader;

Expand All @@ -39,7 +39,7 @@ public Coordinates getCoordinates() {
}

void addDot(Dot dot) {
dotSet.add(dot);
dotList.add(dot);

if (dotLeader == null) {
dotLeader = dot;
Expand All @@ -51,15 +51,15 @@ void merge(DotGroup dotGroup) {
return;
}

dotSet.addAll(dotGroup.getDotSet());
this.dotList.addAll(dotGroup.getDotList());
}

public Set<Dot> getDotSet() {
return dotSet;
public List<Dot> getDotList() {
return dotList;
}

public int getDotSize() {
return dotSet.size();
return dotList.size();
}

public Dot getDotLeader() {
Expand All @@ -68,7 +68,7 @@ public Dot getDotLeader() {

@Override
public String toString() {
return "DotGroup{" + "coordinates=" + coordinates + ", dotSet=" + dotSet + '}';
return "DotGroup{" + "coordinates=" + coordinates + ", dotList=" + dotList + '}';
}

}
Expand Up @@ -88,7 +88,7 @@ public Set<Dot> getSortedDotSet() {

List<Dot> dotList = new ArrayList<>(size);
for (DotGroup dotGroup : dotGroupList) {
dotList.addAll(dotGroup.getDotSet());
dotList.addAll(dotGroup.getDotList());
}

Set<Dot> sortedSet = new TreeSet<>(DOT_COMPARATOR);
Expand Down
Expand Up @@ -39,7 +39,7 @@ public void serialize(ScatterData value, JsonGenerator jgen, SerializerProvider

ScatterAgentMetaData metadata = value.getScatterAgentMetadata();
writeScatterAgentMetaData(metadata, jgen);
wrtieScatterData(value, metadata, jgen);
writeScatterData(value, metadata, jgen);

jgen.writeEndObject();
}
Expand All @@ -48,7 +48,7 @@ private void writeScatterAgentMetaData(ScatterAgentMetaData metaData, JsonGenera
jgen.writeObjectField("metadata", metaData);
}

private void wrtieScatterData(ScatterData scatterData, ScatterAgentMetaData metaData, JsonGenerator jgen) throws IOException {
private void writeScatterData(ScatterData scatterData, ScatterAgentMetaData metaData, JsonGenerator jgen) throws IOException {
jgen.writeArrayFieldStart("dotList");

Map<Long, DotGroups> sortedScatterDataMap = scatterData.getSortedScatterDataMap();
Expand Down
20 changes: 0 additions & 20 deletions web/src/main/java/com/navercorp/pinpoint/web/vo/scatter/Dot.java
Expand Up @@ -21,7 +21,6 @@
import com.navercorp.pinpoint.common.util.TransactionIdUtils;
import com.navercorp.pinpoint.web.view.DotSerializer;


@JsonSerialize(using = DotSerializer.class)
public class Dot {
public static final int EXCEPTION_NONE = 0;
Expand All @@ -35,16 +34,13 @@ public class Dot {
private final int exceptionCode;
private final String agentId;

private int hashCode = 0;

/**
*
* @param transactionId
* @param acceptedTime
* @param elapsedTime
* @param exceptionCode 0 : success, 1 : error
*/

public Dot(TransactionId transactionId, long acceptedTime, int elapsedTime, int exceptionCode, String agentId) {
if (transactionId == null) {
throw new NullPointerException("transactionId must not be null");
Expand All @@ -57,8 +53,6 @@ public Dot(TransactionId transactionId, long acceptedTime, int elapsedTime, int
this.elapsedTime = elapsedTime;
this.exceptionCode = exceptionCode;
this.agentId = agentId;

hashCode();
}

public TransactionId getTransactionId() {
Expand Down Expand Up @@ -112,18 +106,4 @@ public String toString() {
return sb.toString();
}

@Override
public int hashCode() {
if (hashCode == 0) {
int result = transactionId != null ? transactionId.hashCode() : 0;
result = 31 * result + (int) (acceptedTime ^ (acceptedTime >>> 32));
result = 31 * result + elapsedTime;
result = 31 * result + exceptionCode;
result = 31 * result + (agentId != null ? agentId.hashCode() : 0);

hashCode = result;
}
return hashCode;
}

}
Expand Up @@ -91,6 +91,33 @@ public void addDotTest2() throws Exception {
}
}

@Test
public void addDotTest3() throws Exception {
long from = 1000;
long to = 10000;
int xGroupUnit = 100;
int yGroupUnit = 100;

ScatterData scatterData = new ScatterData(from, to, xGroupUnit, yGroupUnit);

long currentTime = System.currentTimeMillis();

TransactionId transactionId = new TransactionId(transactionAgentId, currentTime, 1);

long acceptedTime = Math.max(Math.abs(ThreadLocalRandom.current().nextLong(Long.MAX_VALUE)), from);
int executionTime = (int) Math.abs(ThreadLocalRandom.current().nextLong(60 * 1000));

long acceptedTime2 = Math.max(Math.abs(ThreadLocalRandom.current().nextLong(Long.MAX_VALUE)), from);

Dot dot1 = new Dot(transactionId, acceptedTime2, executionTime, 0, agentId);
Dot dot2 = new Dot(transactionId, acceptedTime2, executionTime, 0, agentId);

scatterData.addDot(dot1);
scatterData.addDot(dot2);

List<Dot> dots = extractDotList(scatterData);
Assert.assertEquals(2, dots.size());
}

@Test
public void mergeTest() throws Exception {
Expand Down

0 comments on commit 9987015

Please sign in to comment.