Skip to content

Commit

Permalink
[#11992] Add ServiceId creation and deletion api
Browse files Browse the repository at this point in the history
  • Loading branch information
donghun-cho committed Jan 23, 2025
1 parent d31d099 commit 219b929
Show file tree
Hide file tree
Showing 17 changed files with 769 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,14 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.UUID;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.fail;
Expand Down Expand Up @@ -513,4 +518,46 @@ public void testShortToUnsignedShort() {
assertEquals(32768, BytesUtils.shortToUnsignedShort(maxOver));
assertEquals(65535, BytesUtils.shortToUnsignedShort((short) -1));
}

@Test
public void UUIDConversionTest() {
UUID uuid = UUID.randomUUID();
System.out.println("input: " + uuid);

byte[] bytes = BytesUtils.toBytes(uuid);
System.out.println("bytes: " + Arrays.toString(bytes));
System.out.println("bytes toString: " + BytesUtils.toString(bytes));

UUID convertedUUID = BytesUtils.toUUID(bytes);
System.out.println("result: " + convertedUUID);

org.assertj.core.api.Assertions.assertThat(uuid).isEqualTo(convertedUUID);
}

@Test
public void testMapConversion() throws IOException {
Map<String, String> tags = new HashMap<>();
tags.put("key2", "value2");
tags.put("key1", "value1");

System.out.println("----input----");
System.out.println("map: " + tags);

Properties properties = new Properties();
properties.putAll(tags);
System.out.println("java properties: " + properties);
System.out.print("properties.store(): ");
properties.store(System.out, null);


System.out.println("----output----");
byte[] bytes = BytesUtils.toBytes(tags);
System.out.println("bytes: " + Arrays.toString(bytes));
System.out.println("bytes toString: " + BytesUtils.toString(bytes));

Map<String, String> convertedTags = BytesUtils.toMap(bytes);
System.out.println("map: " + convertedTags);

org.assertj.core.api.Assertions.assertThat(tags).isEqualTo(convertedTags);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,21 @@ private ApplicationIndex(HbaseTable hBaseTable, byte[] columnFamilyName) {
}
}

public static final ServiceId SERVICE_ID = new ServiceId(HbaseTable.SERVICE_ID, Bytes.toBytes("I"));
public static class ServiceId extends HbaseColumnFamily {
private ServiceId(HbaseTable hBaseTable, byte[] columnFamilyName) {
super(hBaseTable, columnFamilyName);
}
}

public static final ServiceInfo SERVICE_NAME = new ServiceInfo(HbaseTable.SERVICE_INFO, Bytes.toBytes("N"));
public static final ServiceInfo SERVICE_INFO = new ServiceInfo(HbaseTable.SERVICE_INFO, Bytes.toBytes("I"));
public static class ServiceInfo extends HbaseColumnFamily {
private ServiceInfo(HbaseTable hBaseTable, byte[] columnFamilyName) {
super(hBaseTable, columnFamilyName);
}
}

public static final ApplicationStatStatistics APPLICATION_STAT_STATISTICS = new ApplicationStatStatistics(HbaseTable.APPLICATION_STAT_AGGRE, Bytes.toBytes("S"));
public static class ApplicationStatStatistics extends HbaseColumnFamily {
public int TIMESPAN_MS = 5 * 60 * 1000;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ public enum HbaseTable {
AGENT_STAT_VER2("AgentStatV2"),
AGENT_URI_STAT("AgentUriStat"),
API_METADATA("ApiMetaData"),
SERVICE_INFO("ServiceInfo"),
SERVICE_ID("ServiceId"),
APPLICATION_INDEX("ApplicationIndex"),
APPLICATION_STAT_AGGRE("ApplicationStatAggre"),
APPLICATION_TRACE_INDEX("ApplicationTraceIndex"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.navercorp.pinpoint.common.server.bo.id;

import jakarta.annotation.Nullable;

import java.util.Collections;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;

public class ServiceInfo {

public static final UUID DEFAULT_SERVICE_ID = new UUID(0, 0);
public static final ServiceInfo DEFAULT = new ServiceInfo(DEFAULT_SERVICE_ID, "DEFAULT", Collections.emptyMap());

Check warning on line 13 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java#L12-L13

Added lines #L12 - L13 were not covered by tests

private final UUID serviceId;
private final String serviceName;

private final Map<String, String> tags;

public ServiceInfo(UUID serviceId, String serviceName,
@Nullable Map<String, String> tags) {
this.serviceId = Objects.requireNonNull(serviceId, "serviceId");
this.serviceName = Objects.requireNonNull(serviceName, "serviceName");
this.tags = tags;
}

Check warning on line 25 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java#L21-L25

Added lines #L21 - L25 were not covered by tests

public UUID getServiceId() {
return serviceId;

Check warning on line 28 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java#L28

Added line #L28 was not covered by tests
}

public String getServiceName() {
return serviceName;

Check warning on line 32 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java#L32

Added line #L32 was not covered by tests
}

public Map<String, String> getTags() {
return tags;

Check warning on line 36 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java#L36

Added line #L36 was not covered by tests
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

ServiceInfo that = (ServiceInfo) o;

Check warning on line 44 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java#L44

Added line #L44 was not covered by tests

return serviceId.equals(that.serviceId);

Check warning on line 46 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java#L46

Added line #L46 was not covered by tests
}

@Override
public int hashCode() {
return serviceId.hashCode();

Check warning on line 51 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/id/ServiceInfo.java#L51

Added line #L51 was not covered by tests
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.navercorp.pinpoint.common.server.dao.hbase.mapper.id;

import com.navercorp.pinpoint.common.hbase.HbaseColumnFamily;
import com.navercorp.pinpoint.common.hbase.RowMapper;
import com.navercorp.pinpoint.common.util.BytesUtils;
import org.apache.hadoop.hbase.client.Result;
import org.springframework.stereotype.Component;

import java.util.UUID;

@Component
public class ServiceIdMapper implements RowMapper<UUID> {

Check warning on line 12 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java#L12

Added line #L12 was not covered by tests

private static final HbaseColumnFamily.ServiceId DESCRIPTOR = HbaseColumnFamily.SERVICE_ID;

Check warning on line 14 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java#L14

Added line #L14 was not covered by tests

@Override
public UUID mapRow(Result result, int rowNum) throws Exception {
if (result.isEmpty()) {
return null;

Check warning on line 19 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java#L19

Added line #L19 was not covered by tests
}
byte[] family = DESCRIPTOR.getName();
byte[] qualifier = DESCRIPTOR.getName();

Check warning on line 22 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java#L21-L22

Added lines #L21 - L22 were not covered by tests

byte[] serializedServiceId = result.getValue(family, qualifier);
return BytesUtils.toUUID(serializedServiceId);

Check warning on line 25 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdMapper.java#L24-L25

Added lines #L24 - L25 were not covered by tests
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.navercorp.pinpoint.common.server.dao.hbase.mapper.id;

import com.navercorp.pinpoint.common.hbase.RowMapper;
import com.navercorp.pinpoint.common.util.BytesUtils;
import org.apache.hadoop.hbase.client.Result;
import org.springframework.stereotype.Component;

@Component
public class ServiceIdNameMapper implements RowMapper<String> {

Check warning on line 9 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdNameMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdNameMapper.java#L9

Added line #L9 was not covered by tests

@Override
public String mapRow(Result result, int rowNum) throws Exception {
if (result.isEmpty()) {
return null;

Check warning on line 14 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdNameMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdNameMapper.java#L14

Added line #L14 was not covered by tests
}
byte[] rowKey = result.getRow();
return BytesUtils.toString(rowKey);

Check warning on line 17 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdNameMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceIdNameMapper.java#L16-L17

Added lines #L16 - L17 were not covered by tests
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.navercorp.pinpoint.common.server.dao.hbase.mapper.id;

import com.navercorp.pinpoint.common.hbase.HbaseColumnFamily;
import com.navercorp.pinpoint.common.hbase.RowMapper;
import com.navercorp.pinpoint.common.server.bo.id.ServiceInfo;
import com.navercorp.pinpoint.common.util.BytesUtils;
import org.apache.hadoop.hbase.client.Result;
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.UUID;

@Component
public class ServiceInfoMapper implements RowMapper<ServiceInfo> {

Check warning on line 14 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java#L14

Added line #L14 was not covered by tests

private static final HbaseColumnFamily.ServiceInfo NAME = HbaseColumnFamily.SERVICE_NAME;
private static final HbaseColumnFamily.ServiceInfo INFO = HbaseColumnFamily.SERVICE_INFO;

Check warning on line 17 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java#L16-L17

Added lines #L16 - L17 were not covered by tests

public ServiceInfo mapRow(Result result, int rowNum) throws Exception {
if (result.isEmpty()) {
return null;

Check warning on line 21 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java#L21

Added line #L21 was not covered by tests
}
byte[] rowKey = result.getRow();
UUID serviceId = BytesUtils.toUUID(rowKey);

Check warning on line 24 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java#L23-L24

Added lines #L23 - L24 were not covered by tests

byte[] serviceNameBytes = result.getValue(NAME.getName(), NAME.getName());
String serviceName = BytesUtils.toString(serviceNameBytes);

Check warning on line 27 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java#L26-L27

Added lines #L26 - L27 were not covered by tests

Map<String, String> tags = null;
byte[] tagsBytes = result.getValue(INFO.getName(), INFO.getName());

Check warning on line 30 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java#L29-L30

Added lines #L29 - L30 were not covered by tests
if (tagsBytes != null) {
tags = BytesUtils.toMap(tagsBytes);

Check warning on line 32 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java#L32

Added line #L32 was not covered by tests
}
return new ServiceInfo(serviceId, serviceName, tags);

Check warning on line 34 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoMapper.java#L34

Added line #L34 was not covered by tests
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.navercorp.pinpoint.common.server.dao.hbase.mapper.id;

import com.navercorp.pinpoint.common.hbase.HbaseColumnFamily;
import com.navercorp.pinpoint.common.hbase.RowMapper;
import com.navercorp.pinpoint.common.util.BytesUtils;
import org.apache.hadoop.hbase.client.Result;
import org.springframework.stereotype.Component;

@Component
public class ServiceInfoNameMapper implements RowMapper<String> {

Check warning on line 10 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java#L10

Added line #L10 was not covered by tests

private static final HbaseColumnFamily.ServiceInfo DESCRIPTOR = HbaseColumnFamily.SERVICE_NAME;

Check warning on line 12 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java#L12

Added line #L12 was not covered by tests

@Override
public String mapRow(Result result, int rowNum) throws Exception {
if (result.isEmpty()) {
return null;

Check warning on line 17 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java#L17

Added line #L17 was not covered by tests
}
byte[] family = DESCRIPTOR.getName();
byte[] qualifier = DESCRIPTOR.getName();

Check warning on line 20 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java#L19-L20

Added lines #L19 - L20 were not covered by tests

byte[] serializedServiceName = result.getValue(family, qualifier);
return BytesUtils.toString(serializedServiceName);

Check warning on line 23 in commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java

View check run for this annotation

Codecov / codecov/patch

commons-server/src/main/java/com/navercorp/pinpoint/common/server/dao/hbase/mapper/id/ServiceInfoNameMapper.java#L22-L23

Added lines #L22 - L23 were not covered by tests
}
}
Loading

0 comments on commit 219b929

Please sign in to comment.