You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by zh...@apache.org on 2018/03/09 15:49:27 UTC

[incubator-skywalking] branch master updated: Fixed #904. (#923)

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

zhangxin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 6fa179e  Fixed #904. (#923)
6fa179e is described below

commit 6fa179e18f467e444ae8d302568db26703ebfbbf
Author: 彭勇升 pengys <80...@qq.com>
AuthorDate: Fri Mar 9 23:49:25 2018 +0800

    Fixed #904. (#923)
    
    The time range expression for query the live instance between the start time and end time is incorrect.
---
 .../storage/es/dao/ui/InstanceEsUIDAO.java         | 38 +++++++++++++++----
 .../apm/collector/ui/utils/DurationTestCase.java   | 44 ++++++++++++++++++++++
 2 files changed, 74 insertions(+), 8 deletions(-)

diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java
index 537846b..2f1e82e 100644
--- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java
+++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java
@@ -106,10 +106,17 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO {
 
         BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
 
-        //TODO second
+        BoolQueryBuilder boolQuery1 = QueryBuilders.boolQuery();
+        boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(endSecondTimeBucket));
+        boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+
+        BoolQueryBuilder boolQuery2 = QueryBuilders.boolQuery();
+        boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+        boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket));
+
         BoolQueryBuilder timeBoolQuery = QueryBuilders.boolQuery();
-        timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
-        timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
+        timeBoolQuery.should().add(boolQuery1);
+        timeBoolQuery.should().add(boolQuery2);
 
         boolQueryBuilder.must().add(timeBoolQuery);
 
@@ -172,9 +179,17 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO {
         }
         boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_IS_ADDRESS, BooleanUtils.FALSE));
 
+        BoolQueryBuilder boolQuery1 = QueryBuilders.boolQuery();
+        boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(endSecondTimeBucket));
+        boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+
+        BoolQueryBuilder boolQuery2 = QueryBuilders.boolQuery();
+        boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+        boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket));
+
         BoolQueryBuilder timeBoolQuery = QueryBuilders.boolQuery();
-        timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
-        timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
+        timeBoolQuery.should().add(boolQuery1);
+        timeBoolQuery.should().add(boolQuery2);
 
         boolQuery.must().add(timeBoolQuery);
 
@@ -198,10 +213,17 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO {
         boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_APPLICATION_ID, applicationId));
         boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_IS_ADDRESS, BooleanUtils.FALSE));
 
-        //TODO second
+        BoolQueryBuilder boolQuery1 = QueryBuilders.boolQuery();
+        boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(endSecondTimeBucket));
+        boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+
+        BoolQueryBuilder boolQuery2 = QueryBuilders.boolQuery();
+        boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+        boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket));
+
         BoolQueryBuilder timeBoolQuery = QueryBuilders.boolQuery();
-        timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
-        timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
+        timeBoolQuery.should().add(boolQuery1);
+        timeBoolQuery.should().add(boolQuery2);
 
         boolQuery.must().add(timeBoolQuery);
         searchRequestBuilder.setQuery(boolQuery);
diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/DurationTestCase.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/DurationTestCase.java
new file mode 100644
index 0000000..28009c7
--- /dev/null
+++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/DurationTestCase.java
@@ -0,0 +1,44 @@
+/*
+ * 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.apm.collector.ui.utils;
+
+import org.junit.Assert;
+
+/**
+ * @author peng-yongsheng
+ */
+public class DurationTestCase {
+
+    @org.junit.Test
+    public void test() {
+        Assert.assertEquals(true, expression(80, 150));
+        Assert.assertEquals(true, expression(80, 250));
+        Assert.assertEquals(true, expression(150, 250));
+        Assert.assertEquals(true, expression(120, 180));
+        Assert.assertEquals(false, expression(70, 90));
+        Assert.assertEquals(false, expression(250, 300));
+    }
+
+    private boolean expression(int start, int end) {
+        int register = 100;
+        int heart = 200;
+
+        return (heart > end && register <= end) || (register <= end && heart >= start);
+    }
+}

-- 
To stop receiving notification emails like this one, please contact
zhangxin@apache.org.