This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new bf9f8aa8be support query endpoint list with time range (#12693)
bf9f8aa8be is described below
commit bf9f8aa8beee641ac17aba43bee88fff5b2d4939
Author: mrproliu <[email protected]>
AuthorDate: Tue Oct 15 15:17:12 2024 +0800
support query endpoint list with time range (#12693)
---
docs/en/changes/changes.md | 2 ++
.../core/analysis/manual/endpoint/EndpointTraffic.java | 18 ++++++++++++++++--
.../manual/endpoint/EndpointTrafficDispatcher.java | 1 +
.../oap/server/core/query/MetadataQueryService.java | 4 ++--
.../server/core/storage/query/IMetadataQueryDAO.java | 3 ++-
.../oap/query/promql/handler/PromQLApiHandler.java | 4 ++--
.../oap/query/graphql/resolver/MetadataQuery.java | 2 +-
.../oap/query/graphql/resolver/MetadataQueryV2.java | 4 ++--
.../src/main/resources/query-protocol | 2 +-
.../banyandb/measure/BanyanDBMetadataQueryDAO.java | 8 +++++++-
.../plugin/elasticsearch/query/MetadataQueryEsDAO.java | 8 +++++++-
.../plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java | 10 +++++++++-
test/e2e-v2/cases/browser/expected/dependency.yml | 4 ++++
.../cases/cilium/expected/dependency-services.yml | 8 ++++++++
.../gateway/expected/dependency-services-consumer.yml | 6 ++++++
.../gateway/expected/dependency-services-provider.yml | 6 ++++++
.../cases/go/expected/dependency-services-go.yml | 6 ++++++
.../als/expected/dependency-services-productpage.yml | 8 ++++++++
.../istio/als/expected/dependency-services-reviews.yml | 6 ++++++
.../expected/dependency-services-productpage.yml | 8 ++++++++
test/e2e-v2/cases/lua/expected/dependency-services.yml | 6 ++++++
.../expected/dependency-services-consumer-nodejs.yml | 6 ++++++
.../nodejs/expected/dependency-services-consumer.yml | 6 ++++++
.../expected/dependency-services-provider-nodejs.yml | 4 ++++
.../cases/php/expected/dependency-services-php.yml | 6 ++++++
.../php/expected/dependency-services-provider.yml | 6 ++++++
.../ebpf/access_log/expected/dependency-services.yml | 8 ++++++++
.../expected/dependency-services-consumer-py.yml | 8 ++++++++
.../expected/dependency-services-provider-py.yml | 4 ++++
.../native-protocols/expected/dependency-services.yml | 4 ++++
.../simple/expected/dependency-services-consumer.yml | 6 ++++++
.../simple/expected/dependency-services-provider.yml | 6 ++++++
test/e2e-v2/cases/simple/simple-cases.yaml | 3 +++
.../storage/expected/dependency-services-consumer.yml | 6 ++++++
.../storage/expected/dependency-services-provider.yml | 6 ++++++
test/e2e-v2/script/env | 2 +-
36 files changed, 190 insertions(+), 15 deletions(-)
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 80abde735c..78bd688eb1 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -7,6 +7,8 @@
* Reduce the count of process index and adding time range when query process
index.
* Bump up Apache commons-io to 2.17.0.
* Polish eBPF so11y metrics and add error count for query metrics.
+* Support query endpoint list with duration parameter(optional).
+* Change the endpoint_traffic to updatable for the additional column
`last_ping`.
#### UI
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java
index a2beaca1d3..f44a1af6eb 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java
@@ -40,14 +40,18 @@ import
org.apache.skywalking.oap.server.core.storage.type.StorageBuilder;
@Stream(name = EndpointTraffic.INDEX_NAME, scopeId =
DefaultScopeDefine.ENDPOINT,
builder = EndpointTraffic.Builder.class, processor =
MetricsStreamProcessor.class)
-@MetricsExtension(supportDownSampling = false, supportUpdate = false)
-@EqualsAndHashCode
+@MetricsExtension(supportDownSampling = false, supportUpdate = true)
+@EqualsAndHashCode(of = {
+ "serviceId",
+ "name"
+})
public class EndpointTraffic extends Metrics {
public static final String INDEX_NAME = "endpoint_traffic";
public static final String SERVICE_ID = "service_id";
public static final String NAME = "endpoint_traffic_name";
+ public static final String LAST_PING_TIME_BUCKET = "last_ping";
@Setter
@Getter
@@ -62,6 +66,10 @@ public class EndpointTraffic extends Metrics {
@BanyanDB.MatchQuery(analyzer = BanyanDB.MatchQuery.AnalyzerType.URL)
@BanyanDB.SeriesID(index = 1)
private String name = Const.EMPTY_STRING;
+ @Setter
+ @Getter
+ @Column(name = LAST_PING_TIME_BUCKET)
+ private long lastPingTimestamp;
@Override
protected StorageID id0() {
@@ -82,6 +90,7 @@ public class EndpointTraffic extends Metrics {
public RemoteData.Builder serialize() {
RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
remoteBuilder.addDataLongs(getTimeBucket());
+ remoteBuilder.addDataLongs(getLastPingTimestamp());
remoteBuilder.addDataStrings(serviceId);
remoteBuilder.addDataStrings(Strings.isNullOrEmpty(name) ?
Const.EMPTY_STRING : name);
@@ -91,6 +100,7 @@ public class EndpointTraffic extends Metrics {
@Override
public void deserialize(RemoteData remoteData) {
setTimeBucket(remoteData.getDataLongs(0));
+ setLastPingTimestamp(remoteData.getDataLongs(1));
setServiceId(remoteData.getDataStrings(0));
setName(remoteData.getDataStrings(1));
@@ -108,6 +118,7 @@ public class EndpointTraffic extends Metrics {
inventory.setServiceId((String) converter.get(SERVICE_ID));
inventory.setName((String) converter.get(NAME));
inventory.setTimeBucket(((Number)
converter.get(TIME_BUCKET)).longValue());
+ inventory.setLastPingTimestamp(((Number)
converter.get(LAST_PING_TIME_BUCKET)).longValue());
return inventory;
}
@@ -116,11 +127,14 @@ public class EndpointTraffic extends Metrics {
converter.accept(SERVICE_ID, storageData.getServiceId());
converter.accept(NAME, storageData.getName());
converter.accept(TIME_BUCKET, storageData.getTimeBucket());
+ converter.accept(LAST_PING_TIME_BUCKET,
storageData.getLastPingTimestamp());
}
}
@Override
public boolean combine(final Metrics metrics) {
+ final EndpointTraffic endpointTraffic = (EndpointTraffic) metrics;
+ this.lastPingTimestamp = endpointTraffic.getLastPingTimestamp();
return true;
}
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTrafficDispatcher.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTrafficDispatcher.java
index 44ff6d9f3a..c97b42be76 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTrafficDispatcher.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTrafficDispatcher.java
@@ -30,6 +30,7 @@ public class EndpointTrafficDispatcher implements
SourceDispatcher<Endpoint> {
traffic.setTimeBucket(source.getTimeBucket());
traffic.setName(source.getName());
traffic.setServiceId(source.getServiceId());
+ traffic.setLastPingTimestamp(source.getTimeBucket());
MetricsStreamProcessor.getInstance().in(traffic);
}
}
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
index eda7e1d990..96b9955f2e 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
@@ -123,8 +123,8 @@ public class MetadataQueryService implements
org.apache.skywalking.oap.server.li
}
public List<Endpoint> findEndpoint(final String keyword, final String
serviceId,
- final int limit) throws IOException {
- return getMetadataQueryDAO().findEndpoint(keyword, serviceId, limit)
+ final int limit, final Duration
duration) throws IOException {
+ return getMetadataQueryDAO().findEndpoint(keyword, serviceId, limit,
duration)
.stream().distinct().collect(Collectors.toList());
}
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
index d5883d7870..f8e8f2150b 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
@@ -56,9 +56,10 @@ public interface IMetadataQueryDAO extends DAO {
* @param keyword to filter the endpoints
* @param serviceId the owner of the endpoints
* @param limit max match size.
+ * @param duration filter endpoints with time range(last ping time)
* @return list of endpoint matching the given conditions.
*/
- List<Endpoint> findEndpoint(final String keyword, final String serviceId,
final int limit) throws IOException;
+ List<Endpoint> findEndpoint(final String keyword, final String serviceId,
final int limit, final Duration duration) throws IOException;
/**
* @param serviceId the service id of the process.
diff --git
a/oap-server/server-query-plugin/promql-plugin/src/main/java/org/apache/skywalking/oap/query/promql/handler/PromQLApiHandler.java
b/oap-server/server-query-plugin/promql-plugin/src/main/java/org/apache/skywalking/oap/query/promql/handler/PromQLApiHandler.java
index 85652125e4..d6fccf0a70 100644
---
a/oap-server/server-query-plugin/promql-plugin/src/main/java/org/apache/skywalking/oap/query/promql/handler/PromQLApiHandler.java
+++
b/oap-server/server-query-plugin/promql-plugin/src/main/java/org/apache/skywalking/oap/query/promql/handler/PromQLApiHandler.java
@@ -315,7 +315,7 @@ public class PromQLApiHandler {
String limit =
parseResult.getLabelMap().getOrDefault(LabelName.LIMIT.getLabel(), "100");
List<Endpoint> endpoints = metadataQuery.findEndpoint(
keyword, IDManager.ServiceID.buildId(serviceName,
Layer.valueOf(layer).isNormal()),
- Integer.parseInt(limit)
+ Integer.parseInt(limit), duration
).join();
endpoints.forEach(endpoint -> {
response.getData().add(endpoint.getName());
@@ -382,7 +382,7 @@ public class PromQLApiHandler {
String limit =
parseResult.getLabelMap().getOrDefault(LabelName.LIMIT.getLabel(), "100");
List<Endpoint> endpoints = metadataQuery.findEndpoint(
keyword, IDManager.ServiceID.buildId(serviceName,
Layer.valueOf(layer).isNormal()),
- Integer.parseInt(limit)
+ Integer.parseInt(limit), duration
).join();
endpoints.forEach(endpoint -> {
response.getData().add(buildMetricInfoFromTraffic(metricName,
endpoint));
diff --git
a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
index b7e6904962..038dc4c2c7 100644
---
a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
+++
b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
@@ -91,7 +91,7 @@ public class MetadataQuery implements GraphQLQueryResolver {
public List<Endpoint> searchEndpoint(final String keyword, final String
serviceId,
final int limit) throws IOException {
- return getMetadataQueryService().findEndpoint(keyword, serviceId,
limit);
+ return getMetadataQueryService().findEndpoint(keyword, serviceId,
limit, null);
}
public List<Database> getAllDatabases(final Duration duration) throws
IOException {
diff --git
a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQueryV2.java
b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQueryV2.java
index 32f70f7829..bc971d40b0 100644
---
a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQueryV2.java
+++
b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQueryV2.java
@@ -87,8 +87,8 @@ public class MetadataQueryV2 implements GraphQLQueryResolver {
}
public CompletableFuture<List<Endpoint>> findEndpoint(final String
keyword, final String serviceId,
- final int limit) {
- return queryAsync(() ->
getMetadataQueryService().findEndpoint(keyword, serviceId, limit));
+ final int limit,
final Duration duration) {
+ return queryAsync(() ->
getMetadataQueryService().findEndpoint(keyword, serviceId, limit, duration));
}
public CompletableFuture<EndpointInfo> getEndpointInfo(final String
endpointId) {
diff --git
a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
index 0fa72b147f..d5a8b092d1 160000
---
a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
+++
b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
@@ -1 +1 @@
-Subproject commit 0fa72b147fb4d0569b7182d6753cc225a2145c82
+Subproject commit d5a8b092d1ebbc5fe330c1c2a06fa688050a21c9
diff --git
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
index 5e4fd9dfd6..6b6eb28807 100644
---
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
+++
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
@@ -176,7 +176,7 @@ public class BanyanDBMetadataQueryDAO extends
AbstractBanyanDBDAO implements IMe
}
@Override
- public List<Endpoint> findEndpoint(String keyword, String serviceId, int
limit) throws IOException {
+ public List<Endpoint> findEndpoint(String keyword, String serviceId, int
limit, Duration duration) throws IOException {
MetadataRegistry.Schema schema =
MetadataRegistry.INSTANCE.findMetadata(EndpointTraffic.INDEX_NAME,
DownSampling.Minute);
MeasureQueryResponse resp = query(schema,
ENDPOINT_TRAFFIC_TAGS,
@@ -193,6 +193,12 @@ public class BanyanDBMetadataQueryDAO extends
AbstractBanyanDBDAO implements IMe
BanyandbModel.Condition.MatchOption.Operator.OPERATOR_AND).build()
));
}
+ if (duration != null) {
+ final var startTimeBucket =
TimeBucket.getMinuteTimeBucket(duration.getStartTimestamp());
+ final var endTimeBucket =
TimeBucket.getMinuteTimeBucket(duration.getEndTimestamp());
+
query.and(gte(EndpointTraffic.LAST_PING_TIME_BUCKET, startTimeBucket));
+
query.and(lte(EndpointTraffic.LAST_PING_TIME_BUCKET, endTimeBucket));
+ }
query.setOrderBy(new
AbstractQuery.OrderBy(AbstractQuery.Sort.DESC));
}
});
diff --git
a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
index b68ba473a8..59804e07fd 100644
---
a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
+++
b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
@@ -217,7 +217,7 @@ public class MetadataQueryEsDAO extends EsDAO implements
IMetadataQueryDAO {
}
@Override
- public List<Endpoint> findEndpoint(String keyword, String serviceId, int
limit) {
+ public List<Endpoint> findEndpoint(String keyword, String serviceId, int
limit, Duration duration) {
initColumnName();
final String index =
IndexController.LogicIndicesRegister.getPhysicalTableName(
EndpointTraffic.INDEX_NAME);
@@ -235,6 +235,12 @@ public class MetadataQueryEsDAO extends EsDAO implements
IMetadataQueryDAO {
query.must(Query.term(IndexController.LogicIndicesRegister.METRIC_TABLE_NAME,
EndpointTraffic.INDEX_NAME));
}
+ if (duration != null) {
+ final long startMinuteTimeBucket =
TimeBucket.getMinuteTimeBucket(duration.getStartTimestamp());
+ final long endMinuteTimeBucket =
TimeBucket.getMinuteTimeBucket(duration.getEndTimestamp());
+
query.must(Query.range(EndpointTraffic.LAST_PING_TIME_BUCKET).gte(startMinuteTimeBucket).lte(endMinuteTimeBucket));
+ }
+
final var search = Search.builder().query(query).size(limit).sort(
EndpointTraffic.TIME_BUCKET,
Sort.Order.DESC
diff --git
a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java
b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java
index 08a4324de7..ec0f7f87de 100644
---
a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java
+++
b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetadataQueryDAO.java
@@ -205,7 +205,7 @@ public class JDBCMetadataQueryDAO implements
IMetadataQueryDAO {
@Override
@SneakyThrows
- public List<Endpoint> findEndpoint(String keyword, String serviceId, int
limit) {
+ public List<Endpoint> findEndpoint(String keyword, String serviceId, int
limit, Duration duration) {
final var results = new ArrayList<Endpoint>();
final var tables =
tableHelper.getTablesWithinTTL(EndpointTraffic.INDEX_NAME);
@@ -223,6 +223,14 @@ public class JDBCMetadataQueryDAO implements
IMetadataQueryDAO {
sql.append(" and ").append(EndpointTraffic.NAME).append(" like
concat('%',?,'%') ");
condition.add(keyword);
}
+ if (duration != null) {
+ final var startMinuteTimeBucket =
TimeBucket.getMinuteTimeBucket(duration.getStartTimestamp());
+ final var endMinuteTimeBucket =
TimeBucket.getMinuteTimeBucket(duration.getEndTimestamp());
+ sql.append(" and
").append(EndpointTraffic.LAST_PING_TIME_BUCKET).append(" >= ?");
+ condition.add(startMinuteTimeBucket);
+ sql.append(" and
").append(EndpointTraffic.LAST_PING_TIME_BUCKET).append(" <= ?");
+ condition.add(endMinuteTimeBucket);
+ }
sql.append(" order by
").append(EndpointTraffic.TIME_BUCKET).append(" desc");
sql.append(" limit ").append(limit);
diff --git a/test/e2e-v2/cases/browser/expected/dependency.yml
b/test/e2e-v2/cases/browser/expected/dependency.yml
index db15fc6fe1..887a2b26d1 100644
--- a/test/e2e-v2/cases/browser/expected/dependency.yml
+++ b/test/e2e-v2/cases/browser/expected/dependency.yml
@@ -19,10 +19,14 @@ nodes:
name: provider-py
type: Python
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "test-ui<browser>"}}.1
name: test-ui<browser>
type: null
isreal: true
+ layers:
+ - UNDEFINED
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/cases/cilium/expected/dependency-services.yml
b/test/e2e-v2/cases/cilium/expected/dependency-services.yml
index ab14539a5f..74cae94364 100644
--- a/test/e2e-v2/cases/cilium/expected/dependency-services.yml
+++ b/test/e2e-v2/cases/cilium/expected/dependency-services.yml
@@ -19,18 +19,26 @@ nodes:
name: productpage.default
type: http
isreal: true
+ layers:
+ - CILIUM_SERVICE
- id: {{ b64enc "details.default"}}.1
name: details.default
type: http
isreal: true
+ layers:
+ - CILIUM_SERVICE
- id: {{ b64enc "ratings.default" }}.1
name: ratings.default
type: http
isreal: true
+ layers:
+ - CILIUM_SERVICE
- id: {{ b64enc "reviews.default" }}.1
name: reviews.default
type: http
isreal: true
+ layers:
+ - CILIUM_SERVICE
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/gateway/expected/dependency-services-consumer.yml
b/test/e2e-v2/cases/gateway/expected/dependency-services-consumer.yml
index 4c8f66f4a8..622bd59478 100644
--- a/test/e2e-v2/cases/gateway/expected/dependency-services-consumer.yml
+++ b/test/e2e-v2/cases/gateway/expected/dependency-services-consumer.yml
@@ -19,14 +19,20 @@ nodes:
name: User
type: USER
isreal: false
+ layers:
+ - UNDEFINED
- id: {{ b64enc "e2e-service-consumer" }}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "gateway:80" }}.0
name: gateway:80
type: SpringRestTemplate
isreal: false
+ layers:
+ - UNDEFINED
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/gateway/expected/dependency-services-provider.yml
b/test/e2e-v2/cases/gateway/expected/dependency-services-provider.yml
index e37c6b732a..c1758196f3 100644
--- a/test/e2e-v2/cases/gateway/expected/dependency-services-provider.yml
+++ b/test/e2e-v2/cases/gateway/expected/dependency-services-provider.yml
@@ -19,14 +19,20 @@ nodes:
name: e2e-service-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "gateway:80" }}.0
name: gateway:80
type: Tomcat
isreal: false
+ layers:
+ - UNDEFINED
- id: {{ b64enc "localhost:-1" }}.0
name: localhost:-1
type: H2
isreal: false
+ layers:
+ - VIRTUAL_DATABASE
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/cases/go/expected/dependency-services-go.yml
b/test/e2e-v2/cases/go/expected/dependency-services-go.yml
index 5d08db3d94..2b7d8d7dca 100644
--- a/test/e2e-v2/cases/go/expected/dependency-services-go.yml
+++ b/test/e2e-v2/cases/go/expected/dependency-services-go.yml
@@ -19,14 +19,20 @@ nodes:
name: e2e-service-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "e2e-service-consumer"}}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "go-service" }}.1
name: go-service
type: Gin
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/istio/als/expected/dependency-services-productpage.yml
b/test/e2e-v2/cases/istio/als/expected/dependency-services-productpage.yml
index 1115fe4247..032a0df8db 100644
--- a/test/e2e-v2/cases/istio/als/expected/dependency-services-productpage.yml
+++ b/test/e2e-v2/cases/istio/als/expected/dependency-services-productpage.yml
@@ -19,18 +19,26 @@ nodes:
name: e2e::reviews
type: http
isreal: true
+ layers:
+ - MESH
- id: {{ b64enc "e2e::productpage"}}.1
name: e2e::productpage
type: http
isreal: true
+ layers:
+ - MESH
- id: {{ b64enc "e2e::details" }}.1
name: e2e::details
type: http
isreal: true
+ layers:
+ - MESH
- id: {{ b64enc "e2e::istio-ingressgateway" }}.1
name: e2e::istio-ingressgateway
type: http
isreal: true
+ layers:
+ - MESH
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/istio/als/expected/dependency-services-reviews.yml
b/test/e2e-v2/cases/istio/als/expected/dependency-services-reviews.yml
index b69ec4ae1b..f62ff2b7ac 100644
--- a/test/e2e-v2/cases/istio/als/expected/dependency-services-reviews.yml
+++ b/test/e2e-v2/cases/istio/als/expected/dependency-services-reviews.yml
@@ -19,14 +19,20 @@ nodes:
name: e2e::reviews
type: http
isreal: true
+ layers:
+ - MESH
- id: {{ b64enc "e2e::ratings"}}.1
name: e2e::ratings
type: http
isreal: true
+ layers:
+ - MESH
- id: {{ b64enc "e2e::productpage" }}.1
name: e2e::productpage
type: http
isreal: true
+ layers:
+ - MESH
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/istio/metrics/expected/dependency-services-productpage.yml
b/test/e2e-v2/cases/istio/metrics/expected/dependency-services-productpage.yml
index 3759299c8d..cfa78b0d71 100644
---
a/test/e2e-v2/cases/istio/metrics/expected/dependency-services-productpage.yml
+++
b/test/e2e-v2/cases/istio/metrics/expected/dependency-services-productpage.yml
@@ -19,18 +19,26 @@ nodes:
name: e2e::reviews
type: null
isreal: true
+ layers:
+ - MESH_DP
- id: {{ b64enc "e2e::productpage"}}.1
name: e2e::productpage
type: null
isreal: true
+ layers:
+ - MESH_DP
- id: {{ b64enc "e2e::details" }}.1
name: e2e::details
type: null
isreal: true
+ layers:
+ - MESH_DP
- id: ZTJlOjppc3Rpby1pbmdyZXNzZ2F0ZXdheQ==.1
name: e2e::istio-ingressgateway
type: null
isreal: true
+ layers:
+ - MESH_DP
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/cases/lua/expected/dependency-services.yml
b/test/e2e-v2/cases/lua/expected/dependency-services.yml
index 8f2b3152fb..bfafc44d0c 100644
--- a/test/e2e-v2/cases/lua/expected/dependency-services.yml
+++ b/test/e2e-v2/cases/lua/expected/dependency-services.yml
@@ -19,14 +19,20 @@ nodes:
name: e2e-service-entry-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "e2e-service-end-provider"}}.1
name: e2e-service-end-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "User_Service_Name"}}.1
name: User_Service_Name
type: Nginx
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/nodejs/expected/dependency-services-consumer-nodejs.yml
b/test/e2e-v2/cases/nodejs/expected/dependency-services-consumer-nodejs.yml
index 89d3f96520..0f3a5c8880 100644
--- a/test/e2e-v2/cases/nodejs/expected/dependency-services-consumer-nodejs.yml
+++ b/test/e2e-v2/cases/nodejs/expected/dependency-services-consumer-nodejs.yml
@@ -19,14 +19,20 @@ nodes:
name: User
type: USER
isreal: false
+ layers:
+ - UNDEFINED
- id: {{ b64enc "e2e-service-consumer" }}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "consumer" }}.1
name: consumer
type: http
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/cases/nodejs/expected/dependency-services-consumer.yml
b/test/e2e-v2/cases/nodejs/expected/dependency-services-consumer.yml
index d750b2b1f2..2e351c3ae6 100644
--- a/test/e2e-v2/cases/nodejs/expected/dependency-services-consumer.yml
+++ b/test/e2e-v2/cases/nodejs/expected/dependency-services-consumer.yml
@@ -19,14 +19,20 @@ nodes:
name: provider
type: Express
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "e2e-service-consumer" }}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "consumer" }}.1
name: consumer
type: http
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/nodejs/expected/dependency-services-provider-nodejs.yml
b/test/e2e-v2/cases/nodejs/expected/dependency-services-provider-nodejs.yml
index 495660f51c..1baa339c98 100644
--- a/test/e2e-v2/cases/nodejs/expected/dependency-services-provider-nodejs.yml
+++ b/test/e2e-v2/cases/nodejs/expected/dependency-services-provider-nodejs.yml
@@ -19,10 +19,14 @@ nodes:
name: provider
type: Express
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "e2e-service-consumer" }}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/cases/php/expected/dependency-services-php.yml
b/test/e2e-v2/cases/php/expected/dependency-services-php.yml
index 55ad77c7e5..fc94d421db 100644
--- a/test/e2e-v2/cases/php/expected/dependency-services-php.yml
+++ b/test/e2e-v2/cases/php/expected/dependency-services-php.yml
@@ -19,14 +19,20 @@ nodes:
name: User
type: USER
isreal: false
+ layers:
+ - UNDEFINED
- id: {{ b64enc "e2e-service-provider" }}.1
name: e2e-service-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "php" }}.1
name: php
type: PHP
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/cases/php/expected/dependency-services-provider.yml
b/test/e2e-v2/cases/php/expected/dependency-services-provider.yml
index b5b9426f56..db0e6bbc53 100644
--- a/test/e2e-v2/cases/php/expected/dependency-services-provider.yml
+++ b/test/e2e-v2/cases/php/expected/dependency-services-provider.yml
@@ -19,14 +19,20 @@ nodes:
name: e2e-service-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "localhost:-1" }}.0
name: localhost:-1
type: H2
isreal: false
+ layers:
+ - VIRTUAL_DATABASE
- id: {{ b64enc "php" }}.1
name: php
type: PHP
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-services.yml
b/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-services.yml
index f54beebc4e..dfc1f7c18b 100644
---
a/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-services.yml
+++
b/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-services.yml
@@ -19,18 +19,26 @@ nodes:
name: productpage.default
type: http
isreal: true
+ layers:
+ - K8S_SERVICE
- id: {{ b64enc "details.default"}}.1
name: details.default
type: http
isreal: true
+ layers:
+ - K8S_SERVICE
- id: {{ b64enc "ratings.default" }}.1
name: ratings.default
type: http
isreal: true
+ layers:
+ - K8S_SERVICE
- id: {{ b64enc "reviews.default" }}.1
name: reviews.default
type: http
isreal: true
+ layers:
+ - K8S_SERVICE
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/python/expected/dependency-services-consumer-py.yml
b/test/e2e-v2/cases/python/expected/dependency-services-consumer-py.yml
index 5c25d6330b..94f013b393 100644
--- a/test/e2e-v2/cases/python/expected/dependency-services-consumer-py.yml
+++ b/test/e2e-v2/cases/python/expected/dependency-services-consumer-py.yml
@@ -19,18 +19,26 @@ nodes:
name: User
type: USER
isreal: false
+ layers:
+ - UNDEFINED
- id: {{ b64enc "e2e-service-consumer"}}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "consumer-py" }}.1
name: consumer-py
type: Python
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "provider-py-kafka" }}.1
name: provider-py-kafka
type: Python
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/python/expected/dependency-services-provider-py.yml
b/test/e2e-v2/cases/python/expected/dependency-services-provider-py.yml
index 619670cd4b..6962f086a1 100644
--- a/test/e2e-v2/cases/python/expected/dependency-services-provider-py.yml
+++ b/test/e2e-v2/cases/python/expected/dependency-services-provider-py.yml
@@ -19,10 +19,14 @@ nodes:
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "provider-py" }}.1
name: provider-py
type: Python
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/satellite/native-protocols/expected/dependency-services.yml
b/test/e2e-v2/cases/satellite/native-protocols/expected/dependency-services.yml
index f4adf59f95..aeba265507 100644
---
a/test/e2e-v2/cases/satellite/native-protocols/expected/dependency-services.yml
+++
b/test/e2e-v2/cases/satellite/native-protocols/expected/dependency-services.yml
@@ -19,10 +19,14 @@ nodes:
name: e2e-service-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "e2e-service-consumer"}}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/cases/simple/expected/dependency-services-consumer.yml
b/test/e2e-v2/cases/simple/expected/dependency-services-consumer.yml
index 106faf57a0..8beb54fc95 100644
--- a/test/e2e-v2/cases/simple/expected/dependency-services-consumer.yml
+++ b/test/e2e-v2/cases/simple/expected/dependency-services-consumer.yml
@@ -19,14 +19,20 @@ nodes:
name: User
type: USER
isreal: false
+ layers:
+ - UNDEFINED
- id: {{ b64enc "e2e-service-consumer"}}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "e2e-service-provider"}}.1
name: e2e-service-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/cases/simple/expected/dependency-services-provider.yml
b/test/e2e-v2/cases/simple/expected/dependency-services-provider.yml
index 6364697409..366da2bed0 100644
--- a/test/e2e-v2/cases/simple/expected/dependency-services-provider.yml
+++ b/test/e2e-v2/cases/simple/expected/dependency-services-provider.yml
@@ -19,14 +19,20 @@ nodes:
name: e2e-service-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "e2e-service-consumer"}}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "localhost:-1" }}.0
name: localhost:-1
type: H2
isreal: false
+ layers:
+ - VIRTUAL_DATABASE
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/cases/simple/simple-cases.yaml
b/test/e2e-v2/cases/simple/simple-cases.yaml
index 2c13590839..3bf061553d 100644
--- a/test/e2e-v2/cases/simple/simple-cases.yaml
+++ b/test/e2e-v2/cases/simple/simple-cases.yaml
@@ -30,6 +30,9 @@ cases:
expected: expected/service-endpoint-provider.yml
- query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql endpoint list
--keyword=users --service-name=e2e-service-consumer
expected: expected/service-endpoint-consumer.yml
+ # service endpoint with duration check
+ - query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql endpoint list
--keyword=users --service-name=e2e-service-provider --step=MINUTE
+ expected: expected/service-endpoint-provider.yml
# dependency service
- query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql dependency global
--layer=GENERAL
expected: expected/dependency-services-provider.yml
diff --git
a/test/e2e-v2/cases/storage/expected/dependency-services-consumer.yml
b/test/e2e-v2/cases/storage/expected/dependency-services-consumer.yml
index 106faf57a0..8beb54fc95 100644
--- a/test/e2e-v2/cases/storage/expected/dependency-services-consumer.yml
+++ b/test/e2e-v2/cases/storage/expected/dependency-services-consumer.yml
@@ -19,14 +19,20 @@ nodes:
name: User
type: USER
isreal: false
+ layers:
+ - UNDEFINED
- id: {{ b64enc "e2e-service-consumer"}}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "e2e-service-provider"}}.1
name: e2e-service-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
{{- end }}
calls:
{{- contains .calls }}
diff --git
a/test/e2e-v2/cases/storage/expected/dependency-services-provider.yml
b/test/e2e-v2/cases/storage/expected/dependency-services-provider.yml
index 6364697409..366da2bed0 100644
--- a/test/e2e-v2/cases/storage/expected/dependency-services-provider.yml
+++ b/test/e2e-v2/cases/storage/expected/dependency-services-provider.yml
@@ -19,14 +19,20 @@ nodes:
name: e2e-service-provider
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "e2e-service-consumer"}}.1
name: e2e-service-consumer
type: Tomcat
isreal: true
+ layers:
+ - GENERAL
- id: {{ b64enc "localhost:-1" }}.0
name: localhost:-1
type: H2
isreal: false
+ layers:
+ - VIRTUAL_DATABASE
{{- end }}
calls:
{{- contains .calls }}
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/script/env
index 719ae1fe48..156a304da0 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/script/env
@@ -26,4 +26,4 @@ SW_ROVER_COMMIT=6bbd39aa701984482330d9dfb4dbaaff0527d55c
SW_BANYANDB_COMMIT=9770bf48f9b88574683f56e2a137555cd68066d9
SW_AGENT_PHP_COMMIT=3192c553002707d344bd6774cfab5bc61f67a1d3
-SW_CTL_COMMIT=d5f3597733aa5217373986d776a3ee5ee8b3c468
+SW_CTL_COMMIT=a14bf0e03d4d1ac0d8706e0677696a55a6bf57af