You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by wu...@apache.org on 2018/09/04 07:43:56 UTC
[incubator-skywalking-oal-tool] branch master updated: Add all
sources and generation.
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/incubator-skywalking-oal-tool.git
The following commit(s) were added to refs/heads/master by this push:
new 78f5818 Add all sources and generation.
78f5818 is described below
commit 78f581844b2b472f2417d29b810817e52ace51a3
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Tue Sep 4 15:43:50 2018 +0800
Add all sources and generation.
---
.../oal/tool/output/DispatcherContext.java | 3 +
.../skywalking/oal/tool/output/FileGenerator.java | 41 ++++++++++++++
.../oal/tool/parser/SourceColumnsFactory.java | 19 ++++---
.../EndpointRelationDispatcherTemplate.ftl | 65 ++++++++++++++++++++++
.../code-templates/IndicatorImplementor.ftl | 3 +-
.../ServiceInstanceDispatcherTemplate.ftl | 65 ++++++++++++++++++++++
.../ServiceInstanceRelationDispatcherTemplate.ftl | 65 ++++++++++++++++++++++
.../ServiceRelationDispatcherTemplate.ftl | 65 ++++++++++++++++++++++
oal-parser/src/test/resources/oal_test.oal | 8 +++
9 files changed, 325 insertions(+), 9 deletions(-)
diff --git a/oal-parser/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java b/oal-parser/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java
index 3a8a6e2..d8f3dbd 100644
--- a/oal-parser/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java
+++ b/oal-parser/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java
@@ -31,6 +31,9 @@ public class DispatcherContext {
private List<AnalysisResult> serviceIndicators = new LinkedList<>();
private List<AnalysisResult> serviceInstanceIndicators = new LinkedList<>();
private List<AnalysisResult> endpointIndicators = new LinkedList<>();
+ private List<AnalysisResult> serviceRelationIndicators = new LinkedList<>();
+ private List<AnalysisResult> serviceInstanceRelationIndicators = new LinkedList<>();
+ private List<AnalysisResult> endpointRelationIndicators = new LinkedList<>();
private List<AnalysisResult> serviceInstanceJVMCPUIndicators = new LinkedList<>();
private List<AnalysisResult> serviceInstanceJVMMemoryIndicators = new LinkedList<>();
private List<AnalysisResult> serviceInstanceJVMMemoryPoolIndicators = new LinkedList<>();
diff --git a/oal-parser/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java b/oal-parser/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java
index 651057b..7e3a17b 100644
--- a/oal-parser/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java
+++ b/oal-parser/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java
@@ -53,10 +53,26 @@ public class FileGenerator {
createFile(file);
this.generateServiceDispatcher(new FileWriter(file));
+ file = new File(outputPath, "generated/servicerelation/ServiceRelationDispatcher.java");
+ createFile(file);
+ this.generateServiceRelationDispatcher(new FileWriter(file));
+
file = new File(outputPath, "generated/endpoint/EndpointDispatcher.java");
createFile(file);
this.generateEndpointDispatcher(new FileWriter(file));
+ file = new File(outputPath, "generated/endpointrelation/EndpointRelationDispatcher.java");
+ createFile(file);
+ this.generateEndpointRelationDispatcher(new FileWriter(file));
+
+ file = new File(outputPath, "generated/serviceinstance/ServiceInstanceDispatcher.java");
+ createFile(file);
+ this.generateServiceInstanceDispatcher(new FileWriter(file));
+
+ file = new File(outputPath, "generated/serviceinstancerelation/ServiceInstanceRelationDispatcher.java");
+ createFile(file);
+ this.generateServiceInstanceRelationDispatcher(new FileWriter(file));
+
file = new File(outputPath, "generated/serviceinstancejvmcpu/ServiceInstanceJVMCPUDispatcher.java");
createFile(file);
this.generateServiceInstanceJVMCPUDispatcher(new FileWriter(file));
@@ -109,10 +125,26 @@ public class FileGenerator {
configuration.getTemplate("ServiceDispatcherTemplate.ftl").process(dispatcherContext, output);
}
+ void generateServiceRelationDispatcher(Writer output) throws IOException, TemplateException {
+ configuration.getTemplate("ServiceRelationDispatcherTemplate.ftl").process(dispatcherContext, output);
+ }
+
void generateEndpointDispatcher(Writer output) throws IOException, TemplateException {
configuration.getTemplate("EndpointDispatcherTemplate.ftl").process(dispatcherContext, output);
}
+ void generateEndpointRelationDispatcher(Writer output) throws IOException, TemplateException {
+ configuration.getTemplate("EndpointRelationDispatcherTemplate.ftl").process(dispatcherContext, output);
+ }
+
+ void generateServiceInstanceDispatcher(Writer output) throws IOException, TemplateException {
+ configuration.getTemplate("ServiceInstanceDispatcherTemplate.ftl").process(dispatcherContext, output);
+ }
+
+ void generateServiceInstanceRelationDispatcher(Writer output) throws IOException, TemplateException {
+ configuration.getTemplate("ServiceInstanceRelationDispatcherTemplate.ftl").process(dispatcherContext, output);
+ }
+
void generateServiceInstanceJVMCPUDispatcher(Writer output) throws IOException, TemplateException {
configuration.getTemplate("ServiceInstanceJVMCPUDispatcherTemplate.ftl").process(dispatcherContext, output);
}
@@ -137,12 +169,21 @@ public class FileGenerator {
case "Service":
dispatcherContext.getServiceIndicators().add(result);
break;
+ case "ServiceRelation":
+ dispatcherContext.getServiceRelationIndicators().add(result);
+ break;
case "ServiceInstance":
dispatcherContext.getServiceInstanceIndicators().add(result);
break;
+ case "ServiceInstanceRelation":
+ dispatcherContext.getServiceInstanceRelationIndicators().add(result);
+ break;
case "Endpoint":
dispatcherContext.getEndpointIndicators().add(result);
break;
+ case "EndpointRelation":
+ dispatcherContext.getEndpointRelationIndicators().add(result);
+ break;
case "ServiceInstanceJVMCPU":
dispatcherContext.getServiceInstanceJVMCPUIndicators().add(result);
break;
diff --git a/oal-parser/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java b/oal-parser/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
index c80949d..fa86f0f 100644
--- a/oal-parser/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
+++ b/oal-parser/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
@@ -63,34 +63,37 @@ public class SourceColumnsFactory {
return columnList;
case "ServiceRelation":
columnList = new LinkedList<>();
- SourceColumn sourceService = new SourceColumn("sourceServiceId", "source_service_id", int.class, false);
+ SourceColumn sourceService = new SourceColumn("sourceServiceId", "source_service_id", int.class, true);
columnList.add(sourceService);
- SourceColumn destService = new SourceColumn("destServiceId", "dest_service_id", int.class, false);
+ SourceColumn destService = new SourceColumn("destServiceId", "dest_service_id", int.class, true);
columnList.add(destService);
+ return columnList;
case "ServiceInstanceRelation":
columnList = new LinkedList<>();
sourceService = new SourceColumn("sourceServiceId", "source_service_id", int.class, false);
columnList.add(sourceService);
destService = new SourceColumn("destServiceId", "dest_service_id", int.class, false);
columnList.add(destService);
- SourceColumn sourceServiceInstance = new SourceColumn("sourceServiceInstanceId", "source_service_instance_id", int.class, false);
+ SourceColumn sourceServiceInstance = new SourceColumn("sourceServiceInstanceId", "source_service_instance_id", int.class, true);
columnList.add(sourceServiceInstance);
- SourceColumn destServiceInstance = new SourceColumn("destServiceInstanceId", "dest_service_instance_id", int.class, false);
+ SourceColumn destServiceInstance = new SourceColumn("destServiceInstanceId", "dest_service_instance_id", int.class, true);
columnList.add(destServiceInstance);
+ return columnList;
case "EndpointRelation":
columnList = new LinkedList<>();
SourceColumn sourceEndpointColumn = new SourceColumn("endpointId", "endpoint_id", int.class, true);
columnList.add(sourceEndpointColumn);
SourceColumn childEndpointColumne = new SourceColumn("childEndpointId", "child_endpoint_id", int.class, true);
columnList.add(childEndpointColumne);
- sourceService = new SourceColumn("sourceServiceId", "source_service_id", int.class, false);
+ sourceService = new SourceColumn("serviceId", "service_id", int.class, false);
columnList.add(sourceService);
- destService = new SourceColumn("destServiceId", "dest_service_id", int.class, false);
+ destService = new SourceColumn("childServiceId", "child_service_id", int.class, false);
columnList.add(destService);
- sourceServiceInstance = new SourceColumn("sourceServiceInstanceId", "source_service_instance_id", int.class, false);
+ sourceServiceInstance = new SourceColumn("serviceInstanceId", "service_instance_id", int.class, false);
columnList.add(sourceServiceInstance);
- destServiceInstance = new SourceColumn("destServiceInstanceId", "dest_service_instance_id", int.class, false);
+ destServiceInstance = new SourceColumn("childServiceInstanceId", "child_service_instance_id", int.class, false);
columnList.add(destServiceInstance);
+ return columnList;
default:
throw new IllegalArgumentException("Illegal source :" + source);
}
diff --git a/oal-parser/src/main/resources/code-templates/EndpointRelationDispatcherTemplate.ftl b/oal-parser/src/main/resources/code-templates/EndpointRelationDispatcherTemplate.ftl
new file mode 100644
index 0000000..18533d3
--- /dev/null
+++ b/oal-parser/src/main/resources/code-templates/EndpointRelationDispatcherTemplate.ftl
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.analysis.generated.endpointrelation;
+
+import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
+<#if (serviceInstanceRelationIndicators?size>0)>
+import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
+ <#list serviceInstanceRelationIndicators as indicator>
+ <#if indicator.filterExpressions??>
+import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
+ </#if>
+ </#list>
+</#if>
+import org.apache.skywalking.oap.server.core.source.*;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+public class EndpointRelationDispatcher implements SourceDispatcher<EndpointRelation> {
+
+ @Override public void dispatch(EndpointRelation source) {
+<#list endpointRelationIndicators as indicator>
+ do${indicator.metricName}(source);
+</#list>
+ }
+
+<#list endpointRelationIndicators as indicator>
+ private void do${indicator.metricName}(EndpointRelation source) {
+ ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
+
+ <#if indicator.filterExpressions??>
+ <#list indicator.filterExpressions as filterExpression>
+ if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
+ return;
+ }
+ </#list>
+ </#if>
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ <#list indicator.fieldsFromSource as field>
+ indicator.${field.fieldSetter}(source.${field.fieldGetter}());
+ </#list>
+ indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
+</#list>
+}
diff --git a/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl b/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl
index 4be918b..fcc738a 100644
--- a/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl
+++ b/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl
@@ -78,9 +78,10 @@ public class ${metricName}Indicator extends ${indicatorClassName} implements Ala
<#list fieldsFromSource as sourceField>
<#if sourceField.isID()>
if (${sourceField.fieldName} != indicator.${sourceField.fieldName})
+ return false;
</#if>
</#list>
- return false;
+
if (getTimeBucket() != indicator.getTimeBucket())
return false;
diff --git a/oal-parser/src/main/resources/code-templates/ServiceInstanceDispatcherTemplate.ftl b/oal-parser/src/main/resources/code-templates/ServiceInstanceDispatcherTemplate.ftl
new file mode 100644
index 0000000..fb07928
--- /dev/null
+++ b/oal-parser/src/main/resources/code-templates/ServiceInstanceDispatcherTemplate.ftl
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.analysis.generated.serviceinstance;
+
+import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
+<#if (serviceInstanceIndicators?size>0)>
+import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
+ <#list serviceInstanceIndicators as indicator>
+ <#if indicator.filterExpressions??>
+import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
+ </#if>
+ </#list>
+</#if>
+import org.apache.skywalking.oap.server.core.source.*;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+public class ServiceInstanceDispatcher implements SourceDispatcher<ServiceInstance> {
+
+ @Override public void dispatch(ServiceInstance source) {
+<#list serviceInstanceIndicators as indicator>
+ do${indicator.metricName}(source);
+</#list>
+ }
+
+<#list serviceInstanceIndicators as indicator>
+ private void do${indicator.metricName}(ServiceInstance source) {
+ ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
+
+ <#if indicator.filterExpressions??>
+ <#list indicator.filterExpressions as filterExpression>
+ if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
+ return;
+ }
+ </#list>
+ </#if>
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ <#list indicator.fieldsFromSource as field>
+ indicator.${field.fieldSetter}(source.${field.fieldGetter}());
+ </#list>
+ indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
+</#list>
+}
diff --git a/oal-parser/src/main/resources/code-templates/ServiceInstanceRelationDispatcherTemplate.ftl b/oal-parser/src/main/resources/code-templates/ServiceInstanceRelationDispatcherTemplate.ftl
new file mode 100644
index 0000000..2af225a
--- /dev/null
+++ b/oal-parser/src/main/resources/code-templates/ServiceInstanceRelationDispatcherTemplate.ftl
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.analysis.generated.serviceinstancerelation;
+
+import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
+<#if (serviceInstanceRelationIndicators?size>0)>
+import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
+ <#list serviceInstanceRelationIndicators as indicator>
+ <#if indicator.filterExpressions??>
+import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
+ </#if>
+ </#list>
+</#if>
+import org.apache.skywalking.oap.server.core.source.*;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+public class ServiceInstanceRelationDispatcher implements SourceDispatcher<ServiceInstanceRelation> {
+
+ @Override public void dispatch(ServiceInstanceRelation source) {
+<#list serviceInstanceRelationIndicators as indicator>
+ do${indicator.metricName}(source);
+</#list>
+ }
+
+<#list serviceInstanceRelationIndicators as indicator>
+ private void do${indicator.metricName}(ServiceInstanceRelation source) {
+ ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
+
+ <#if indicator.filterExpressions??>
+ <#list indicator.filterExpressions as filterExpression>
+ if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
+ return;
+ }
+ </#list>
+ </#if>
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ <#list indicator.fieldsFromSource as field>
+ indicator.${field.fieldSetter}(source.${field.fieldGetter}());
+ </#list>
+ indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
+</#list>
+}
diff --git a/oal-parser/src/main/resources/code-templates/ServiceRelationDispatcherTemplate.ftl b/oal-parser/src/main/resources/code-templates/ServiceRelationDispatcherTemplate.ftl
new file mode 100644
index 0000000..4d7ad66
--- /dev/null
+++ b/oal-parser/src/main/resources/code-templates/ServiceRelationDispatcherTemplate.ftl
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.analysis.generated.servicerelation;
+
+import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
+<#if (serviceRelationIndicators?size>0)>
+import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
+ <#list serviceRelationIndicators as indicator>
+ <#if indicator.filterExpressions??>
+import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
+ </#if>
+ </#list>
+</#if>
+import org.apache.skywalking.oap.server.core.source.*;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+public class ServiceRelationDispatcher implements SourceDispatcher<ServiceRelation> {
+
+ @Override public void dispatch(ServiceRelation source) {
+<#list serviceRelationIndicators as indicator>
+ do${indicator.metricName}(source);
+</#list>
+ }
+
+<#list serviceRelationIndicators as indicator>
+ private void do${indicator.metricName}(ServiceRelation source) {
+ ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
+
+ <#if indicator.filterExpressions??>
+ <#list indicator.filterExpressions as filterExpression>
+ if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
+ return;
+ }
+ </#list>
+ </#if>
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ <#list indicator.fieldsFromSource as field>
+ indicator.${field.fieldSetter}(source.${field.fieldGetter}());
+ </#list>
+ indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
+</#list>
+}
diff --git a/oal-parser/src/test/resources/oal_test.oal b/oal-parser/src/test/resources/oal_test.oal
index 030a5aa..9d90647 100644
--- a/oal-parser/src/test/resources/oal_test.oal
+++ b/oal-parser/src/test/resources/oal_test.oal
@@ -18,12 +18,20 @@
Service_Avg = from(Service.latency).longAvg();
+ServiceInstance_RespTime= from(ServiceInstance.latency).longAvg();
+
endpoint_Avg = from(Endpoint.latency).longAvg();
// endpoint_Avg_for_prod_serv = from(Endpoint.latency).filter(name == "/product/service").longAvg();
endpoint_percent = from(Endpoint.*).percent(status == true);
+ServiceRelation_Avg = from(ServiceRelation.latency).longAvg();
+
+ServiceInstanceRelation_Avg = from(ServiceInstanceRelation.latency).longAvg();
+
+EndpointRelation_Avg = from(EndpointRelation.rpcLatency).longAvg();
+
instance_jvm_cpu = from(ServiceInstanceJVMCPU.usePercent).doubleAvg();
instance_jvm_memory_max = from(ServiceInstanceJVMMemory.max).longAvg();