You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by lt...@apache.org on 2019/07/09 13:05:34 UTC
[incubator-iotdb] 03/05: add dynamic para ut test
This is an automated email from the ASF dual-hosted git repository.
lta pushed a commit to branch dynamic_parameters
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit cd693b4dd9dd870f3b391d1de3f67e640f98de2a
Author: lta <li...@163.com>
AuthorDate: Tue Jul 9 20:57:10 2019 +0800
add dynamic para ut test
---
.../iotdb/db/conf/adapter/CompressionRatio.java | 62 +++++++----
.../db/conf/adapter/IoTDBConfigDynamicAdapter.java | 28 +++--
.../org/apache/iotdb/db/engine/StorageEngine.java | 1 +
.../engine/storagegroup/StorageGroupProcessor.java | 7 +-
.../db/engine/storagegroup/TsFileProcessor.java | 21 ++--
.../org/apache/iotdb/db/metadata/MManager.java | 10 +-
.../java/org/apache/iotdb/db/service/IoTDB.java | 9 ++
.../db/conf/adapter/CompressionRatioTest.java | 116 +++++++++++++++++++++
.../adapter/IoTDBConfigDynamicAdapterTest.java | 6 --
.../storagegroup/StorageGroupProcessorTest.java | 2 +-
.../org/apache/iotdb/db/metadata/MGraphTest.java | 1 +
.../iotdb/db/metadata/MManagerAdvancedTest.java | 2 +
.../iotdb/db/metadata/MManagerBasicTest.java | 1 +
.../iotdb/db/metadata/MManagerImproveTest.java | 1 +
.../org/apache/iotdb/db/metadata/MetadataTest.java | 1 +
.../org/apache/iotdb/db/qp/QueryProcessorTest.java | 4 +
.../dataset/EngineDataSetWithValueFilterTest.java | 5 +
.../iotdb/db/query/reader/ReaderTestHelper.java | 5 +
.../apache/iotdb/db/utils/EnvironmentUtils.java | 17 +++
19 files changed, 249 insertions(+), 50 deletions(-)
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java b/iotdb/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java
index ff57f21..abbb929 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java
@@ -34,11 +34,13 @@ public class CompressionRatio {
private static final IoTDBConfig CONFIG = IoTDBDescriptor.getInstance().getConfig();
- private static final String COMPRESSION_RATIO_NAME = "compression_ratio";
+ public static final String COMPRESSION_RATIO_NAME = "compression_ratio";
- private static final String FILE_PREFIX = "Ratio-";
+ public static final String FILE_PREFIX = "Ratio-";
- private static final String SEPARATOR = "-";
+ public static final String SEPARATOR = "-";
+
+ public static final String RATIO_FILE_PATH_FORMAT = FILE_PREFIX + "%f" + SEPARATOR + "%d";
private static final double DEFAULT_COMPRESSION_RATIO = 2.0f;
@@ -46,10 +48,11 @@ public class CompressionRatio {
private long calcuTimes;
- private String directoryPath;
+ private File directory;
private CompressionRatio() {
- directoryPath = FilePathUtils.regularizePath(CONFIG.getSystemDir()) + COMPRESSION_RATIO_NAME;
+ directory = new File(
+ FilePathUtils.regularizePath(CONFIG.getSystemDir()) + COMPRESSION_RATIO_NAME);
try {
restore();
} catch (IOException e) {
@@ -57,16 +60,15 @@ public class CompressionRatio {
}
}
- public synchronized void updateRatio(int flushNum) throws IOException {
- File oldFile = new File(directoryPath,
- FILE_PREFIX + compressionRatioSum + SEPARATOR + calcuTimes);
- compressionRatioSum +=
- (TSFileConfig.groupSizeInByte * flushNum) / CONFIG.getTsFileSizeThreshold();
+ public synchronized void updateRatio(double currentCompressionRatio) throws IOException {
+ File oldFile = new File(directory,
+ String.format(RATIO_FILE_PATH_FORMAT, compressionRatioSum, calcuTimes));
+ compressionRatioSum += currentCompressionRatio;
calcuTimes++;
- File newFile = new File(directoryPath,
- FILE_PREFIX + compressionRatioSum + SEPARATOR + calcuTimes);
+ File newFile = new File(directory,
+ String.format(RATIO_FILE_PATH_FORMAT, compressionRatioSum, calcuTimes));
persist(oldFile, newFile);
- IoTDBConfigDynamicAdapter.getInstance().tryToAdaptParameters();
+// IoTDBConfigDynamicAdapter.getInstance().tryToAdaptParameters(); // This will cause dead lock
}
public synchronized double getRatio() {
@@ -74,8 +76,9 @@ public class CompressionRatio {
}
private void persist(File oldFile, File newFile) throws IOException {
+ checkDirectoryExist();
if (!oldFile.exists()) {
- FileUtils.forceMkdir(newFile);
+ newFile.createNewFile();
LOGGER.debug("Old ratio file {} doesn't exist, force create ratio file {}",
oldFile.getAbsolutePath(), newFile.getAbsolutePath());
} else {
@@ -85,8 +88,14 @@ public class CompressionRatio {
}
}
- private void restore() throws IOException {
- File directory = new File(directoryPath);
+ private void checkDirectoryExist() throws IOException {
+ if (!directory.exists()) {
+ FileUtils.forceMkdir(directory);
+ }
+ }
+
+ void restore() throws IOException {
+ checkDirectoryExist();
File[] ratioFiles = directory.listFiles((dir, name) -> name.startsWith(FILE_PREFIX));
File restoreFile;
if (ratioFiles != null && ratioFiles.length > 0) {
@@ -106,11 +115,28 @@ public class CompressionRatio {
}
}
} else {
- restoreFile = new File(directory, FILE_PREFIX + compressionRatioSum + SEPARATOR + calcuTimes);
- FileUtils.forceMkdir(restoreFile);
+ restoreFile = new File(directory,
+ String.format(RATIO_FILE_PATH_FORMAT, compressionRatioSum, calcuTimes));
+ restoreFile.createNewFile();
}
}
+ /**
+ * Only for test
+ */
+ void reset() {
+ calcuTimes = 0;
+ compressionRatioSum = 0;
+ }
+
+ public double getCompressionRatioSum() {
+ return compressionRatioSum;
+ }
+
+ public long getCalcuTimes() {
+ return calcuTimes;
+ }
+
public static CompressionRatio getInstance() {
return CompressionRatioHolder.INSTANCE;
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/conf/adapter/IoTDBConfigDynamicAdapter.java b/iotdb/src/main/java/org/apache/iotdb/db/conf/adapter/IoTDBConfigDynamicAdapter.java
index dca6b33..3b4a722 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/conf/adapter/IoTDBConfigDynamicAdapter.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/conf/adapter/IoTDBConfigDynamicAdapter.java
@@ -100,10 +100,12 @@ public class IoTDBConfigDynamicAdapter implements IDynamicAdapter {
CONFIG.setMaxMemtableNumber(maxMemTableNum);
CONFIG.setTsFileSizeThreshold(tsFileSize);
TSFileConfig.groupSizeInByte = memtableSizeInByte;
- if (shouldClose) {
- StorageEngine.getInstance().asyncFlushAndSealAllFiles();
- } else if (memtableSizeInByte < currentMemTableSize) {
- StorageEngine.getInstance().asyncFlushAllProcessor();
+ if(initialized) {
+ if (shouldClose) {
+ StorageEngine.getInstance().asyncFlushAndSealAllFiles();
+ } else if (memtableSizeInByte < currentMemTableSize) {
+ StorageEngine.getInstance().asyncFlushAllProcessor();
+ }
}
currentMemTableSize = memtableSizeInByte;
}
@@ -121,13 +123,16 @@ public class IoTDBConfigDynamicAdapter implements IDynamicAdapter {
*/
private int calcuMemTableSize() {
double ratio = CompressionRatio.getInstance().getRatio();
- long a = (long) (ratio * maxMemTableNum);
- long b = (long) ((staticMemory - MAX_MEMORY_B) * ratio);
- long c = CONFIG.getTsFileSizeThreshold() * maxMemTableNum * CHUNK_METADATA_SIZE_B * MManager
- .getInstance().getMaximalSeriesNumberAmongStorageGroups();
- long tempValue = b * b - 4 * a * c;
- double memTableSize = ((-b + Math.sqrt(tempValue)) / (2 * a));
- return tempValue < 0 ? -1 : (int) memTableSize;
+ // when unit is byte, it's likely to cause Long type overflow. so use the unit KB.
+ double a = (long) (ratio * maxMemTableNum);
+ double b = (long) ((MAX_MEMORY_B - staticMemory) * ratio);
+ int times = b > Integer.MAX_VALUE ? 1024 : 1;
+ b /= times;
+ double c = (double) CONFIG.getTsFileSizeThreshold() * maxMemTableNum * CHUNK_METADATA_SIZE_B * MManager
+ .getInstance().getMaximalSeriesNumberAmongStorageGroups() / times / times;
+ double tempValue = b * b - 4 * a * c;
+ double memTableSize = ((b + Math.sqrt(tempValue)) / (2 * a));
+ return tempValue < 0 ? -1 : (int) (memTableSize * times);
}
/**
@@ -194,6 +199,7 @@ public class IoTDBConfigDynamicAdapter implements IDynamicAdapter {
totalTimeseries = 0;
staticMemory = 0;
maxMemTableNum = MEM_TABLE_AVERAGE_QUEUE_LEN;
+ initialized = false;
}
private IoTDBConfigDynamicAdapter() {
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index 7c94a4e..206e347 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -27,6 +27,7 @@ import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.io.FileUtils;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.conf.adapter.IoTDBConfigDynamicAdapter;
import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
import org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
index 30e8579..4b08029 100755
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
@@ -456,16 +456,19 @@ public class StorageGroupProcessor {
}
public void asyncFlush() {
+ if (workSequenceTsFileProcessor == null && workUnSequenceTsFileProcessor == null) {
+ return;
+ }
writeLock();
try {
- if (workSequenceTsFileProcessor.shouldFlush()) {
+ if (workSequenceTsFileProcessor != null && workSequenceTsFileProcessor.shouldFlush()) {
logger.info("The memtable size {} reaches the threshold, async flush it to tsfile: {}",
workSequenceTsFileProcessor.getWorkMemTableMemory(),
workSequenceTsFileProcessor.getTsFileResource().getFile().getAbsolutePath());
workSequenceTsFileProcessor.asyncFlush();
}
- if (workUnSequenceTsFileProcessor.shouldFlush()) {
+ if (workUnSequenceTsFileProcessor != null && workUnSequenceTsFileProcessor.shouldFlush()) {
logger.info("The memtable size {} reaches the threshold, async flush it to tsfile: {}",
workUnSequenceTsFileProcessor.getWorkMemTableMemory(),
workUnSequenceTsFileProcessor.getTsFileResource().getFile().getAbsolutePath());
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
index 5a64231..db6e66f 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
@@ -108,7 +108,7 @@ public class TsFileProcessor {
private boolean sequence;
- private int totalFlushTimes;
+ private long totalMemTableSize;
TsFileProcessor(String storageGroupName, File tsfile, FileSchema fileSchema,
VersionController versionController,
@@ -194,7 +194,7 @@ public class TsFileProcessor {
boolean shouldFlush() {
- return workMemTable.memSize() > TSFileConfig.groupSizeInByte;
+ return workMemTable != null && workMemTable.memSize() > TSFileConfig.groupSizeInByte;
}
@@ -255,9 +255,6 @@ public class TsFileProcessor {
} catch (IOException e) {
logger.error("async close failed, because", e);
}
- CompressionRatio.getInstance().updateRatio(totalFlushTimes);
- } catch (IOException e) {
- logger.error("update compression ratio failed", e);
} finally {
flushQueryLock.writeLock().unlock();
}
@@ -338,8 +335,8 @@ public class TsFileProcessor {
if (IoTDBDescriptor.getInstance().getConfig().isEnableWal()) {
getLogNode().notifyStartFlush();
}
- if(!tobeFlushed.isSignalMemTable()){
- totalFlushTimes++;
+ if (!tobeFlushed.isSignalMemTable()) {
+ totalMemTableSize += tobeFlushed.memSize();
}
workMemTable = null;
FlushManager.getInstance().registerTsFileProcessor(this);
@@ -406,6 +403,16 @@ public class TsFileProcessor {
if (shouldClose && flushingMemTables.isEmpty()) {
try {
writer.mark();
+ try {
+ double compressionRatio = totalMemTableSize / writer.getPos();
+ if (totalMemTableSize < writer.getPos()) {
+ logger.error("Compression ratio {} has been less than 1.0.", compressionRatio);
+ } else {
+ CompressionRatio.getInstance().updateRatio(compressionRatio);
+ }
+ } catch (IOException e) {
+ logger.error("update compression ratio failed", e);
+ }
endFile();
} catch (IOException | TsFileProcessorException e) {
StorageEngine.getInstance().setReadOnly(true);
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/metadata/MManager.java b/iotdb/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index 5e44280..dc1f755 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@ -117,10 +117,6 @@ public class MManager {
}
}
};
-
- init();
- IoTDBConfigDynamicAdapter.getInstance().setInitialized(true);
- initialized = true;
}
public static MManager getInstance() {
@@ -129,8 +125,11 @@ public class MManager {
//Because the writer will be used later and should not be closed here.
@SuppressWarnings("squid:S2093")
- private void init() {
+ public void init() {
+ if(initialized){
+ return;
+ }
lock.writeLock().lock();
File logFile = new File(logFilePath);
@@ -150,6 +149,7 @@ public class MManager {
} finally {
lock.writeLock().unlock();
}
+ initialized = true;
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/service/IoTDB.java b/iotdb/src/main/java/org/apache/iotdb/db/service/IoTDB.java
index ba80791..9abbb99 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/service/IoTDB.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/service/IoTDB.java
@@ -21,9 +21,11 @@ package org.apache.iotdb.db.service;
import org.apache.iotdb.db.concurrent.IoTDBDefaultThreadExceptionHandler;
import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.conf.adapter.IoTDBConfigDynamicAdapter;
import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.exception.StartupException;
import org.apache.iotdb.db.exception.builder.ExceptionBuilder;
+import org.apache.iotdb.db.metadata.MManager;
import org.apache.iotdb.db.monitor.StatMonitor;
import org.apache.iotdb.db.sync.receiver.SyncServerManager;
import org.apache.iotdb.db.rescon.TVListAllocator;
@@ -85,6 +87,7 @@ public class IoTDB implements IoTDBMBean {
StatMonitor.getInstance().recovery();
}
+ initMManager();
registerManager.register(StorageEngine.getInstance());
registerManager.register(MultiFileLogNodeManager.getInstance());
registerManager.register(JMXService.getInstance());
@@ -108,6 +111,12 @@ public class IoTDB implements IoTDBMBean {
logger.info("IoTDB is deactivated.");
}
+ private void initMManager(){
+ MManager.getInstance().init();
+ IoTDBConfigDynamicAdapter.getInstance().setInitialized(true);
+
+ }
+
@Override
public void stop() {
deactivate();
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/conf/adapter/CompressionRatioTest.java b/iotdb/src/test/java/org/apache/iotdb/db/conf/adapter/CompressionRatioTest.java
new file mode 100644
index 0000000..02e81c4
--- /dev/null
+++ b/iotdb/src/test/java/org/apache/iotdb/db/conf/adapter/CompressionRatioTest.java
@@ -0,0 +1,116 @@
+/**
+ * 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.db.conf.adapter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.IOException;
+import org.apache.commons.io.FileUtils;
+import org.apache.iotdb.db.conf.IoTDBConfig;
+import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.exception.ConfigAdjusterException;
+import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.utils.EnvironmentUtils;
+import org.apache.iotdb.db.utils.FilePathUtils;
+import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class CompressionRatioTest {
+
+ private static IoTDB daemon;
+
+ private static final IoTDBConfig CONFIG = IoTDBDescriptor.getInstance().getConfig();
+
+ private CompressionRatio compressionRatio = CompressionRatio.getInstance();
+
+ private static final String directory = FilePathUtils.regularizePath(CONFIG.getSystemDir())
+ + CompressionRatio.COMPRESSION_RATIO_NAME;
+
+ @Before
+ public void setUp() throws Exception {
+ EnvironmentUtils.closeStatMonitor();
+ daemon = IoTDB.getInstance();
+ daemon.active();
+ EnvironmentUtils.envSetUp();
+ FileUtils.forceMkdir(new File(directory));
+ compressionRatio.reset();
+ compressionRatio.restore();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ daemon.stop();
+ EnvironmentUtils.cleanEnv();
+ }
+
+ @Test
+ public void testCompressionRatio() throws IOException {
+ double compressionRatioSum = 0;
+ int calcuTimes = 0;
+ if (!new File(directory, String.format(CompressionRatio.RATIO_FILE_PATH_FORMAT, compressionRatioSum , calcuTimes)).exists()) {
+ fail();
+ }
+ double compressionRatio = 10;
+ for(int i = 0; i < 500 ; i+= compressionRatio){
+ this.compressionRatio.updateRatio(compressionRatio);
+ if (new File(directory, String.format(CompressionRatio.RATIO_FILE_PATH_FORMAT, compressionRatioSum , calcuTimes)).exists()) {
+ fail();
+ }
+ calcuTimes++;
+ compressionRatioSum += compressionRatio;
+ if (!new File(directory, String.format(CompressionRatio.RATIO_FILE_PATH_FORMAT, compressionRatioSum , calcuTimes)).exists()) {
+ fail();
+ }
+ assertEquals(0, Double
+ .compare(compressionRatioSum / calcuTimes, this.compressionRatio.getRatio()));
+ }
+ }
+
+ @Test
+ public void testRestore() throws IOException {
+ double compressionRatioSum = 0;
+ int calcuTimes = 0;
+ if (!new File(directory, String.format(CompressionRatio.RATIO_FILE_PATH_FORMAT, compressionRatioSum , calcuTimes)).exists()) {
+ fail();
+ }
+ int compressionRatio = 10;
+ for(int i = 0; i < 100 ; i+= compressionRatio){
+ this.compressionRatio.updateRatio(compressionRatio);
+ if (new File(directory, String.format(CompressionRatio.RATIO_FILE_PATH_FORMAT, compressionRatioSum , calcuTimes)).exists()) {
+ fail();
+ }
+ calcuTimes++;
+ compressionRatioSum += compressionRatio;
+ if (!new File(directory, String.format(CompressionRatio.RATIO_FILE_PATH_FORMAT, compressionRatioSum , calcuTimes)).exists()) {
+ fail();
+ }
+ assertEquals(0, Double
+ .compare(compressionRatioSum / calcuTimes, this.compressionRatio.getRatio()));
+ }
+ this.compressionRatio.restore();
+ assertEquals(10, this.compressionRatio.getCalcuTimes());
+ assertEquals(0, Double
+ .compare(compressionRatioSum / calcuTimes, this.compressionRatio.getRatio()));
+ }
+}
\ No newline at end of file
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/conf/adapter/IoTDBConfigDynamicAdapterTest.java b/iotdb/src/test/java/org/apache/iotdb/db/conf/adapter/IoTDBConfigDynamicAdapterTest.java
index 0373e71..cba8d54 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/conf/adapter/IoTDBConfigDynamicAdapterTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/conf/adapter/IoTDBConfigDynamicAdapterTest.java
@@ -19,20 +19,14 @@
package org.apache.iotdb.db.conf.adapter;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.ConfigAdjusterException;
import org.apache.iotdb.db.metadata.MManager;
-import org.apache.iotdb.db.rescon.PrimitiveArrayPool;
import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.jdbc.Config;
import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
import org.junit.After;
import org.junit.Before;
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessorTest.java b/iotdb/src/test/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessorTest.java
index 76e0263..0b3e222 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessorTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessorTest.java
@@ -50,8 +50,8 @@ public class StorageGroupProcessorTest {
@After
public void tearDown() throws Exception {
- processor.syncDeleteDataFiles();
EnvironmentUtils.cleanEnv();
+ processor.syncDeleteDataFiles();
EnvironmentUtils.cleanDir("data");
}
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MGraphTest.java b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MGraphTest.java
index 2d7dd3e..3e18835 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MGraphTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MGraphTest.java
@@ -30,6 +30,7 @@ public class MGraphTest {
@Before
public void setUp() throws Exception {
+ EnvironmentUtils.envSetUp();
}
@After
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerAdvancedTest.java b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerAdvancedTest.java
index 4fe76ae..94bfd40 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerAdvancedTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerAdvancedTest.java
@@ -41,6 +41,7 @@ public class MManagerAdvancedTest {
@Before
public void setUp() throws Exception {
+ EnvironmentUtils.envSetUp();
mmanager = MManager.getInstance();
mmanager.setStorageLevelToMTree("root.vehicle.d0");
@@ -60,6 +61,7 @@ public class MManagerAdvancedTest {
mmanager.addPathToMTree("root.vehicle.d1.s3", "DOUBLE", "RLE");
mmanager.addPathToMTree("root.vehicle.d1.s4", "BOOLEAN", "PLAIN");
mmanager.addPathToMTree("root.vehicle.d1.s5", "TEXT", "PLAIN");
+
}
@After
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
index 05f3e5c..864381c 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
@@ -46,6 +46,7 @@ public class MManagerBasicTest {
@Before
public void setUp() throws Exception {
compressionType = CompressionType.valueOf(TSFileConfig.compressor);
+ EnvironmentUtils.envSetUp();
}
@After
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerImproveTest.java b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerImproveTest.java
index 3c1c610..54d943f 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerImproveTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MManagerImproveTest.java
@@ -41,6 +41,7 @@ public class MManagerImproveTest {
@Before
public void setUp() throws Exception {
+ EnvironmentUtils.envSetUp();
mManager = MManager.getInstance();
mManager.setStorageLevelToMTree("root.t1.v2");
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MetadataTest.java b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MetadataTest.java
index 9ad6701..4a79db2 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/metadata/MetadataTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/metadata/MetadataTest.java
@@ -32,6 +32,7 @@ public class MetadataTest {
@Before
public void setUp() throws Exception {
+ EnvironmentUtils.envSetUp();
}
@After
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/qp/QueryProcessorTest.java b/iotdb/src/test/java/org/apache/iotdb/db/qp/QueryProcessorTest.java
index a2f8a19..5ae454a 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/qp/QueryProcessorTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/qp/QueryProcessorTest.java
@@ -40,6 +40,10 @@ public class QueryProcessorTest {
private MManager mManager = MManager.getInstance();
private QueryProcessor processor = new QueryProcessor(new QueryProcessExecutor());
+ static {
+ MManager.getInstance().init();
+ }
+
@Before
public void setUp() throws Exception {
EnvironmentUtils.envSetUp();
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithValueFilterTest.java b/iotdb/src/test/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithValueFilterTest.java
index 4ab3b24..4f47435 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithValueFilterTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithValueFilterTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import org.apache.iotdb.db.metadata.MManager;
import org.apache.iotdb.db.qp.QueryProcessor;
import org.apache.iotdb.db.qp.executor.AbstractQueryProcessExecutor;
import org.apache.iotdb.db.qp.executor.QueryProcessExecutor;
@@ -78,6 +79,10 @@ public class EngineDataSetWithValueFilterTest {
"insert into root.test.d0(timestamp,s0,s1) values(700,1307,'1038')",
"insert into root.test.d0(timestamp,s1) values(3000,'1309')"};
+ static {
+ MManager.getInstance().init();
+ }
+
@Before
public void setUp() throws Exception {
EnvironmentUtils.envSetUp();
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/query/reader/ReaderTestHelper.java b/iotdb/src/test/java/org/apache/iotdb/db/query/reader/ReaderTestHelper.java
index e5f286a..7f76a49 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/query/reader/ReaderTestHelper.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/query/reader/ReaderTestHelper.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.query.reader;
import java.io.IOException;
import org.apache.iotdb.db.engine.MetadataManagerHelper;
import org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor;
+import org.apache.iotdb.db.metadata.MManager;
import org.apache.iotdb.db.qp.physical.crud.InsertPlan;
import org.apache.iotdb.db.utils.EnvironmentUtils;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -37,6 +38,10 @@ public abstract class ReaderTestHelper {
protected StorageGroupProcessor storageGroupProcessor;
private String systemDir = "data/info";
+ static {
+ MManager.getInstance().init();
+ }
+
@Before
public void setUp() throws Exception {
MetadataManagerHelper.initMetadata();
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java b/iotdb/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
index fe89953..88151b6 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
@@ -26,6 +26,8 @@ import org.apache.iotdb.db.auth.authorizer.IAuthorizer;
import org.apache.iotdb.db.auth.authorizer.LocalFileAuthorizer;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.conf.adapter.CompressionRatio;
+import org.apache.iotdb.db.conf.adapter.IoTDBConfigDynamicAdapter;
import org.apache.iotdb.db.conf.directories.DirectoryManager;
import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.engine.cache.DeviceMetaDataCache;
@@ -38,6 +40,7 @@ import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.control.FileReaderManager;
import org.apache.iotdb.db.query.control.QueryResourceManager;
import org.apache.iotdb.db.writelog.manager.MultiFileLogNodeManager;
+import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
import org.junit.Assert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,6 +63,12 @@ public class EnvironmentUtils {
public static long TEST_QUERY_JOB_ID = QueryResourceManager.getInstance().assignJobId();
public static QueryContext TEST_QUERY_CONTEXT = new QueryContext(TEST_QUERY_JOB_ID);
+ private static long oldTsFileThreshold = config.getTsFileSizeThreshold();
+
+ private static int oldMaxMemTableNumber = config.getMaxMemtableNumber();
+
+ private static int oldGroupSizeInByte = TSFileConfig.groupSizeInByte;
+
public static void cleanEnv() throws IOException, StorageEngineException {
QueryResourceManager.getInstance().endQueryForGivenJob(TEST_QUERY_JOB_ID);
@@ -84,6 +93,11 @@ public class EnvironmentUtils {
MManager.getInstance().clear();
// delete all directory
cleanAllDir();
+
+ config.setMaxMemtableNumber(oldMaxMemTableNumber);
+ config.setTsFileSizeThreshold(oldTsFileThreshold);
+ TSFileConfig.groupSizeInByte = oldGroupSizeInByte;
+ IoTDBConfigDynamicAdapter.getInstance().reset();
}
private static void cleanAllDir() throws IOException {
@@ -125,6 +139,9 @@ public class EnvironmentUtils {
* this function should be called before all code in the setup
*/
public static void envSetUp() throws StartupException, IOException {
+ MManager.getInstance().init();
+ IoTDBConfigDynamicAdapter.getInstance().setInitialized(true);
+
createAllDir();
// disable the system monitor
config.setEnableStatMonitor(false);