This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch tsFile_v4
in repository https://gitbox.apache.org/repos/asf/tsfile.git
The following commit(s) were added to refs/heads/tsFile_v4 by this push:
new 094c6fc3 fix tests
094c6fc3 is described below
commit 094c6fc33016322a03647c9949ee91c25e9861b5
Author: jt2594838 <[email protected]>
AuthorDate: Fri Apr 12 19:29:09 2024 +0800
fix tests
---
.../tsfile/exception/write/NoDeviceException.java | 30 ++++++++++++++++++++++
.../apache/tsfile/read/TsFileSequenceReader.java | 3 +++
.../java/org/apache/tsfile/read/common/Path.java | 1 +
.../java/org/apache/tsfile/write/TsFileWriter.java | 19 ++++++--------
.../tsfile/write/MetadataIndexConstructorTest.java | 10 +++++---
.../apache/tsfile/write/TsFileIOWriterTest.java | 9 +++++--
.../org/apache/tsfile/write/TsFileWriterTest.java | 2 +-
.../writer/TsFileIOWriterMemoryControlTest.java | 10 ++++----
8 files changed, 61 insertions(+), 23 deletions(-)
diff --git
a/tsfile/src/main/java/org/apache/tsfile/exception/write/NoDeviceException.java
b/tsfile/src/main/java/org/apache/tsfile/exception/write/NoDeviceException.java
new file mode 100644
index 00000000..d72cb829
--- /dev/null
+++
b/tsfile/src/main/java/org/apache/tsfile/exception/write/NoDeviceException.java
@@ -0,0 +1,30 @@
+/*
+ * 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.tsfile.exception.write;
+
+/** This exception means it can not find the measurement while writing a
TSRecord. */
+public class NoDeviceException extends WriteProcessException {
+
+ private static final long serialVersionUID = -5599767368831572747L;
+
+ public NoDeviceException(String columnName) {
+ super(String.format("No device for %s", columnName));
+ }
+}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
b/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
index a83c6e5f..646b284b 100644
--- a/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
+++ b/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
@@ -1495,6 +1495,9 @@ public class TsFileSequenceReader implements
AutoCloseable {
*/
protected Pair<IMetadataIndexEntry, Long>
getMetadataAndEndOffsetOfDeviceNode(
MetadataIndexNode metadataIndex, IDeviceID deviceID, boolean
exactSearch) throws IOException {
+ if (metadataIndex == null) {
+ return null;
+ }
if
(MetadataIndexNodeType.INTERNAL_MEASUREMENT.equals(metadataIndex.getNodeType())
||
MetadataIndexNodeType.LEAF_MEASUREMENT.equals(metadataIndex.getNodeType())) {
throw new IllegalArgumentException();
diff --git a/tsfile/src/main/java/org/apache/tsfile/read/common/Path.java
b/tsfile/src/main/java/org/apache/tsfile/read/common/Path.java
index e7d531f6..2d6bc9d2 100644
--- a/tsfile/src/main/java/org/apache/tsfile/read/common/Path.java
+++ b/tsfile/src/main/java/org/apache/tsfile/read/common/Path.java
@@ -79,6 +79,7 @@ public class Path implements Serializable, Comparable<Path> {
if (!needSplit) {
// no split, we don't use antlr to check here.
fullPath = pathSc;
+ device = pathSc;
} else {
if (pathSc.length() > 0) {
String[] nodes = PathNodesGenerator.splitPathToNodes(pathSc);
diff --git a/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
b/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
index 42b06438..bde0530f 100644
--- a/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
+++ b/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
@@ -21,6 +21,7 @@ package org.apache.tsfile.write;
import org.apache.tsfile.common.conf.TSFileConfig;
import org.apache.tsfile.common.conf.TSFileDescriptor;
import org.apache.tsfile.exception.write.ConflictDataTypeException;
+import org.apache.tsfile.exception.write.NoDeviceException;
import org.apache.tsfile.exception.write.NoMeasurementException;
import org.apache.tsfile.exception.write.NoTableException;
import org.apache.tsfile.exception.write.WriteProcessException;
@@ -345,7 +346,7 @@ public class TsFileWriter implements AutoCloseable {
checkIsAllMeasurementsInGroup(record.dataPointList,
measurementGroup, isAligned);
groupWriter.tryToAddSeriesWriter(measurementSchemas);
} else {
- throw new NoMeasurementException("input devicePath is invalid: " +
deviceID);
+ throw new NoDeviceException(deviceID.toString());
}
return true;
}
@@ -414,9 +415,9 @@ public class TsFileWriter implements AutoCloseable {
boolean isAligned)
throws NoMeasurementException {
if (isAligned && !measurementGroup.isAligned()) {
- throw new NoMeasurementException("no aligned timeseries is registered in
the group.");
+ throw new NoMeasurementException("aligned");
} else if (!isAligned && measurementGroup.isAligned()) {
- throw new NoMeasurementException("no nonAligned timeseries is registered
in the group.");
+ throw new NoMeasurementException("nonAligned");
}
for (MeasurementSchema measurementSchema : measurementSchemas) {
if (!measurementGroup
@@ -424,9 +425,7 @@ public class TsFileWriter implements AutoCloseable {
.containsKey(measurementSchema.getMeasurementId())) {
if (isAligned) {
throw new NoMeasurementException(
- "measurement "
- + measurementSchema.getMeasurementId()
- + " is not registered or in the default template");
+ measurementSchema.getMeasurementId());
} else {
measurementSchemas.remove(measurementSchema);
}
@@ -439,18 +438,16 @@ public class TsFileWriter implements AutoCloseable {
List<DataPoint> dataPoints, MeasurementGroup measurementGroup, boolean
isAligned)
throws NoMeasurementException {
if (isAligned && !measurementGroup.isAligned()) {
- throw new NoMeasurementException("no aligned timeseries is registered in
the group.");
+ throw new NoMeasurementException("aligned");
} else if (!isAligned && measurementGroup.isAligned()) {
- throw new NoMeasurementException("no nonAligned timeseries is registered
in the group.");
+ throw new NoMeasurementException("nonAligned");
}
List<MeasurementSchema> schemas = new ArrayList<>();
for (DataPoint dataPoint : dataPoints) {
if
(!measurementGroup.getMeasurementSchemaMap().containsKey(dataPoint.getMeasurementId()))
{
if (isAligned) {
throw new NoMeasurementException(
- "aligned measurement "
- + dataPoint.getMeasurementId()
- + " is not registered or in the default template");
+ dataPoint.getMeasurementId());
} else {
LOG.warn(
"Ignore nonAligned measurement "
diff --git
a/tsfile/src/test/java/org/apache/tsfile/write/MetadataIndexConstructorTest.java
b/tsfile/src/test/java/org/apache/tsfile/write/MetadataIndexConstructorTest.java
index 29a7bedd..d8da67bd 100644
---
a/tsfile/src/test/java/org/apache/tsfile/write/MetadataIndexConstructorTest.java
+++
b/tsfile/src/test/java/org/apache/tsfile/write/MetadataIndexConstructorTest.java
@@ -33,6 +33,7 @@ import org.apache.tsfile.file.metadata.TimeseriesMetadata;
import org.apache.tsfile.file.metadata.TsFileMetadata;
import org.apache.tsfile.file.metadata.enums.MetadataIndexNodeType;
import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.file.metadata.utils.TestHelper;
import org.apache.tsfile.fileSystem.FSFactoryProducer;
import org.apache.tsfile.read.TsFileSequenceReader;
import org.apache.tsfile.read.common.Path;
@@ -288,8 +289,9 @@ public class MetadataIndexConstructorTest {
private void readMetaDataDFS(List<IDeviceID> devices, List<List<String>>
measurements) {
try (TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH)) {
TsFileMetadata tsFileMetaData = reader.readFileMetadata();
- MetadataIndexNode metadataIndexNode =
tsFileMetaData.getTableMetadataIndexNodeMap().get("");
- deviceDFS(devices, measurements, reader, metadataIndexNode);
+ for (MetadataIndexNode node :
tsFileMetaData.getTableMetadataIndexNodeMap().values()) {
+ deviceDFS(devices, measurements, reader, node);
+ }
} catch (IOException e) {
e.printStackTrace();
fail(e.getMessage());
@@ -435,7 +437,7 @@ public class MetadataIndexConstructorTest {
// the number of record rows
int rowNum = 10;
for (int row = 0; row < rowNum; row++) {
- TSRecord tsRecord = new TSRecord(row, ((PlainDeviceID)
device).toStringID());
+ TSRecord tsRecord = new TSRecord(row, device);
for (String measurement : singleMeasurement[i]) {
DataPoint dPoint = new LongDataPoint(measurement, row);
tsRecord.addTuple(dPoint);
@@ -474,7 +476,7 @@ public class MetadataIndexConstructorTest {
schema.registerMeasurementGroup(new Path(device), group);
// add measurements into TSFileWriter
// construct the tablet
- Tablet tablet = new Tablet(((PlainDeviceID) device).toStringID(),
tabletSchema);
+ Tablet tablet = new Tablet(device.toString(), tabletSchema);
long[] timestamps = tablet.timestamps;
Object[] values = tablet.values;
long timestamp = 1;
diff --git
a/tsfile/src/test/java/org/apache/tsfile/write/TsFileIOWriterTest.java
b/tsfile/src/test/java/org/apache/tsfile/write/TsFileIOWriterTest.java
index 8c81554e..afd04de7 100644
--- a/tsfile/src/test/java/org/apache/tsfile/write/TsFileIOWriterTest.java
+++ b/tsfile/src/test/java/org/apache/tsfile/write/TsFileIOWriterTest.java
@@ -26,6 +26,7 @@ import org.apache.tsfile.file.MetaMarker;
import org.apache.tsfile.file.header.ChunkGroupHeader;
import org.apache.tsfile.file.header.ChunkHeader;
import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.MetadataIndexNode;
import org.apache.tsfile.file.metadata.PlainDeviceID;
import org.apache.tsfile.file.metadata.TimeseriesMetadata;
import org.apache.tsfile.file.metadata.TsFileMetadata;
@@ -155,7 +156,7 @@ public class TsFileIOWriterTest {
deviceTimeseriesMetadataMap.entrySet()) {
for (TimeseriesMetadata timeseriesMetadata : entry.getValue()) {
String seriesPath =
- ((PlainDeviceID) entry.getKey()).toStringID()
+ entry.getKey()
+ "."
+ timeseriesMetadata.getMeasurementId();
Assert.assertFalse(pathSet.contains(seriesPath));
@@ -165,7 +166,11 @@ public class TsFileIOWriterTest {
// FileMetaData
TsFileMetadata metaData = reader.readFileMetadata();
- Assert.assertEquals(2,
metaData.getTableMetadataIndexNodeMap().get("").getChildren().size());
+ int cnt = 0;
+ for (MetadataIndexNode node :
metaData.getTableMetadataIndexNodeMap().values()) {
+ cnt += node.getChildren().size();
+ }
+ Assert.assertEquals(2, cnt);
}
private void writeChunkGroup(TsFileIOWriter writer, MeasurementSchema
measurementSchema)
diff --git a/tsfile/src/test/java/org/apache/tsfile/write/TsFileWriterTest.java
b/tsfile/src/test/java/org/apache/tsfile/write/TsFileWriterTest.java
index 49bba8d7..1e18c3b5 100644
--- a/tsfile/src/test/java/org/apache/tsfile/write/TsFileWriterTest.java
+++ b/tsfile/src/test/java/org/apache/tsfile/write/TsFileWriterTest.java
@@ -210,7 +210,7 @@ public class TsFileWriterTest {
try {
writer.write(record);
} catch (WriteProcessException e) {
- Assert.assertEquals("no nonAligned timeseries is registered in the
group.", e.getMessage());
+ Assert.assertEquals("No measurement for nonAligned", e.getMessage());
}
closeFile();
readNothing();
diff --git
a/tsfile/src/test/java/org/apache/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
b/tsfile/src/test/java/org/apache/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
index 128e9f36..3d2c9618 100644
---
a/tsfile/src/test/java/org/apache/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
+++
b/tsfile/src/test/java/org/apache/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
@@ -164,9 +164,9 @@ public class TsFileIOWriterMemoryControlTest {
List<String> measurementIds = new ArrayList<>();
for (int i = 0; i < 10; ++i) {
- measurementIds.add(((PlainDeviceID)
sortedDeviceId.get(i)).toStringID() + ".");
+ measurementIds.add(sortedDeviceId.get(i) + ".");
for (int j = 1; j <= 6; ++j) {
- measurementIds.add(((PlainDeviceID)
sortedDeviceId.get(i)).toStringID() + ".s" + j);
+ measurementIds.add(sortedDeviceId.get(i) + ".s" + j);
}
}
TSMIterator iterator =
@@ -216,15 +216,15 @@ public class TsFileIOWriterMemoryControlTest {
break;
}
chunkWriter.writeToFileWriter(writer);
- seriesIds.add(((PlainDeviceID) deviceId).toStringID() + "." +
sortedSeriesId.get(j));
+ seriesIds.add(deviceId + "." + sortedSeriesId.get(j));
}
} else {
// write vector
AlignedChunkWriterImpl chunkWriter = generateVectorData(0L, new
ArrayList<>(), 6);
chunkWriter.writeToFileWriter(writer);
- seriesIds.add(((PlainDeviceID) deviceId).toStringID() + ".");
+ seriesIds.add(deviceId + ".");
for (int l = 1; l <= 6; ++l) {
- seriesIds.add(((PlainDeviceID) deviceId).toStringID() + ".s" + l);
+ seriesIds.add(deviceId + ".s" + l);
}
}
originChunkMetadataList.addAll(writer.chunkMetadataList);