This is an automated email from the ASF dual-hosted git repository.
jin pushed a commit to branch fix-slowlog
in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph.git
The following commit(s) were added to refs/heads/fix-slowlog by this push:
new 2546ecd21 enhance the perf
2546ecd21 is described below
commit 2546ecd210a6546bd321f0490eef3588c9d10670
Author: imbajin <[email protected]>
AuthorDate: Sun Nov 12 19:30:02 2023 +0800
enhance the perf
---
.../hugegraph/api/filter/AccessLogFilter.java | 31 ++++++++---------
.../apache/hugegraph/api/filter/PathFilter.java | 2 +-
.../org/apache/hugegraph/api/ArthasApiTest.java | 5 +--
.../java/org/apache/hugegraph/api/BaseApiTest.java | 3 +-
.../org/apache/hugegraph/api/LoginApiTest.java | 33 ++++++++----------
.../org/apache/hugegraph/api/MetricsApiTest.java | 39 +++++++++-------------
.../org/apache/hugegraph/api/ProjectApiTest.java | 20 +++++------
.../java/org/apache/hugegraph/api/UserApiTest.java | 26 +++++++--------
.../org/apache/hugegraph/unit/UnitTestSuite.java | 31 +++++++++--------
9 files changed, 86 insertions(+), 104 deletions(-)
diff --git
a/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/filter/AccessLogFilter.java
b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/filter/AccessLogFilter.java
index 435a9be35..b3623e42d 100644
---
a/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/filter/AccessLogFilter.java
+++
b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/filter/AccessLogFilter.java
@@ -45,29 +45,30 @@ import jakarta.ws.rs.ext.Provider;
@Singleton
public class AccessLogFilter implements ContainerResponseFilter {
+ private static final Logger LOG = Log.logger(AccessLogFilter.class);
+
private static final String DELIMITER = "/";
private static final String GRAPHS = "graphs";
private static final String GREMLIN = "gremlin";
private static final String CYPHER = "cypher";
- private static final Logger LOG = Log.logger(AccessLogFilter.class);
-
@Context
private jakarta.inject.Provider<HugeConfig> configProvider;
+ private final HugeConfig config = configProvider.get();
+ private final long timeThreshold =
config.get(ServerOptions.SLOW_QUERY_LOG_TIME_THRESHOLD);
- public static boolean needRecord(ContainerRequestContext context) {
+ public static boolean needRecordLog(ContainerRequestContext context) {
// TODO: add test for 'path' result ('/gremlin' or 'gremlin')
String path = context.getUriInfo().getPath();
// GraphsAPI/CypherAPI/Job GremlinAPI
if (path.startsWith(GRAPHS)) {
- if (HttpMethod.GET.equals(context.getMethod()) ||
- path.endsWith(CYPHER) || path.endsWith(GREMLIN)) {
+ if (HttpMethod.GET.equals(context.getMethod()) ||
path.endsWith(CYPHER)) {
return true;
}
}
- // Raw GremlinAPI
- return path.startsWith(GREMLIN);
+ // Direct GremlinAPI
+ return path.endsWith(GREMLIN);
}
private String join(String path1, String path2) {
@@ -105,16 +106,12 @@ public class AccessLogFilter implements
ContainerResponseFilter {
MetricsUtil.registerHistogram(join(metricsName,
METRICS_PATH_RESPONSE_TIME_HISTOGRAM))
.update(executeTime);
- if (needRecord(requestContext)) {
- HugeConfig config = configProvider.get();
- long timeThreshold =
config.get(ServerOptions.SLOW_QUERY_LOG_TIME_THRESHOLD);
-
- // Record slow query if meet needs
- if (timeThreshold > 0 && executeTime > timeThreshold) {
- // TODO: set RequestBody null, handle it later & should
record "client IP"
- LOG.info("[Slow Query] execTime={}ms, body={}, method={},
path={}, query={}",
- executeTime, null, method, path,
uri.getRawQuery());
- }
+ // Record slow query if meet needs, watch out the perf
+ if (timeThreshold > 0 && timeThreshold < executeTime &&
+ needRecordLog(requestContext)) {
+ // TODO: set RequestBody null, handle it later & should record
"client IP"
+ LOG.info("[Slow Query] execTime={}ms, body={}, method={},
path={}, query={}",
+ executeTime, null, method, path, uri.getQuery());
}
}
}
diff --git
a/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/filter/PathFilter.java
b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/filter/PathFilter.java
index 3ae9c35bc..e7520f84f 100644
---
a/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/filter/PathFilter.java
+++
b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/filter/PathFilter.java
@@ -37,7 +37,7 @@ public class PathFilter implements ContainerRequestFilter {
public void filter(ContainerRequestContext context) throws IOException {
context.setProperty(REQUEST_TIME, System.currentTimeMillis());
- // TODO: comment it to fix loader bug, handle it later
+ // TODO: temporarily comment it to fix loader bug, handle it later
/*// record the request json
String method = context.getMethod();
String requestParamsJson = "";
diff --git
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/ArthasApiTest.java
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/ArthasApiTest.java
index 174b665fe..c73276b38 100644
---
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/ArthasApiTest.java
+++
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/ArthasApiTest.java
@@ -46,8 +46,9 @@ public class ArthasApiTest extends BaseApiTest {
" \"execTimeout\": \"10000\"\n" +
"}";
RestClient arthasApiClient = new RestClient(ARTHAS_API_BASE_URL,
false);
- // If request header contains basic auth, and if we are not set auth
when arthas attach hg,
- // arthas will auth it and return 401.
ref:https://arthas.aliyun.com/en/doc/auth.html#configure-username-and-password
+ // If the request header contains basic auth,
+ // and if we are not set auth when arthas attach hg, arthas will auth
it and return 401.
+ //
ref:https://arthas.aliyun.com/en/doc/auth.html#configure-username-and-password
Response r = arthasApiClient.post(ARTHAS_API_PATH, body);
String result = assertResponseStatus(200, r);
assertJsonContains(result, "state");
diff --git
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/BaseApiTest.java
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/BaseApiTest.java
index 24b19ba1e..a964a7236 100644
---
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/BaseApiTest.java
+++
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/BaseApiTest.java
@@ -139,8 +139,7 @@ public class BaseApiTest {
return this.target.path(path).path(id).request().get();
}
- public Response get(String path,
- MultivaluedMap<String, Object> headers) {
+ public Response get(String path, MultivaluedMap<String, Object>
headers) {
return this.target.path(path).request().headers(headers).get();
}
diff --git
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/LoginApiTest.java
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/LoginApiTest.java
index 40c83d511..30775cb72 100644
---
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/LoginApiTest.java
+++
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/LoginApiTest.java
@@ -20,18 +20,18 @@ package org.apache.hugegraph.api;
import java.nio.file.Paths;
import java.util.Map;
-import jakarta.ws.rs.core.GenericType;
-import jakarta.ws.rs.core.HttpHeaders;
-import jakarta.ws.rs.core.MultivaluedHashMap;
-import jakarta.ws.rs.core.MultivaluedMap;
-import jakarta.ws.rs.core.Response;
+import org.apache.hugegraph.testutil.Assert;
+import org.apache.hugegraph.util.JsonUtil;
import org.apache.tinkerpop.shaded.jackson.core.type.TypeReference;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.apache.hugegraph.testutil.Assert;
-import org.apache.hugegraph.util.JsonUtil;
+import jakarta.ws.rs.core.GenericType;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
public class LoginApiTest extends BaseApiTest {
@@ -42,8 +42,7 @@ public class LoginApiTest extends BaseApiTest {
@Before
public void setup() {
Response r = this.createUser("test", "test");
- Map<String, Object> user = r.readEntity(
- new GenericType<Map<String, Object>>(){});
+ Map<String, Object> user = r.readEntity(new GenericType<Map<String,
Object>>(){});
this.userId4Test = (String) user.get("id");
}
@@ -115,9 +114,8 @@ public class LoginApiTest extends BaseApiTest {
assertJsonContains(result, "user_id");
assertJsonContains(result, "user_name");
- Map<String, Object> user = JsonUtil.fromJson(
- result,
- new TypeReference<Map<String, Object>>(){});
+ Map<String, Object> user = JsonUtil.fromJson(result,
+ new
TypeReference<Map<String, Object>>(){});
Assert.assertEquals(this.userId4Test, user.get("user_id"));
Assert.assertEquals("test", user.get("user_name"));
@@ -142,8 +140,7 @@ public class LoginApiTest extends BaseApiTest {
"\",\"user_email\":\"[email protected]\"," +
"\"user_phone\":\"123456789\",\"user_avatar\":\"image1" +
".jpg\"}";
- return this.client().post(USER_PATH,
- String.format(user, name, password));
+ return this.client().post(USER_PATH, String.format(user, name,
password));
}
private Response deleteUser(String id) {
@@ -155,14 +152,12 @@ public class LoginApiTest extends BaseApiTest {
String loginUser = "{\"user_name\":\"%s\"," +
"\"user_password\":\"%s\"}";
- return client().post(login, String.format(loginUser,
- name, password));
+ return client().post(login, String.format(loginUser, name, password));
}
private String tokenFromResponse(String content) {
- Map<String, Object> data = JsonUtil.fromJson(
- content,
- new TypeReference<Map<String, Object>>(){});
+ Map<String, Object> data = JsonUtil.fromJson(content,
+ new
TypeReference<Map<String, Object>>(){});
return (String) data.get("token");
}
}
diff --git
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/MetricsApiTest.java
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/MetricsApiTest.java
index cce5af30c..86759483c 100644
---
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/MetricsApiTest.java
+++
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/MetricsApiTest.java
@@ -27,14 +27,14 @@ import jakarta.ws.rs.core.Response;
public class MetricsApiTest extends BaseApiTest {
- private static final String path = "/metrics";
- private static final String statisticsPath = path + "/statistics";
+ private static final String PATH = "/metrics";
+ private static final String STATISTICS_PATH = PATH + "/statistics";
@Test
public void testBaseMetricsAll() {
Map<String, Object> params = new HashMap<>();
params.put("type", "json");
- Response r = client().get(path, params);
+ Response r = client().get(PATH, params);
String result = assertResponseStatus(200, r);
assertJsonContains(result, "gauges");
assertJsonContains(result, "counters");
@@ -45,7 +45,7 @@ public class MetricsApiTest extends BaseApiTest {
@Test
public void testBaseMetricsPromAll() {
- Response r = client().get(path);
+ Response r = client().get(PATH);
assertResponseStatus(200, r);
}
@@ -53,19 +53,19 @@ public class MetricsApiTest extends BaseApiTest {
public void testStatisticsMetricsAll() {
Map<String, String> params = new HashMap<>();
params.put("type", "json");
- Response r = client().get(path);
+ Response r = client().get(PATH);
assertResponseStatus(200, r);
}
@Test
public void testStatisticsMetricsPromAll() {
- Response r = client().get(statisticsPath);
+ Response r = client().get(STATISTICS_PATH);
assertResponseStatus(200, r);
}
@Test
public void testMetricsSystem() {
- Response r = client().get(path, "system");
+ Response r = client().get(PATH, "system");
String result = assertResponseStatus(200, r);
assertJsonContains(result, "basic");
assertJsonContains(result, "heap");
@@ -77,7 +77,7 @@ public class MetricsApiTest extends BaseApiTest {
@Test
public void testMetricsBackend() {
- Response r = client().get(path, "backend");
+ Response r = client().get(PATH, "backend");
String result = assertResponseStatus(200, r);
Object value = assertJsonContains(result, "hugegraph");
@@ -125,10 +125,8 @@ public class MetricsApiTest extends BaseApiTest {
for (Map.Entry<?, ?> e : servers.entrySet()) {
String key = (String) e.getKey();
value = e.getValue();
- Assert.assertTrue(String.format(
- "Expect map value for key %s but got %s",
- key, value),
- value instanceof Map);
+ Assert.assertTrue(String.format("Expect map value for key
%s but got %s",
+ key, value), value
instanceof Map);
host = (Map<?, ?>) value;
assertMapContains(host, "mem_max");
assertMapContains(host, "mem_committed");
@@ -188,10 +186,8 @@ public class MetricsApiTest extends BaseApiTest {
for (Map.Entry<?, ?> e : servers.entrySet()) {
String key = (String) e.getKey();
value = e.getValue();
- Assert.assertTrue(String.format(
- "Expect map value for key %s but got %s",
- key, value),
- value instanceof Map);
+ Assert.assertTrue(String.format("Expect map value for key
%s but got %s",
+ key, value), value
instanceof Map);
host = (Map<?, ?>) value;
assertMapContains(host, "mem_max");
assertMapContains(host, "mem_committed");
@@ -257,10 +253,8 @@ public class MetricsApiTest extends BaseApiTest {
for (Map.Entry<?, ?> e : servers.entrySet()) {
String key = (String) e.getKey();
value = e.getValue();
- Assert.assertTrue(String.format(
- "Expect map value for key %s but got %s",
- key, value),
- value instanceof Map);
+ Assert.assertTrue(String.format("Expect map value for key
%s but got %s",
+ key, value), value
instanceof Map);
Map<?, ?> regionServer = (Map<?, ?>) value;
assertMapContains(regionServer, "mem_max");
assertMapContains(regionServer, "mem_used");
@@ -275,8 +269,7 @@ public class MetricsApiTest extends BaseApiTest {
assertMapContains(regionServer,
"request_count_per_second");
assertMapContains(regionServer, "coprocessor_names");
- Map<?, ?> regions = assertMapContains(regionServer,
- "regions");
+ Map<?, ?> regions = assertMapContains(regionServer,
"regions");
Assert.assertGte(1, regions.size());
for (Map.Entry<?, ?> e2 : regions.entrySet()) {
Map<?, ?> region = (Map<?, ?>) e2.getValue();
@@ -307,7 +300,7 @@ public class MetricsApiTest extends BaseApiTest {
}
break;
default:
- Assert.assertTrue("Unexpected backend " + backend, false);
+ Assert.fail("Unexpected backend " + backend);
break;
}
}
diff --git
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/ProjectApiTest.java
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/ProjectApiTest.java
index 3f4239dfc..1d372f0c5 100644
---
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/ProjectApiTest.java
+++
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/ProjectApiTest.java
@@ -20,17 +20,18 @@ package org.apache.hugegraph.api;
import java.util.List;
import java.util.Map;
-import jakarta.ws.rs.client.Entity;
-import jakarta.ws.rs.core.Response;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.hugegraph.util.JsonUtil;
import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
-import org.apache.hugegraph.util.JsonUtil;
import com.google.common.collect.ImmutableMap;
+import jakarta.ws.rs.client.Entity;
+import jakarta.ws.rs.core.Response;
+
public class ProjectApiTest extends BaseApiTest {
private static final String PATH = "graphs/hugegraph/auth/projects";
@@ -45,9 +46,9 @@ public class ProjectApiTest extends BaseApiTest {
@SuppressWarnings("unchecked")
Map<String, Object> projectMap = ((Map<String, Object>) project);
String projectId = (String) projectMap.get("id");
- // remove graphs from project if needed
+ // remove graphs from a project if needed
List<?> projectGraphs = (List<?>) projectMap.get("project_graphs");
- if (projectGraphs != null && projectGraphs.size() > 0) {
+ if (projectGraphs != null && !projectGraphs.isEmpty()) {
Map<String, Object> graphs = ImmutableMap.of("project_graphs",
projectGraphs);
resp = client().target()
@@ -70,9 +71,9 @@ public class ProjectApiTest extends BaseApiTest {
@Test
public void testCreate() {
- String project = String.format("{\"project_name\": \"test_project\"," +
- "\"project_description\": " +
- "\"this is a good project\"}");
+ String project = "{\"project_name\": \"test_project\"," +
+ "\"project_description\": " +
+ "\"this is a good project\"}";
Response resp = client().post(PATH, project);
String respBody = assertResponseStatus(201, resp);
String projectName = assertJsonContains(respBody, "project_name");
@@ -256,7 +257,6 @@ public class ProjectApiTest extends BaseApiTest {
.path(projectId)
.request()
.get();
- String respBody = assertResponseStatus(200, resp);
- return respBody;
+ return assertResponseStatus(200, resp);
}
}
diff --git
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/UserApiTest.java
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/UserApiTest.java
index e2759b636..ff457242b 100644
---
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/UserApiTest.java
+++
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/api/UserApiTest.java
@@ -20,16 +20,17 @@ package org.apache.hugegraph.api;
import java.util.List;
import java.util.Map;
-import jakarta.ws.rs.core.Response;
+import org.apache.hugegraph.util.JsonUtil;
import org.apache.tinkerpop.shaded.jackson.core.type.TypeReference;
import org.hamcrest.CoreMatchers;
import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
-import org.apache.hugegraph.util.JsonUtil;
import com.google.common.collect.ImmutableMap;
+import jakarta.ws.rs.core.Response;
+
public class UserApiTest extends BaseApiTest {
private static final String PATH = "graphs/hugegraph/auth/users";
@@ -39,16 +40,14 @@ public class UserApiTest extends BaseApiTest {
@After
public void teardown() throws Exception {
super.teardown();
- Response r = this.client().get(PATH,
- ImmutableMap.of("limit", NO_LIMIT));
+ Response r = this.client().get(PATH, ImmutableMap.of("limit",
NO_LIMIT));
String result = r.readEntity(String.class);
Map<String, List<Map<String, Object>>> resultMap =
- JsonUtil.fromJson(result,
- new TypeReference<Map<String,
- List<Map<String, Object>>>>() {});
+ JsonUtil.fromJson(result,
+ new TypeReference<Map<String, List<Map<String,
Object>>>>() {});
List<Map<String, Object>> users = resultMap.get("users");
for (Map<String, Object> user : users) {
- if (user.get("user_name").equals("admin")) {
+ if ("admin".equals(user.get("user_name"))) {
continue;
}
this.client().delete(PATH, (String) user.get("id"));
@@ -124,7 +123,7 @@ public class UserApiTest extends BaseApiTest {
createUser("test2");
List<Map<String, Object>> users = listUsers();
for (Map<String, Object> user : users) {
- if (user.get("user_name").equals("admin")) {
+ if ("admin".equals(user.get("user_name"))) {
continue;
}
String user1 = "{\"user_password\":\"p1\"," +
@@ -146,7 +145,7 @@ public class UserApiTest extends BaseApiTest {
List<Map<String, Object>> users = listUsers();
for (Map<String, Object> user : users) {
- if (user.get("user_name").equals("admin")) {
+ if ("admin".equals(user.get("user_name"))) {
continue;
}
Response r = client().delete(PATH, (String) user.get("id"));
@@ -169,13 +168,12 @@ public class UserApiTest extends BaseApiTest {
}
protected List<Map<String, Object>> listUsers() {
- Response r = this.client().get(PATH, ImmutableMap.of("limit",
- NO_LIMIT));
+ Response r = this.client().get(PATH, ImmutableMap.of("limit",
NO_LIMIT));
String result = assertResponseStatus(200, r);
Map<String, List<Map<String, Object>>> resultMap =
- JsonUtil.fromJson(result, new TypeReference<Map<String,
- List<Map<String, Object>>>>()
{});
+ JsonUtil.fromJson(result,
+ new TypeReference<Map<String, List<Map<String,
Object>>>>() {});
return resultMap.get("users");
}
}
diff --git
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/unit/UnitTestSuite.java
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/unit/UnitTestSuite.java
index d72269a4f..eb1fb6ad3 100644
---
a/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/unit/UnitTestSuite.java
+++
b/hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/unit/UnitTestSuite.java
@@ -17,27 +17,12 @@
package org.apache.hugegraph.unit;
-import org.apache.hugegraph.unit.cassandra.CassandraTest;
-import org.apache.hugegraph.unit.id.EdgeIdTest;
-import org.apache.hugegraph.unit.id.IdTest;
-import org.apache.hugegraph.unit.id.IdUtilTest;
-import org.apache.hugegraph.unit.id.SplicingIdGeneratorTest;
-import org.apache.hugegraph.unit.mysql.MysqlUtilTest;
-import org.apache.hugegraph.unit.mysql.WhereBuilderTest;
-import org.apache.hugegraph.unit.rocksdb.RocksDBCountersTest;
-import org.apache.hugegraph.unit.rocksdb.RocksDBSessionTest;
-import org.apache.hugegraph.unit.rocksdb.RocksDBSessionsTest;
-import org.apache.hugegraph.unit.store.RamIntObjectMapTest;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-import org.apache.hugegraph.unit.core.SystemSchemaStoreTest;
-import org.apache.hugegraph.unit.util.RateLimiterTest;
import org.apache.hugegraph.unit.cache.CacheManagerTest;
import org.apache.hugegraph.unit.cache.CacheTest;
import org.apache.hugegraph.unit.cache.CachedGraphTransactionTest;
import org.apache.hugegraph.unit.cache.CachedSchemaTransactionTest;
import org.apache.hugegraph.unit.cache.RamTableTest;
+import org.apache.hugegraph.unit.cassandra.CassandraTest;
import org.apache.hugegraph.unit.core.AnalyzerTest;
import org.apache.hugegraph.unit.core.BackendMutationTest;
import org.apache.hugegraph.unit.core.BackendStoreInfoTest;
@@ -54,7 +39,17 @@ import org.apache.hugegraph.unit.core.RolePermissionTest;
import org.apache.hugegraph.unit.core.RowLockTest;
import org.apache.hugegraph.unit.core.SecurityManagerTest;
import org.apache.hugegraph.unit.core.SerialEnumTest;
+import org.apache.hugegraph.unit.core.SystemSchemaStoreTest;
import org.apache.hugegraph.unit.core.TraversalUtilTest;
+import org.apache.hugegraph.unit.id.EdgeIdTest;
+import org.apache.hugegraph.unit.id.IdTest;
+import org.apache.hugegraph.unit.id.IdUtilTest;
+import org.apache.hugegraph.unit.id.SplicingIdGeneratorTest;
+import org.apache.hugegraph.unit.mysql.MysqlUtilTest;
+import org.apache.hugegraph.unit.mysql.WhereBuilderTest;
+import org.apache.hugegraph.unit.rocksdb.RocksDBCountersTest;
+import org.apache.hugegraph.unit.rocksdb.RocksDBSessionTest;
+import org.apache.hugegraph.unit.rocksdb.RocksDBSessionsTest;
import org.apache.hugegraph.unit.serializer.BinaryBackendEntryTest;
import org.apache.hugegraph.unit.serializer.BinaryScatterSerializerTest;
import org.apache.hugegraph.unit.serializer.BinarySerializerTest;
@@ -63,8 +58,10 @@ import
org.apache.hugegraph.unit.serializer.SerializerFactoryTest;
import org.apache.hugegraph.unit.serializer.StoreSerializerTest;
import org.apache.hugegraph.unit.serializer.TableBackendEntryTest;
import org.apache.hugegraph.unit.serializer.TextBackendEntryTest;
+import org.apache.hugegraph.unit.store.RamIntObjectMapTest;
import org.apache.hugegraph.unit.util.CompressUtilTest;
import org.apache.hugegraph.unit.util.JsonUtilTest;
+import org.apache.hugegraph.unit.util.RateLimiterTest;
import org.apache.hugegraph.unit.util.StringEncodingTest;
import org.apache.hugegraph.unit.util.VersionTest;
import org.apache.hugegraph.unit.util.collection.CollectionFactoryTest;
@@ -73,6 +70,8 @@ import
org.apache.hugegraph.unit.util.collection.Int2IntsMapTest;
import org.apache.hugegraph.unit.util.collection.IntMapTest;
import org.apache.hugegraph.unit.util.collection.IntSetTest;
import org.apache.hugegraph.unit.util.collection.ObjectIntMappingTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({