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);
+ }
+
+}