You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ta...@apache.org on 2019/12/16 09:54:10 UTC

[skywalking] branch min_func created (now ad2ce51)

This is an automated email from the ASF dual-hosted git repository.

tanjian pushed a change to branch min_func
in repository https://gitbox.apache.org/repos/asf/skywalking.git.


      at ad2ce51  support min function.

This branch includes the following new commits:

     new ad2ce51  support min function.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[skywalking] 01/01: support min function.

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tanjian pushed a commit to branch min_func
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit ad2ce51a2975b6459d7bac4cd10eceef9c2bb87c
Author: JaredTan95 <ji...@daocloud.io>
AuthorDate: Mon Dec 16 17:45:13 2019 +0800

    support min function.
---
 .../core/analysis/metrics/MinDoubleMetrics.java    | 53 ++++++++++++++++++++
 .../core/analysis/metrics/MinLongMetrics.java      | 57 ++++++++++++++++++++++
 .../core/analysis/metrics/MaxLongMetricsTest.java  |  4 +-
 ...ongMetricsTest.java => MinLongMetricsTest.java} | 23 ++++-----
 4 files changed, 124 insertions(+), 13 deletions(-)

diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinDoubleMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinDoubleMetrics.java
new file mode 100644
index 0000000..56c2211
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinDoubleMetrics.java
@@ -0,0 +1,53 @@
+/*
+ * 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.metrics;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.Entrance;
+import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.MetricsFunction;
+import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.SourceFrom;
+import org.apache.skywalking.oap.server.core.storage.annotation.Column;
+
+/**
+ * @author jian.tan
+ */
+
+@MetricsFunction(functionName = "minDouble")
+public abstract class MinDoubleMetrics extends Metrics implements DoubleValueHolder {
+
+    protected static final String VALUE = "value";
+
+    @Getter @Setter @Column(columnName = VALUE, isValue = true) private double value;
+
+    @Entrance
+    public final void combine(@SourceFrom double count) {
+        if (count < this.value) {
+            this.value = count;
+        }
+    }
+
+    @Override public final void combine(Metrics metrics) {
+        MinDoubleMetrics minDoubleMetrics = (MinDoubleMetrics)metrics;
+        combine(minDoubleMetrics.value);
+    }
+
+    @Override public void calculate() {
+    }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetrics.java
new file mode 100644
index 0000000..833d1f5
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetrics.java
@@ -0,0 +1,57 @@
+/*
+ * 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.metrics;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.Entrance;
+import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.MetricsFunction;
+import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.SourceFrom;
+import org.apache.skywalking.oap.server.core.storage.annotation.Column;
+
+/**
+ * @author jian.tan
+ */
+
+@MetricsFunction(functionName = "min")
+public abstract class MinLongMetrics extends Metrics implements LongValueHolder {
+
+    protected static final String VALUE = "value";
+
+    @Getter @Setter @Column(columnName = VALUE, isValue = true) private long value;
+
+    @Entrance
+    public final void combine(@SourceFrom long count) {
+        if (this.value == 0) {
+            this.value = count;
+        }
+
+        if (count < this.value) {
+            this.value = count;
+        }
+    }
+
+    @Override public final void combine(Metrics metrics) {
+        MinLongMetrics minLongMetrics = (MinLongMetrics)metrics;
+        combine(minLongMetrics.value);
+    }
+
+    @Override public void calculate() {
+    }
+}
diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java
index aa7d467..4244687 100644
--- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java
+++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java
@@ -44,8 +44,8 @@ public class MaxLongMetricsTest {
         impl.combine(5);
 
         MaxLongMetricsImpl impl2 = new MaxLongMetricsImpl();
-        impl.combine(2);
-        impl.combine(6);
+        impl2.combine(2);
+        impl2.combine(6);
 
         impl.combine(impl2);
         Assert.assertEquals(10, impl.getValue());
diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetricsTest.java
similarity index 80%
copy from oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java
copy to oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetricsTest.java
index aa7d467..04a9057 100644
--- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java
+++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetricsTest.java
@@ -23,35 +23,36 @@ import org.junit.Assert;
 import org.junit.Test;
 
 /**
- * @author liuhaoyang
- **/
-public class MaxLongMetricsTest {
+ * @author jian.tan
+ */
+
+public class MinLongMetricsTest {
 
     @Test
     public void testEntranceCombine() {
-        MaxLongMetricsImpl impl = new MaxLongMetricsImpl();
+        MinLongMetricsImpl impl = new MinLongMetricsImpl();
         impl.combine(10);
         impl.combine(5);
         impl.combine(20);
         impl.calculate();
-        Assert.assertEquals(20, impl.getValue());
+        Assert.assertEquals(5, impl.getValue());
     }
 
     @Test
     public void testSelfCombine() {
-        MaxLongMetricsImpl impl = new MaxLongMetricsImpl();
+        MinLongMetricsImpl impl = new MinLongMetricsImpl();
         impl.combine(10);
         impl.combine(5);
 
-        MaxLongMetricsImpl impl2 = new MaxLongMetricsImpl();
-        impl.combine(2);
-        impl.combine(6);
+        MinLongMetricsImpl impl2 = new MinLongMetricsImpl();
+        impl2.combine(2);
+        impl2.combine(6);
 
         impl.combine(impl2);
-        Assert.assertEquals(10, impl.getValue());
+        Assert.assertEquals(2, impl.getValue());
     }
 
-    public class MaxLongMetricsImpl extends MaxLongMetrics {
+    public class MinLongMetricsImpl extends MinLongMetrics {
 
         @Override public String id() {
             return null;