Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
/*
* 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.tools.it;

import org.apache.iotdb.cli.it.AbstractScript;
import org.apache.iotdb.isession.ISession;
import org.apache.iotdb.it.env.EnvFactory;
import org.apache.iotdb.it.framework.IoTDBTestRunner;
import org.apache.iotdb.itbase.category.ClusterIT;
import org.apache.iotdb.itbase.category.LocalStandaloneIT;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;

import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.file.metadata.enums.CompressionType;
import org.apache.tsfile.file.metadata.enums.TSEncoding;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;

import java.io.File;
import java.io.IOException;

@RunWith(IoTDBTestRunner.class)
@Category({LocalStandaloneIT.class, ClusterIT.class})
public class ExportSchemaTestIT extends AbstractScript {
private static String ip;

private static String port;

private static String toolsPath;

private static String libPath;

private static String homePath;

@BeforeClass
public static void setUp() throws Exception {
EnvFactory.getEnv().initClusterEnvironment();
ip = EnvFactory.getEnv().getIP();
port = EnvFactory.getEnv().getPort();
toolsPath = EnvFactory.getEnv().getToolsPath();
libPath = EnvFactory.getEnv().getLibPath();
homePath =
libPath.substring(0, libPath.lastIndexOf(File.separator + "lib" + File.separator + "*"));
}

@AfterClass
public static void tearDown() throws Exception {
EnvFactory.getEnv().cleanClusterEnvironment();
}

@Test
public void test() throws IOException {
String os = System.getProperty("os.name").toLowerCase();
if (os.startsWith("windows")) {
testOnWindows();
} else {
testOnUnix();
}
}

@Override
protected void testOnWindows() throws IOException {
prepareSchema();
final String[] output = {"Export completely!"};
ProcessBuilder builder =
new ProcessBuilder(
"cmd.exe",
"/c",
toolsPath + File.separator + "export-schema.bat",
"-h",
ip,
"-p",
port,
"-u",
"root",
"-pw",
"root",
"-t",
"target",
"-path",
"root.**",
"&",
"exit",
"%^errorlevel%");
builder.environment().put("IOTDB_HOME", homePath);
testOutput(builder, output, 0);
}

@Override
protected void testOnUnix() throws IOException {
prepareSchema();
final String[] output = {"Export completely!"};
ProcessBuilder builder =
new ProcessBuilder(
"bash",
toolsPath + File.separator + "export-schema.sh",
"-h",
ip,
"-p",
port,
"-u",
"root",
"-pw",
"root",
"-t",
"target",
"-path",
"root.**");
builder.environment().put("IOTDB_HOME", homePath);
testOutput(builder, output, 0);
}

public void prepareSchema() {
try (ISession session = EnvFactory.getEnv().getSessionConnection()) {
session.open();
session.createTimeseries(
"root.schema.t2.c1",
TSDataType.DOUBLE,
TSEncoding.GORILLA,
CompressionType.LZ4,
null,
null,
null,
null);
} catch (IoTDBConnectionException | StatementExecutionException e) {
throw new RuntimeException(e);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
/*
* 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.tools.it;

import org.apache.iotdb.cli.it.AbstractScript;
import org.apache.iotdb.it.env.EnvFactory;
import org.apache.iotdb.it.framework.IoTDBTestRunner;
import org.apache.iotdb.itbase.category.ClusterIT;
import org.apache.iotdb.itbase.category.LocalStandaloneIT;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;

import java.io.File;
import java.io.IOException;

@RunWith(IoTDBTestRunner.class)
@Category({LocalStandaloneIT.class, ClusterIT.class})
public class ImportSchemaTestIT extends AbstractScript {

private static String ip;

private static String port;

private static String toolsPath;

private static String libPath;

private static String homePath;

@BeforeClass
public static void setUp() {
EnvFactory.getEnv().initClusterEnvironment();
ip = EnvFactory.getEnv().getIP();
port = EnvFactory.getEnv().getPort();
toolsPath = EnvFactory.getEnv().getToolsPath();
libPath = EnvFactory.getEnv().getLibPath();
homePath =
libPath.substring(0, libPath.lastIndexOf(File.separator + "lib" + File.separator + "*"));
}

@AfterClass
public static void tearDown() {
EnvFactory.getEnv().cleanClusterEnvironment();
}

@Test
public void test() throws IOException {
String os = System.getProperty("os.name").toLowerCase();
if (os.startsWith("windows")) {
testOnWindows();
} else {
testOnUnix();
}
}

@Override
protected void testOnWindows() throws IOException {
final String[] output = {
"The file name must end with \"csv\"!",
};
ProcessBuilder builder =
new ProcessBuilder(
"cmd.exe",
"/c",
toolsPath + File.separator + "import-schema.bat",
"-h",
ip,
"-p",
port,
"-u",
"root",
"-pw",
"root",
"-s",
"./",
"&",
"exit",
"%^errorlevel%");
builder.environment().put("IOTDB_HOME", homePath);
testOutput(builder, output, 0);
}

@Override
protected void testOnUnix() throws IOException {
final String[] output = {
"The file name must end with \"csv\"!",
};
ProcessBuilder builder =
new ProcessBuilder(
"bash",
toolsPath + File.separator + "import-schema.sh",
"-h",
ip,
"-p",
port,
"-u",
"root",
"-pw",
"root",
"-s",
"./");
builder.environment().put("IOTDB_HOME", homePath);
testOutput(builder, output, 0);
}
}
62 changes: 62 additions & 0 deletions iotdb-client/cli/src/assembly/resources/tools/export-schema.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
@REM
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM

@echo off

title IoTDB Export

echo ````````````````````````````````````````````````
echo Starting IoTDB Client Export Schema Script
echo ````````````````````````````````````````````````

if "%OS%" == "Windows_NT" setlocal

pushd %~dp0..
if NOT DEFINED IOTDB_HOME set IOTDB_HOME=%CD%
popd

if NOT DEFINED MAIN_CLASS set MAIN_CLASS=org.apache.iotdb.tool.ExportSchema
if NOT DEFINED JAVA_HOME goto :err

@REM -----------------------------------------------------------------------------
@REM JVM Opts we'll use in legacy run or installation
set JAVA_OPTS=-ea^
-DIOTDB_HOME="%IOTDB_HOME%"

@REM ***** CLASSPATH library setting *****
if EXIST "%IOTDB_HOME%\lib" (set CLASSPATH="%IOTDB_HOME%\lib\*") else set CLASSPATH="%IOTDB_HOME%\..\lib\*"

REM -----------------------------------------------------------------------------

"%JAVA_HOME%\bin\java" -DIOTDB_HOME="%IOTDB_HOME%" %JAVA_OPTS% -cp %CLASSPATH% %MAIN_CLASS% %*
set ret_code=%ERRORLEVEL%
goto finally


:err
echo JAVA_HOME environment variable must be set!
set ret_code=1
pause

@REM -----------------------------------------------------------------------------
:finally

ENDLOCAL

EXIT /B %ret_code%
57 changes: 57 additions & 0 deletions iotdb-client/cli/src/assembly/resources/tools/export-schema.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/bin/bash
#
# 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.
#

echo ------------------------------------------
echo Starting IoTDB Client Export Schema Script
echo ------------------------------------------

if [ -z "${IOTDB_INCLUDE}" ]; then
#do nothing
:
elif [ -r "$IOTDB_INCLUDE" ]; then
. "$IOTDB_INCLUDE"
fi

if [ -z "${IOTDB_HOME}" ]; then
export IOTDB_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi

if [ -n "$JAVA_HOME" ]; then
for java in "$JAVA_HOME"/bin/amd64/java "$JAVA_HOME"/bin/java; do
if [ -x "$java" ]; then
JAVA="$java"
break
fi
done
else
JAVA=java
fi

if [ -z $JAVA ] ; then
echo Unable to find java executable. Check JAVA_HOME and PATH environment variables. > /dev/stderr
exit 1;
fi

CLASSPATH=${IOTDB_HOME}/lib/*

MAIN_CLASS=org.apache.iotdb.tool.ExportSchema

"$JAVA" -DIOTDB_HOME=${IOTDB_HOME} -cp "$CLASSPATH" "$MAIN_CLASS" "$@"
exit $?
Loading