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

Reply via email to