This is an automated email from the ASF dual-hosted git repository.
zyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 4376e3548d [IOTDB-5226] Correct the style and reliance of schema
operator UT (#8557)
4376e3548d is described below
commit 4376e3548d0da3f94cebcd63ee09ed5a0e0e221d
Author: Marcos_Zyk <[email protected]>
AuthorDate: Wed Dec 21 18:56:11 2022 +0800
[IOTDB-5226] Correct the style and reliance of schema operator UT (#8557)
[IOTDB-5226] Correct the style and reliance of schema operator UT (#8557)
---
.../iotdb/db/qp/physical/sys/ShowDevicesPlan.java | 14 +++
.../db/qp/physical/sys/ShowTimeSeriesPlan.java | 18 ++++
.../operator/schema/CountMergeOperatorTest.java | 114 ++++-----------------
.../operator/schema/SchemaCountOperatorTest.java | 68 +++++-------
.../schema/SchemaFetchScanOperatorTest.java | 108 ++++++++++---------
.../schema/SchemaQueryScanOperatorTest.java | 88 ++++++++--------
6 files changed, 177 insertions(+), 233 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowDevicesPlan.java
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowDevicesPlan.java
index 4342a24acf..cd1c25ccce 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowDevicesPlan.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowDevicesPlan.java
@@ -22,6 +22,7 @@ import org.apache.iotdb.commons.path.PartialPath;
import java.io.DataOutputStream;
import java.io.IOException;
+import java.util.Objects;
public class ShowDevicesPlan extends ShowPlan {
@@ -52,4 +53,17 @@ public class ShowDevicesPlan extends ShowPlan {
public boolean hasSgCol() {
return hasSgCol;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ShowDevicesPlan that = (ShowDevicesPlan) o;
+ return hasSgCol == that.hasSgCol;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(hasSgCol);
+ }
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowTimeSeriesPlan.java
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowTimeSeriesPlan.java
index d6a7e3debc..7951d60724 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowTimeSeriesPlan.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowTimeSeriesPlan.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.db.metadata.template.Template;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Map;
+import java.util.Objects;
public class ShowTimeSeriesPlan extends ShowPlan {
@@ -118,4 +119,21 @@ public class ShowTimeSeriesPlan extends ShowPlan {
outputStream.writeBoolean(orderByHeat);
outputStream.writeLong(index);
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ShowTimeSeriesPlan that = (ShowTimeSeriesPlan) o;
+ return isContains == that.isContains
+ && orderByHeat == that.orderByHeat
+ && Objects.equals(key, that.key)
+ && Objects.equals(value, that.value)
+ && Objects.equals(relatedTemplate, that.relatedTemplate);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(isContains, key, value, orderByHeat, relatedTemplate);
+ }
}
diff --git
a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/CountMergeOperatorTest.java
b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/CountMergeOperatorTest.java
index b89c474a72..6049de92ff 100644
---
a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/CountMergeOperatorTest.java
+++
b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/CountMergeOperatorTest.java
@@ -21,10 +21,7 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.localconfignode.LocalConfigNode;
import org.apache.iotdb.db.metadata.schemaregion.ISchemaRegion;
-import org.apache.iotdb.db.metadata.schemaregion.SchemaEngine;
import org.apache.iotdb.db.mpp.common.FragmentInstanceId;
import org.apache.iotdb.db.mpp.common.PlanFragmentId;
import org.apache.iotdb.db.mpp.common.QueryId;
@@ -33,22 +30,16 @@ import
org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceContext;
import org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceStateMachine;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.db.query.reader.series.SeriesReaderTestUtil;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.junit.After;
import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
+import org.mockito.Mockito;
-import java.io.IOException;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.ExecutorService;
import static
org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceContext.createFragmentInstanceContext;
@@ -58,87 +49,8 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-@Ignore
public class CountMergeOperatorTest {
private static final String COUNT_MERGE_OPERATOR_TEST_SG =
"root.CountMergeOperatorTest";
- private final List<String> deviceIds = new ArrayList<>();
- private final List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-
- private final List<TsFileResource> seqResources = new ArrayList<>();
- private final List<TsFileResource> unSeqResources = new ArrayList<>();
-
- @Before
- public void setUp() throws MetadataException, IOException,
WriteProcessException {
- SeriesReaderTestUtil.setUp(
- measurementSchemas, deviceIds, seqResources, unSeqResources,
COUNT_MERGE_OPERATOR_TEST_SG);
- }
-
- @After
- public void tearDown() throws IOException {
- SeriesReaderTestUtil.tearDown(seqResources, unSeqResources);
- }
-
- @Test
- public void testTimeSeriesCountOperator() {
- ExecutorService instanceNotificationExecutor =
- IoTDBThreadPoolFactory.newFixedThreadPool(1,
"test-instance-notification");
- try {
- QueryId queryId = new QueryId("stub_query");
- FragmentInstanceId instanceId =
- new FragmentInstanceId(new PlanFragmentId(queryId, 0),
"stub-instance");
- FragmentInstanceStateMachine stateMachine =
- new FragmentInstanceStateMachine(instanceId,
instanceNotificationExecutor);
- FragmentInstanceContext fragmentInstanceContext =
- createFragmentInstanceContext(instanceId, stateMachine);
- PlanNodeId planNodeId = queryId.genPlanNodeId();
- OperatorContext operatorContext =
- fragmentInstanceContext.addOperatorContext(
- 1, planNodeId, TimeSeriesCountOperator.class.getSimpleName());
- PartialPath partialPath = new PartialPath(COUNT_MERGE_OPERATOR_TEST_SG);
- ISchemaRegion schemaRegion =
- SchemaEngine.getInstance()
- .getSchemaRegion(
-
LocalConfigNode.getInstance().getBelongedSchemaRegionId(partialPath));
- operatorContext
- .getInstanceContext()
- .setDriverContext(new SchemaDriverContext(fragmentInstanceContext,
schemaRegion));
- TimeSeriesCountOperator timeSeriesCountOperator =
- new TimeSeriesCountOperator(
- planNodeId,
- fragmentInstanceContext.getOperatorContexts().get(0),
- partialPath,
- true,
- null,
- null,
- false,
- Collections.emptyMap());
- TsBlock tsBlock = null;
- while (timeSeriesCountOperator.hasNext()) {
- tsBlock = timeSeriesCountOperator.next();
- }
- assertNotNull(tsBlock);
- assertEquals(100, tsBlock.getColumn(0).getLong(0));
- TimeSeriesCountOperator timeSeriesCountOperator2 =
- new TimeSeriesCountOperator(
- planNodeId,
- fragmentInstanceContext.getOperatorContexts().get(0),
- new PartialPath(COUNT_MERGE_OPERATOR_TEST_SG + ".device1.*"),
- false,
- null,
- null,
- false,
- Collections.emptyMap());
- tsBlock = timeSeriesCountOperator2.next();
- assertFalse(timeSeriesCountOperator2.hasNext());
- assertTrue(timeSeriesCountOperator2.isFinished());
- assertEquals(10, tsBlock.getColumn(0).getLong(0));
- } catch (MetadataException e) {
- e.printStackTrace();
- fail();
- } finally {
- instanceNotificationExecutor.shutdown();
- }
- }
@Test
public void testCountMergeOperator() {
@@ -156,11 +68,21 @@ public class CountMergeOperatorTest {
OperatorContext operatorContext =
fragmentInstanceContext.addOperatorContext(
1, planNodeId,
LevelTimeSeriesCountOperator.class.getSimpleName());
- ISchemaRegion schemaRegion =
- SchemaEngine.getInstance()
- .getSchemaRegion(
- LocalConfigNode.getInstance()
- .getBelongedSchemaRegionId(new
PartialPath(COUNT_MERGE_OPERATOR_TEST_SG)));
+ ISchemaRegion schemaRegion = Mockito.mock(ISchemaRegion.class);
+ Map<PartialPath, Long> sgResult = new HashMap<>();
+ for (int i = 0; i < 10; i++) {
+ sgResult.put(new PartialPath(COUNT_MERGE_OPERATOR_TEST_SG + ".device"
+ i), 10L);
+ }
+ Mockito.when(
+ schemaRegion.getMeasurementCountGroupByLevel(
+ new PartialPath(COUNT_MERGE_OPERATOR_TEST_SG), 2, true))
+ .thenReturn(sgResult);
+ Mockito.when(
+ schemaRegion.getMeasurementCountGroupByLevel(
+ new PartialPath(COUNT_MERGE_OPERATOR_TEST_SG + ".device2"),
2, true))
+ .thenReturn(
+ Collections.singletonMap(
+ new PartialPath(COUNT_MERGE_OPERATOR_TEST_SG + ".device2"),
10L));
operatorContext
.getInstanceContext()
.setDriverContext(new SchemaDriverContext(fragmentInstanceContext,
schemaRegion));
diff --git
a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaCountOperatorTest.java
b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaCountOperatorTest.java
index 1b4636da51..3947480167 100644
---
a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaCountOperatorTest.java
+++
b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaCountOperatorTest.java
@@ -21,10 +21,7 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.localconfignode.LocalConfigNode;
import org.apache.iotdb.db.metadata.schemaregion.ISchemaRegion;
-import org.apache.iotdb.db.metadata.schemaregion.SchemaEngine;
import org.apache.iotdb.db.mpp.common.FragmentInstanceId;
import org.apache.iotdb.db.mpp.common.PlanFragmentId;
import org.apache.iotdb.db.mpp.common.QueryId;
@@ -33,20 +30,14 @@ import
org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceContext;
import org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceStateMachine;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.db.query.reader.series.SeriesReaderTestUtil;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
+import org.mockito.Mockito;
-import java.io.IOException;
-import java.util.ArrayList;
import java.util.Collections;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.ExecutorService;
import static
org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceContext.createFragmentInstanceContext;
@@ -56,25 +47,8 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-@Ignore
public class SchemaCountOperatorTest {
private static final String SCHEMA_COUNT_OPERATOR_TEST_SG =
"root.SchemaCountOperatorTest";
- private final List<String> deviceIds = new ArrayList<>();
- private final List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-
- private final List<TsFileResource> seqResources = new ArrayList<>();
- private final List<TsFileResource> unSeqResources = new ArrayList<>();
-
- @Before
- public void setUp() throws MetadataException, IOException,
WriteProcessException {
- SeriesReaderTestUtil.setUp(
- measurementSchemas, deviceIds, seqResources, unSeqResources,
SCHEMA_COUNT_OPERATOR_TEST_SG);
- }
-
- @After
- public void tearDown() throws IOException {
- SeriesReaderTestUtil.tearDown(seqResources, unSeqResources);
- }
@Test
public void testDeviceCountOperator() {
@@ -93,10 +67,8 @@ public class SchemaCountOperatorTest {
fragmentInstanceContext.addOperatorContext(
1, planNodeId, DevicesCountOperator.class.getSimpleName());
PartialPath partialPath = new PartialPath(SCHEMA_COUNT_OPERATOR_TEST_SG);
- ISchemaRegion schemaRegion =
- SchemaEngine.getInstance()
- .getSchemaRegion(
-
LocalConfigNode.getInstance().getBelongedSchemaRegionId(partialPath));
+ ISchemaRegion schemaRegion = Mockito.mock(ISchemaRegion.class);
+ Mockito.when(schemaRegion.getDevicesNum(partialPath,
true)).thenReturn(10L);
operatorContext
.getInstanceContext()
.setDriverContext(new SchemaDriverContext(fragmentInstanceContext,
schemaRegion));
@@ -134,10 +106,15 @@ public class SchemaCountOperatorTest {
fragmentInstanceContext.addOperatorContext(
1, planNodeId, TimeSeriesCountOperator.class.getSimpleName());
PartialPath partialPath = new PartialPath(SCHEMA_COUNT_OPERATOR_TEST_SG);
- ISchemaRegion schemaRegion =
- SchemaEngine.getInstance()
- .getSchemaRegion(
-
LocalConfigNode.getInstance().getBelongedSchemaRegionId(partialPath));
+ ISchemaRegion schemaRegion = Mockito.mock(ISchemaRegion.class);
+ Mockito.when(schemaRegion.getAllTimeseriesCount(partialPath,
Collections.emptyMap(), true))
+ .thenReturn(100L);
+ Mockito.when(
+ schemaRegion.getAllTimeseriesCount(
+ new PartialPath(SCHEMA_COUNT_OPERATOR_TEST_SG +
".device1.*"),
+ Collections.emptyMap(),
+ false))
+ .thenReturn(10L);
operatorContext
.getInstanceContext()
.setDriverContext(new SchemaDriverContext(fragmentInstanceContext,
schemaRegion));
@@ -196,10 +173,19 @@ public class SchemaCountOperatorTest {
fragmentInstanceContext.addOperatorContext(
1, planNodeId,
LevelTimeSeriesCountOperator.class.getSimpleName());
PartialPath partialPath = new PartialPath(SCHEMA_COUNT_OPERATOR_TEST_SG);
- ISchemaRegion schemaRegion =
- SchemaEngine.getInstance()
- .getSchemaRegion(
-
LocalConfigNode.getInstance().getBelongedSchemaRegionId(partialPath));
+ ISchemaRegion schemaRegion = Mockito.mock(ISchemaRegion.class);
+
+ Map<PartialPath, Long> result = new HashMap<>();
+ for (int i = 0; i < 10; i++) {
+ result.put(new PartialPath(SCHEMA_COUNT_OPERATOR_TEST_SG + ".device" +
i), 10L);
+ }
+
+ Mockito.when(schemaRegion.getMeasurementCountGroupByLevel(partialPath,
2, true))
+ .thenReturn(result);
+ Mockito.when(schemaRegion.getMeasurementCountGroupByLevel(partialPath,
1, true))
+ .thenReturn(
+ Collections.singletonMap(new
PartialPath(SCHEMA_COUNT_OPERATOR_TEST_SG), 100L));
+
operatorContext
.getInstanceContext()
.setDriverContext(new SchemaDriverContext(fragmentInstanceContext,
schemaRegion));
diff --git
a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperatorTest.java
b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperatorTest.java
index 6872558b18..dfbd2b56a1 100644
---
a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperatorTest.java
+++
b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaFetchScanOperatorTest.java
@@ -19,18 +19,13 @@
package org.apache.iotdb.db.mpp.execution.operator.schema;
-import org.apache.iotdb.commons.consensus.SchemaRegionId;
import org.apache.iotdb.commons.path.MeasurementPath;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.path.PathPatternTree;
import org.apache.iotdb.db.metadata.schemaregion.ISchemaRegion;
-import org.apache.iotdb.db.metadata.schemaregion.SchemaEngine;
import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
-import org.apache.iotdb.db.qp.physical.sys.CreateAlignedTimeSeriesPlan;
-import org.apache.iotdb.db.qp.physical.sys.CreateTimeSeriesPlan;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
@@ -40,10 +35,9 @@ import org.apache.iotdb.tsfile.utils.Pair;
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.junit.After;
import org.junit.Assert;
-import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
@@ -54,19 +48,9 @@ import java.util.stream.Collectors;
public class SchemaFetchScanOperatorTest {
- @Before
- public void setUp() {
- EnvironmentUtils.envSetUp();
- }
-
- @After
- public void tearDown() throws Exception {
- EnvironmentUtils.cleanEnv();
- }
-
@Test
public void testSchemaFetchResult() throws Exception {
- ISchemaRegion schemaRegion = prepareSchemaRegion();
+ ISchemaRegion schemaRegion = mockSchemaRegion();
PathPatternTree patternTree = new PathPatternTree();
patternTree.appendPathPattern(new PartialPath("root.**.status"));
@@ -109,46 +93,58 @@ public class SchemaFetchScanOperatorTest {
pair.left.stream().map(MeasurementPath::getFullPath).collect(Collectors.toList()));
}
- private ISchemaRegion prepareSchemaRegion() throws Exception {
- SchemaEngine schemaEngine = SchemaEngine.getInstance();
- SchemaRegionId schemaRegionId = new SchemaRegionId(0);
- schemaEngine.createSchemaRegion(new PartialPath("root.sg"),
schemaRegionId);
- ISchemaRegion schemaRegion = schemaEngine.getSchemaRegion(schemaRegionId);
+ private ISchemaRegion mockSchemaRegion() throws Exception {
+ ISchemaRegion schemaRegion = Mockito.mock(ISchemaRegion.class);
- CreateTimeSeriesPlan createTimeSeriesPlan =
- new CreateTimeSeriesPlan(
+ MeasurementPath d1s1 =
+ new MeasurementPath(
new PartialPath("root.sg.d1.s1"),
- TSDataType.INT32,
- TSEncoding.PLAIN,
- CompressionType.UNCOMPRESSED,
- null,
- null,
- null,
- null);
- schemaRegion.createTimeseries(createTimeSeriesPlan, -1);
-
- createTimeSeriesPlan.setPath(new PartialPath("root.sg.d2.s1"));
- schemaRegion.createTimeseries(createTimeSeriesPlan, -1);
-
- createTimeSeriesPlan.setAlias("status");
- createTimeSeriesPlan.setPath(new PartialPath("root.sg.d1.s2"));
- schemaRegion.createTimeseries(createTimeSeriesPlan, -1);
-
- createTimeSeriesPlan.setPath(new PartialPath("root.sg.d2.s2"));
- schemaRegion.createTimeseries(createTimeSeriesPlan, -1);
-
- CreateAlignedTimeSeriesPlan createAlignedTimeSeriesPlan =
- new CreateAlignedTimeSeriesPlan(
- new PartialPath("root.sg.d2.a"),
- Arrays.asList("s1", "s2"),
- Arrays.asList(TSDataType.INT32, TSDataType.INT32),
- Arrays.asList(TSEncoding.PLAIN, TSEncoding.PLAIN),
- Arrays.asList(CompressionType.UNCOMPRESSED,
CompressionType.UNCOMPRESSED),
- Arrays.asList(null, "status"),
- Collections.emptyList(),
- Collections.emptyList());
-
- schemaRegion.createAlignedTimeSeries(createAlignedTimeSeriesPlan);
+ new MeasurementSchema(
+ "s1", TSDataType.INT32, TSEncoding.PLAIN,
CompressionType.UNCOMPRESSED, null),
+ false);
+ MeasurementPath d1s2 =
+ new MeasurementPath(
+ new PartialPath("root.sg.d1.s2"),
+ new MeasurementSchema(
+ "s2", TSDataType.INT32, TSEncoding.PLAIN,
CompressionType.UNCOMPRESSED, null),
+ false);
+ d1s2.setMeasurementAlias("status");
+
+ MeasurementPath d2s1 =
+ new MeasurementPath(
+ new PartialPath("root.sg.d2.s1"),
+ new MeasurementSchema(
+ "s1", TSDataType.INT32, TSEncoding.PLAIN,
CompressionType.UNCOMPRESSED, null),
+ false);
+ MeasurementPath d2s2 =
+ new MeasurementPath(
+ new PartialPath("root.sg.d2.s2"),
+ new MeasurementSchema(
+ "s2", TSDataType.INT32, TSEncoding.PLAIN,
CompressionType.UNCOMPRESSED, null),
+ false);
+ d2s2.setMeasurementAlias("status");
+
+ MeasurementPath d2as1 =
+ new MeasurementPath(
+ new PartialPath("root.sg.d2.a.s1"),
+ new MeasurementSchema(
+ "s1", TSDataType.INT32, TSEncoding.PLAIN,
CompressionType.UNCOMPRESSED, null),
+ true);
+ MeasurementPath d2as2 =
+ new MeasurementPath(
+ new PartialPath("root.sg.d2.a.s2"),
+ new MeasurementSchema(
+ "s2", TSDataType.INT32, TSEncoding.PLAIN,
CompressionType.UNCOMPRESSED, null),
+ true);
+ d2as2.setMeasurementAlias("status");
+
+ Mockito.when(
+ schemaRegion.fetchSchema(
+ new PartialPath("root.**.status"), Collections.emptyMap(),
false))
+ .thenReturn(Arrays.asList(d1s2, d2as2, d2s2));
+ Mockito.when(
+ schemaRegion.fetchSchema(new PartialPath("root.**.s1"),
Collections.emptyMap(), false))
+ .thenReturn(Arrays.asList(d1s1, d2as1, d2s1));
return schemaRegion;
}
diff --git
a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaQueryScanOperatorTest.java
b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaQueryScanOperatorTest.java
index 4df917ab80..2ceaa2c90f 100644
---
a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaQueryScanOperatorTest.java
+++
b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaQueryScanOperatorTest.java
@@ -21,10 +21,7 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.localconfignode.LocalConfigNode;
import org.apache.iotdb.db.metadata.schemaregion.ISchemaRegion;
-import org.apache.iotdb.db.metadata.schemaregion.SchemaEngine;
import org.apache.iotdb.db.mpp.common.FragmentInstanceId;
import org.apache.iotdb.db.mpp.common.PlanFragmentId;
import org.apache.iotdb.db.mpp.common.QueryId;
@@ -34,23 +31,22 @@ import
org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceContext;
import org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceStateMachine;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.db.query.reader.series.SeriesReaderTestUtil;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
+import org.apache.iotdb.db.qp.physical.sys.ShowDevicesPlan;
+import org.apache.iotdb.db.qp.physical.sys.ShowTimeSeriesPlan;
+import org.apache.iotdb.db.query.dataset.ShowDevicesResult;
+import org.apache.iotdb.db.query.dataset.ShowTimeSeriesResult;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+import org.apache.iotdb.tsfile.utils.Pair;
-import org.junit.After;
import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
+import org.mockito.Mockito;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -65,28 +61,11 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-@Ignore
public class SchemaQueryScanOperatorTest {
private static final String META_SCAN_OPERATOR_TEST_SG =
"root.MetaScanOperatorTest";
- private final List<String> deviceIds = new ArrayList<>();
- private final List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-
- private final List<TsFileResource> seqResources = new ArrayList<>();
- private final List<TsFileResource> unSeqResources = new ArrayList<>();
-
- @Before
- public void setUp() throws MetadataException, IOException,
WriteProcessException {
- SeriesReaderTestUtil.setUp(
- measurementSchemas, deviceIds, seqResources, unSeqResources,
META_SCAN_OPERATOR_TEST_SG);
- }
-
- @After
- public void tearDown() throws IOException {
- SeriesReaderTestUtil.tearDown(seqResources, unSeqResources);
- }
@Test
- public void testDeviceMetaScanOperator() {
+ public void testDeviceSchemaScanOperator() {
ExecutorService instanceNotificationExecutor =
IoTDBThreadPoolFactory.newFixedThreadPool(1,
"test-instance-notification");
try {
@@ -102,15 +81,21 @@ public class SchemaQueryScanOperatorTest {
fragmentInstanceContext.addOperatorContext(
1, planNodeId, SchemaQueryScanOperator.class.getSimpleName());
PartialPath partialPath = new PartialPath(META_SCAN_OPERATOR_TEST_SG +
".device0");
- ISchemaRegion schemaRegion =
- SchemaEngine.getInstance()
- .getSchemaRegion(
-
LocalConfigNode.getInstance().getBelongedSchemaRegionId(partialPath));
+ ISchemaRegion schemaRegion = Mockito.mock(ISchemaRegion.class);
+ Mockito.when(schemaRegion.getMatchedDevices(new
ShowDevicesPlan(partialPath, 10, 0, true)))
+ .thenReturn(
+ new Pair<>(
+ Collections.singletonList(
+ new ShowDevicesResult(
+ META_SCAN_OPERATOR_TEST_SG + ".device0",
+ false,
+ META_SCAN_OPERATOR_TEST_SG)),
+ 0));
operatorContext
.getInstanceContext()
.setDriverContext(new SchemaDriverContext(fragmentInstanceContext,
schemaRegion));
List<String> columns = Arrays.asList(COLUMN_DEVICES, COLUMN_DATABASE,
COLUMN_IS_ALIGNED);
- DevicesSchemaScanOperator deviceMetaScanOperator =
+ DevicesSchemaScanOperator devicesSchemaScanOperator =
new DevicesSchemaScanOperator(
planNodeId,
fragmentInstanceContext.getOperatorContexts().get(0),
@@ -119,8 +104,8 @@ public class SchemaQueryScanOperatorTest {
partialPath,
false,
true);
- while (deviceMetaScanOperator.hasNext()) {
- TsBlock tsBlock = deviceMetaScanOperator.next();
+ while (devicesSchemaScanOperator.hasNext()) {
+ TsBlock tsBlock = devicesSchemaScanOperator.next();
assertEquals(3, tsBlock.getValueColumnCount());
assertTrue(tsBlock.getColumn(0) instanceof BinaryColumn);
assertEquals(1, tsBlock.getPositionCount());
@@ -155,7 +140,7 @@ public class SchemaQueryScanOperatorTest {
}
@Test
- public void testTimeSeriesMetaScanOperator() {
+ public void testTimeSeriesSchemaScanOperator() {
ExecutorService instanceNotificationExecutor =
IoTDBThreadPoolFactory.newFixedThreadPool(1,
"test-instance-notification");
try {
@@ -171,10 +156,33 @@ public class SchemaQueryScanOperatorTest {
fragmentInstanceContext.addOperatorContext(
1, planNodeId, SchemaQueryScanOperator.class.getSimpleName());
PartialPath partialPath = new PartialPath(META_SCAN_OPERATOR_TEST_SG +
".device0.*");
- ISchemaRegion schemaRegion =
- SchemaEngine.getInstance()
- .getSchemaRegion(
-
LocalConfigNode.getInstance().getBelongedSchemaRegionId(partialPath));
+
+ ShowTimeSeriesPlan showTimeSeriesPlan =
+ new ShowTimeSeriesPlan(partialPath, false, null, null, 10, 0, false);
+ List<ShowTimeSeriesResult> showTimeSeriesResults = new ArrayList<>();
+ for (int i = 0; i < 10; i++) {
+ showTimeSeriesResults.add(
+ new ShowTimeSeriesResult(
+ META_SCAN_OPERATOR_TEST_SG + ".device0" + "s" + i,
+ null,
+ META_SCAN_OPERATOR_TEST_SG,
+ TSDataType.INT32,
+ TSEncoding.PLAIN,
+ CompressionType.UNCOMPRESSED,
+ 0,
+ null,
+ null,
+ null,
+ null));
+ }
+
+ ISchemaRegion schemaRegion = Mockito.mock(ISchemaRegion.class);
+
+ showTimeSeriesPlan.setRelatedTemplate(Collections.emptyMap());
+ Mockito.when(
+ schemaRegion.showTimeseries(showTimeSeriesPlan,
operatorContext.getInstanceContext()))
+ .thenReturn(new Pair<>(showTimeSeriesResults, 0));
+
operatorContext
.getInstanceContext()
.setDriverContext(new SchemaDriverContext(fragmentInstanceContext,
schemaRegion));