You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2020/04/02 10:08:38 UTC

[incubator-iotdb] branch master updated: add timegenerator test (#971)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new a5eba32  add timegenerator test (#971)
a5eba32 is described below

commit a5eba32bbe57677b826138e3fc535237b56d153b
Author: Jialin Qiao <qj...@mails.tsinghua.edu.cn>
AuthorDate: Thu Apr 2 18:08:24 2020 +0800

    add timegenerator test (#971)
---
 .../tsfile/read/reader/FakedMultiBatchReader.java  | 62 ++++++++++++++++++
 .../tsfile/read/reader/FakedTimeGenerator.java     | 73 ++++++++++++++++++++++
 2 files changed, 135 insertions(+)

diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedMultiBatchReader.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedMultiBatchReader.java
new file mode 100644
index 0000000..583f8b8
--- /dev/null
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedMultiBatchReader.java
@@ -0,0 +1,62 @@
+/*
+ * 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.iotdb.tsfile.read.reader;
+
+import java.io.IOException;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.read.common.BatchData;
+import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+public class FakedMultiBatchReader implements IBatchReader {
+
+  private long time = 0;
+  private int batchSize;
+  private int batches;
+  private int batchIndex = 0;
+  private Filter filter;
+
+  FakedMultiBatchReader(int batchSize, int batches, Filter filter) {
+    this.batchSize = batchSize;
+    this.batches = batches;
+    this.filter = filter;
+  }
+
+  @Override
+  public boolean hasNextBatch() {
+    return batchIndex < batches;
+  }
+
+  @Override
+  public BatchData nextBatch() {
+    batchIndex++;
+    BatchData batchData = new BatchData(TSDataType.INT64);
+    for (int i = 0; i < batchSize; i++) {
+      if (filter.satisfy(time, time)) {
+        batchData.putLong(time, time);
+      }
+      time++;
+    }
+    return batchData;
+  }
+
+  @Override
+  public void close() throws IOException {
+
+  }
+}
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedTimeGenerator.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedTimeGenerator.java
new file mode 100644
index 0000000..075398d
--- /dev/null
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedTimeGenerator.java
@@ -0,0 +1,73 @@
+/*
+ * 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.iotdb.tsfile.read.reader;
+
+import java.io.IOException;
+import org.apache.iotdb.tsfile.read.common.Path;
+import org.apache.iotdb.tsfile.read.expression.IExpression;
+import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
+import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
+import org.apache.iotdb.tsfile.read.filter.TimeFilter;
+import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
+import org.apache.iotdb.tsfile.read.query.timegenerator.TimeGenerator;
+import org.apache.iotdb.tsfile.read.query.timegenerator.node.AndNode;
+import org.apache.iotdb.tsfile.read.query.timegenerator.node.LeafNode;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class FakedTimeGenerator extends TimeGenerator {
+
+  public FakedTimeGenerator() throws IOException {
+
+    // or(and(d1.s1, d2.s2), d2.s2)
+    IExpression expression =
+        BinaryExpression.or(
+            BinaryExpression.and(
+                new SingleSeriesExpression(new Path("d1.s1"),
+                    FilterFactory.and(TimeFilter.gtEq(1L), TimeFilter.ltEq(5L))),
+                new SingleSeriesExpression(new Path("d2.s2"),
+                    FilterFactory.and(TimeFilter.gtEq(1L), TimeFilter.ltEq(10L)))
+            ),
+            new SingleSeriesExpression(new Path("d2.s2"),
+                FilterFactory.and(TimeFilter.gtEq(11L), TimeFilter.ltEq(15L)))
+        );
+
+    super.constructNode(expression);
+  }
+
+  @Override
+  protected IBatchReader generateNewBatchReader(SingleSeriesExpression expression) {
+    return new FakedMultiBatchReader(10, 10, expression.getFilter());
+  }
+
+
+  @Test
+  public void testTimeGenerator() throws IOException {
+    FakedTimeGenerator fakedTimeGenerator = new FakedTimeGenerator();
+    Path path = new Path("d1.s1");
+    long count = 0;
+    while (fakedTimeGenerator.hasNext()) {
+      long time = fakedTimeGenerator.next();
+      fakedTimeGenerator.getValue(path, time);
+      count++;
+    }
+    Assert.assertEquals(10L, count);
+  }
+
+}