You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2020/05/25 08:08:22 UTC
[ignite] 07/24: ignite-ducktape: WIP.
This is an automated email from the ASF dual-hosted git repository.
nizhikov pushed a commit to branch ignite-ducktape
in repository https://gitbox.apache.org/repos/asf/ignite.git
commit d42ff0239c11c097991aace1a70fd22ff6e6829f
Author: Nikolay Izhikov <ni...@apache.org>
AuthorDate: Thu Apr 9 14:23:08 2020 +0300
ignite-ducktape: WIP.
---
tests/docker/Dockerfile | 7 +-
tests/docker/build/cluster.json | 6 +-
tests/docker/build/node_hosts | 28 ++---
tests/docker/ducker-ignite | 18 ++--
tests/docker/run_tests.sh | 6 +-
tests/ignitetest/__init__.py | 4 +-
.../rebalance/add_node_rebalance_test.py} | 34 ++++---
.../services/__init__.py} | 15 ---
.../services/ignite/__init__.py} | 16 +--
tests/ignitetest/services/ignite/ignite.py | 113 +++++++++++++++++++++
.../services/ignite/util.py} | 33 +++---
.../run_tests.sh => ignitetest/tests/__init__.py} | 16 ---
.../tests/ignite_test.py} | 31 +++---
tests/ignitetest/version.py | 106 ++++---------------
14 files changed, 229 insertions(+), 204 deletions(-)
diff --git a/tests/docker/Dockerfile b/tests/docker/Dockerfile
index d0135e4..eb53d8c 100644
--- a/tests/docker/Dockerfile
+++ b/tests/docker/Dockerfile
@@ -45,8 +45,11 @@ RUN echo 'PermitUserEnvironment yes' >> /etc/ssh/sshd_config
# Install binary test dependencies.
# we use the same versions as in vagrant/base.sh
ARG IGNITE_MIRROR="https://apache-mirror.rbc.ru/pub/apache/"
-ARG ARCHIVE_NAME="apache-ignite-2.8.0-bin.zip"
-RUN mkdir -p "/opt/ignite-2.8.0" && chmod a+rw /opt/ignite-2.8.0 && cd /opt && curl -s "$IGNITE_MIRROR/ignite/2.8.0/$ARCHIVE_NAME" > /opt/$ARCHIVE_NAME && unzip /opt/
+ARG RELEASE_NAME="apache-ignite-2.8.0-bin"
+RUN chmod a+wr /opt
+RUN curl -s "$IGNITE_MIRROR/ignite/2.8.0/$RELEASE_NAME.zip" > /opt/$RELEASE_NAME.zip
+RUN cd /opt && unzip $RELEASE_NAME.zip
+RUN chmod a+wr /opt/$RELEASE_NAME -R
# The version of Kibosh to use for testing.
# If you update this, also update vagrant/base.sh
diff --git a/tests/docker/build/cluster.json b/tests/docker/build/cluster.json
index 3597cac..e0de330 100644
--- a/tests/docker/build/cluster.json
+++ b/tests/docker/build/cluster.json
@@ -37,8 +37,10 @@
"port": 22,
"user": "ducker"
}
- },
- {
+ }
+ ]
+}
+
"externally_routable_ip": "ducker04",
"ssh_config": {
"host": "ducker04",
diff --git a/tests/docker/build/node_hosts b/tests/docker/build/node_hosts
index 73a0745..291afdf 100644
--- a/tests/docker/build/node_hosts
+++ b/tests/docker/build/node_hosts
@@ -1,14 +1,14 @@
-172.21.0.2 ducker01
-172.21.0.3 ducker02
-172.21.0.4 ducker03
-172.21.0.5 ducker04
-172.21.0.6 ducker05
-172.21.0.7 ducker06
-172.21.0.8 ducker07
-172.21.0.9 ducker08
-172.21.0.10 ducker09
-172.21.0.11 ducker10
-172.21.0.12 ducker11
-172.21.0.13 ducker12
-172.21.0.14 ducker13
-172.21.0.15 ducker14
+172.18.0.2 ducker01
+172.18.0.3 ducker02
+172.18.0.4 ducker03
+172.26.0.5 ducker04
+172.26.0.6 ducker05
+172.26.0.7 ducker06
+172.26.0.8 ducker07
+172.26.0.9 ducker08
+172.26.0.10 ducker09
+172.26.0.11 ducker10
+172.26.0.12 ducker11
+172.26.0.13 ducker12
+172.26.0.14 ducker13
+172.26.0.15 ducker14
diff --git a/tests/docker/ducker-ignite b/tests/docker/ducker-ignite
index 6ea13a0..2a90c04 100755
--- a/tests/docker/ducker-ignite
+++ b/tests/docker/ducker-ignite
@@ -45,7 +45,7 @@ default_num_nodes=14
default_jdk="openjdk:8"
# The default ducker-ignite image name.
-default_image_name="ducker-ak"
+default_image_name="ducker-ignite"
# Display a usage message on the terminal and exit.
#
@@ -53,7 +53,7 @@ default_image_name="ducker-ak"
usage() {
local exit_status="${1}"
cat <<EOF
-ducker-ak: a tool for running Apache Ignite tests inside Docker images.
+ducker-ignite: a tool for running Apache Ignite tests inside Docker images.
Usage: ${script_path} [command] [options]
@@ -78,7 +78,7 @@ up [-n|--num-nodes NUM_NODES] [-f|--force] [docker-image]
test [test-name(s)]
Run a test or set of tests inside the currently active Ducker nodes.
For example, to run the system test produce_bench_test, you would run:
- ./tests/docker/ducker-ak test ./tests/ignitetest/test/core/rebalance_test.py
+ ./tests/docker/ducker-ignite test ./tests/ignitetest/test/core/rebalance_test.py
ssh [node-name|user-name@node-name] [command]
Log in to a running ducker container. If node-name is not given, it prints
@@ -89,12 +89,12 @@ ssh [node-name|user-name@node-name] [command]
shell.
down [-q|--quiet] [-f|--force]
- Tear down all the currently active ducker-ak nodes. If --quiet is specified,
+ Tear down all the currently active ducker-ignite nodes. If --quiet is specified,
only error messages are printed. If --force or -f is specified, "docker rm -f"
- will be used to remove the nodes, which kills currently running ducker-ak test.
+ will be used to remove the nodes, which kills currently running ducker-ignite test.
purge [--f|--force]
- Purge Docker images created by ducker-ak. This will free disk space.
+ Purge Docker images created by ducker-ignite. This will free disk space.
If --force is set, we run 'docker rmi -f'.
EOF
exit "${exit_status}"
@@ -429,14 +429,14 @@ ducker_test() {
for arg in "${@}"; do
local regex=".*\/ignitetest\/(.*)"
if [[ $arg =~ $regex ]]; then
- local kpath=${BASH_REMATCH[1]}
- args="${args} ./tests/ignitetest/${kpath}"
+ local ignpath=${BASH_REMATCH[1]}
+ args="${args} ./tests/ignitetest/${ignpath}"
else
args="${args} ${arg}"
fi
done
must_pushd "${ignite_dir}"
- (test -f ./gradlew || gradle) && ./gradlew systemTestLibs
+ #(test mvn) && mvn package -DskipTests -Dmaven.javadoc.skip=true -Plgpl,-examples,-clean-libs,-release,-scala,-clientDocs
must_popd
cmd="cd /opt/ignite-dev && ducktape --cluster-file /opt/ignite-dev/tests/docker/build/cluster.json $args"
echo "docker exec ducker01 bash -c \"${cmd}\""
diff --git a/tests/docker/run_tests.sh b/tests/docker/run_tests.sh
index 09c6797..96064bf 100755
--- a/tests/docker/run_tests.sh
+++ b/tests/docker/run_tests.sh
@@ -16,7 +16,7 @@
# limitations under the License.
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-IGNITE_NUM_CONTAINERS=${IGNITE_NUM_CONTAINERS:-14}
+IGNITE_NUM_CONTAINERS=${IGNITE_NUM_CONTAINERS:-3}
TC_PATHS=${TC_PATHS:-./ignitetest/}
die() {
@@ -25,6 +25,6 @@ die() {
}
if ${SCRIPT_DIR}/ducker-ignite ssh | grep -q '(none)'; then
- ${SCRIPT_DIR}/ducker-ignite up -n "${IGNITE_NUM_CONTAINERS}" || die "ducker-ak up failed"
+ ${SCRIPT_DIR}/ducker-ignite up -n "${IGNITE_NUM_CONTAINERS}" || die "ducker-ignite up failed"
fi
-${SCRIPT_DIR}/ducker-ignite test ${TC_PATHS} ${_DUCKTAPE_OPTIONS} || die "ducker-ak test failed"
+${SCRIPT_DIR}/ducker-ignite test ${TC_PATHS} ${_DUCKTAPE_OPTIONS} || die "ducker-ignite test failed"
diff --git a/tests/ignitetest/__init__.py b/tests/ignitetest/__init__.py
index c5862fe..a4b3d8c 100644
--- a/tests/ignitetest/__init__.py
+++ b/tests/ignitetest/__init__.py
@@ -13,9 +13,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# This determines the version of kafkatest that can be published to PyPi and installed with pip
+# This determines the version of ignitetest that can be published to PyPi and installed with pip
#
-# Note that in development, this version name can't follow Kafka's convention of having a trailing "-SNAPSHOT"
+# Note that in development, this version name can't follow Ignite's convention of having a trailing "-SNAPSHOT"
# due to python version naming restrictions, which are enforced by python packaging tools
# (see https://www.python.org/dev/peps/pep-0440/)
#
diff --git a/tests/docker/run_tests.sh b/tests/ignitetest/rebalance/add_node_rebalance_test.py
old mode 100755
new mode 100644
similarity index 53%
copy from tests/docker/run_tests.sh
copy to tests/ignitetest/rebalance/add_node_rebalance_test.py
index 09c6797..501bf42
--- a/tests/docker/run_tests.sh
+++ b/tests/ignitetest/rebalance/add_node_rebalance_test.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env 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.
@@ -15,16 +13,26 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-IGNITE_NUM_CONTAINERS=${IGNITE_NUM_CONTAINERS:-14}
-TC_PATHS=${TC_PATHS:-./ignitetest/}
+from ignitetest.tests.ignite_test import IgniteTest
+
+
+class AddNodeRebalanceTest(IgniteTest):
+ """
+ Test performs rebalance tests.
+ """
+ def __init__(self, test_context):
+ super(IgniteTest, self).__init__(test_context)
-die() {
- echo $@
- exit 1
-}
+ def teardown(self):
+ self.ignite.stop()
-if ${SCRIPT_DIR}/ducker-ignite ssh | grep -q '(none)'; then
- ${SCRIPT_DIR}/ducker-ignite up -n "${IGNITE_NUM_CONTAINERS}" || die "ducker-ak up failed"
-fi
-${SCRIPT_DIR}/ducker-ignite test ${TC_PATHS} ${_DUCKTAPE_OPTIONS} || die "ducker-ak test failed"
+ def test_add_node(self):
+ """
+ Test performs add node rebalance test which consists of following steps:
+ * Start cluster.
+ * Put data to it via CacheDataProducer.
+ * Start one more node.
+ * Await for rebalance to finish.
+ """
+ for node in self.ignite.nodes:
+ node.account.ssh("touch /opt/hello-from-test.txt")
diff --git a/tests/docker/run_tests.sh b/tests/ignitetest/services/__init__.py
old mode 100755
new mode 100644
similarity index 62%
copy from tests/docker/run_tests.sh
copy to tests/ignitetest/services/__init__.py
index 09c6797..e556dc9
--- a/tests/docker/run_tests.sh
+++ b/tests/ignitetest/services/__init__.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env 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.
@@ -15,16 +13,3 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-IGNITE_NUM_CONTAINERS=${IGNITE_NUM_CONTAINERS:-14}
-TC_PATHS=${TC_PATHS:-./ignitetest/}
-
-die() {
- echo $@
- exit 1
-}
-
-if ${SCRIPT_DIR}/ducker-ignite ssh | grep -q '(none)'; then
- ${SCRIPT_DIR}/ducker-ignite up -n "${IGNITE_NUM_CONTAINERS}" || die "ducker-ak up failed"
-fi
-${SCRIPT_DIR}/ducker-ignite test ${TC_PATHS} ${_DUCKTAPE_OPTIONS} || die "ducker-ak test failed"
diff --git a/tests/docker/run_tests.sh b/tests/ignitetest/services/ignite/__init__.py
old mode 100755
new mode 100644
similarity index 62%
copy from tests/docker/run_tests.sh
copy to tests/ignitetest/services/ignite/__init__.py
index 09c6797..6377f9e
--- a/tests/docker/run_tests.sh
+++ b/tests/ignitetest/services/ignite/__init__.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env 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.
@@ -15,16 +13,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-IGNITE_NUM_CONTAINERS=${IGNITE_NUM_CONTAINERS:-14}
-TC_PATHS=${TC_PATHS:-./ignitetest/}
-
-die() {
- echo $@
- exit 1
-}
-
-if ${SCRIPT_DIR}/ducker-ignite ssh | grep -q '(none)'; then
- ${SCRIPT_DIR}/ducker-ignite up -n "${IGNITE_NUM_CONTAINERS}" || die "ducker-ak up failed"
-fi
-${SCRIPT_DIR}/ducker-ignite test ${TC_PATHS} ${_DUCKTAPE_OPTIONS} || die "ducker-ak test failed"
+from ignite import IgniteService
\ No newline at end of file
diff --git a/tests/ignitetest/services/ignite/ignite.py b/tests/ignitetest/services/ignite/ignite.py
new file mode 100644
index 0000000..7db90ec
--- /dev/null
+++ b/tests/ignitetest/services/ignite/ignite.py
@@ -0,0 +1,113 @@
+# 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.
+
+import os.path
+import signal
+
+from ducktape.services.service import Service
+from ducktape.utils.util import wait_until
+from ducktape.cluster.remoteaccount import RemoteCommandError
+
+from ignitetest.version import DEV_VERSION
+
+
+class IgniteService(Service):
+ PERSISTENT_ROOT = "/mnt/ignite"
+ CONFIG_FILE = os.path.join(PERSISTENT_ROOT, "ignite-config.xml")
+ HEAP_DUMP_FILE = os.path.join(PERSISTENT_ROOT, "ignite-heap.bin")
+ STDOUT_STDERR_CAPTURE = os.path.join(PERSISTENT_ROOT, "console.log")
+
+ def __init__(self,
+ context,
+ num_nodes,
+ version=DEV_VERSION):
+ """
+ :param context: test context
+ :param num_nodes: number of Ignite nodes.
+ """
+ Service.__init__(self, context, num_nodes)
+
+ self.log_level = "DEBUG"
+
+ for node in self.nodes:
+ node.version = version
+
+ def set_version(self, version):
+ for node in self.nodes:
+ node.version = version
+
+ def alive(self, node):
+ return len(self.pids(node)) > 0
+
+ def start(self):
+ Service.start(self)
+
+ self.logger.info("Waiting for Ignite to start...")
+
+ def start_cmd(self, node):
+ cmd = "%s %s 1>> %s 2>> %s &" % \
+ (self.path.script("ignite.sh", node),
+ IgniteService.CONFIG_FILE,
+ IgniteService.STDOUT_STDERR_CAPTURE,
+ IgniteService.STDOUT_STDERR_CAPTURE)
+ return cmd
+
+ def start_node(self, node, timeout_sec=60):
+ node.account.mkdirs(IgniteService.PERSISTENT_ROOT)
+
+ cmd = self.start_cmd(node)
+ self.logger.debug("Attempting to start IgniteService on %s with command: %s" % (str(node.account), cmd))
+ with node.account.monitor_log(IgniteService.STDOUT_STDERR_CAPTURE) as monitor:
+ node.account.ssh(cmd)
+ monitor.wait_until("Ignite\s*Server.*started", timeout_sec=timeout_sec, backoff_sec=.25,
+ err_msg="Ignite server didn't finish startup in %d seconds" % timeout_sec)
+
+ if len(self.pids(node)) == 0:
+ raise Exception("No process ids recorded on node %s" % node.account.hostname)
+
+ def pids(self, node):
+ """Return process ids associated with running processes on the given node."""
+ try:
+ cmd = "jcmd | grep -e %s | awk '{print $1}'" % self.java_class_name()
+ pid_arr = [pid for pid in node.account.ssh_capture(cmd, allow_fail=True, callback=int)]
+ return pid_arr
+ except (RemoteCommandError, ValueError) as e:
+ return []
+
+ def stop_node(self, node, clean_shutdown=True, timeout_sec=60):
+ pids = self.pids(node)
+ sig = signal.SIGTERM if clean_shutdown else signal.SIGKILL
+
+ for pid in pids:
+ node.account.signal(pid, sig, allow_fail=False)
+
+ try:
+ wait_until(lambda: len(self.pids(node)) == 0, timeout_sec=timeout_sec,
+ err_msg="Ignite node failed to stop in %d seconds" % timeout_sec)
+ except Exception:
+ self.thread_dump(node)
+ raise
+
+ def thread_dump(self, node):
+ for pid in self.pids(node):
+ try:
+ node.account.signal(pid, signal.SIGQUIT, allow_fail=True)
+ except:
+ self.logger.warn("Could not dump threads on node")
+
+ def clean_node(self, node):
+ node.account.kill_java_processes(self.java_class_name(),
+ clean_shutdown=False, allow_fail=True)
+ node.account.ssh("sudo rm -rf -- %s" % IgniteService.PERSISTENT_ROOT, allow_fail=False)
diff --git a/tests/docker/run_tests.sh b/tests/ignitetest/services/ignite/util.py
old mode 100755
new mode 100644
similarity index 53%
copy from tests/docker/run_tests.sh
copy to tests/ignitetest/services/ignite/util.py
index 09c6797..bbd63e7
--- a/tests/docker/run_tests.sh
+++ b/tests/ignitetest/services/ignite/util.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env 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.
@@ -15,16 +13,25 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-IGNITE_NUM_CONTAINERS=${IGNITE_NUM_CONTAINERS:-14}
-TC_PATHS=${TC_PATHS:-./ignitetest/}
+import os.path
+
+from collections import namedtuple
-die() {
- echo $@
- exit 1
-}
+def java_version(node):
+ # Determine java version on the node
+ version = -1
+ for line in node.account.ssh_capture("java -version"):
+ if line.find("version") != -1:
+ version = parse_version_str(line)
+ return version
-if ${SCRIPT_DIR}/ducker-ignite ssh | grep -q '(none)'; then
- ${SCRIPT_DIR}/ducker-ignite up -n "${IGNITE_NUM_CONTAINERS}" || die "ducker-ak up failed"
-fi
-${SCRIPT_DIR}/ducker-ignite test ${TC_PATHS} ${_DUCKTAPE_OPTIONS} || die "ducker-ak test failed"
+def parse_version_str(line):
+ # Parse java version string. Examples:
+ #`openjdk version "11.0.5" 2019-10-15` will return 11.
+ #`java version "1.5.0"` will return 5.
+ line = line[line.find('version \"') + 9:]
+ dot_pos = line.find(".")
+ if line[:dot_pos] == "1":
+ return int(line[dot_pos+1:line.find(".", dot_pos+1)])
+ else:
+ return int(line[:dot_pos])
diff --git a/tests/docker/run_tests.sh b/tests/ignitetest/tests/__init__.py
old mode 100755
new mode 100644
similarity index 62%
copy from tests/docker/run_tests.sh
copy to tests/ignitetest/tests/__init__.py
index 09c6797..ec20143
--- a/tests/docker/run_tests.sh
+++ b/tests/ignitetest/tests/__init__.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env 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.
@@ -14,17 +12,3 @@
# 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.
-
-SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-IGNITE_NUM_CONTAINERS=${IGNITE_NUM_CONTAINERS:-14}
-TC_PATHS=${TC_PATHS:-./ignitetest/}
-
-die() {
- echo $@
- exit 1
-}
-
-if ${SCRIPT_DIR}/ducker-ignite ssh | grep -q '(none)'; then
- ${SCRIPT_DIR}/ducker-ignite up -n "${IGNITE_NUM_CONTAINERS}" || die "ducker-ak up failed"
-fi
-${SCRIPT_DIR}/ducker-ignite test ${TC_PATHS} ${_DUCKTAPE_OPTIONS} || die "ducker-ak test failed"
diff --git a/tests/docker/run_tests.sh b/tests/ignitetest/tests/ignite_test.py
old mode 100755
new mode 100644
similarity index 54%
copy from tests/docker/run_tests.sh
copy to tests/ignitetest/tests/ignite_test.py
index 09c6797..c30a8fd
--- a/tests/docker/run_tests.sh
+++ b/tests/ignitetest/tests/ignite_test.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env 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.
@@ -15,16 +13,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-IGNITE_NUM_CONTAINERS=${IGNITE_NUM_CONTAINERS:-14}
-TC_PATHS=${TC_PATHS:-./ignitetest/}
+from ducktape.tests.test import Test
+
+
+from ignitetest.services.ignite import IgniteService
+
+
+class IgniteTest(Test):
+ """
+ Helper class that manages setting up a Ignite cluster. Use this if the
+ default settings for Ignite are sufficient for your test; any customization
+ needs to be done manually. Your run() method should call tearDown and
+ setUp. The Ignite service are available as the fields IgniteTest.ignite.
+ """
+ def __init__(self, test_context):
+ super(IgniteTest, self).__init__(test_context)
-die() {
- echo $@
- exit 1
-}
+ self.ignite = IgniteService(test_context, self.num_brokers)
-if ${SCRIPT_DIR}/ducker-ignite ssh | grep -q '(none)'; then
- ${SCRIPT_DIR}/ducker-ignite up -n "${IGNITE_NUM_CONTAINERS}" || die "ducker-ak up failed"
-fi
-${SCRIPT_DIR}/ducker-ignite test ${TC_PATHS} ${_DUCKTAPE_OPTIONS} || die "ducker-ak test failed"
+ def setUp(self):
+ self.ignite.start()
\ No newline at end of file
diff --git a/tests/ignitetest/version.py b/tests/ignitetest/version.py
index 9509909..31ad73d 100644
--- a/tests/ignitetest/version.py
+++ b/tests/ignitetest/version.py
@@ -15,24 +15,25 @@
from distutils.version import LooseVersion
-from ignitetest.utils import ignitetest_version
+from ignitetest import __version__
-class KafkaVersion(LooseVersion):
- """Container for kafka versions which makes versions simple to compare.
+class IgniteVersion(LooseVersion):
+ """
+ Container for Ignite versions which makes versions simple to compare.
distutils.version.LooseVersion (and StrictVersion) has robust comparison and ordering logic.
Example:
- v10 = KafkaVersion("0.10.0")
- v9 = KafkaVersion("0.9.0.1")
- assert v10 > v9 # assertion passes!
+ v27 = IgniteVersion("2.7.0")
+ v28 = IgniteVersion("2.8.1")
+ assert v28 > v27 # assertion passes!
"""
def __init__(self, version_string):
self.is_dev = (version_string.lower() == "dev")
if self.is_dev:
- version_string = kafkatest_version()
+ version_string = __version__
# Drop dev suffix if present
dev_suffix_index = version_string.find(".dev")
@@ -49,14 +50,10 @@ class KafkaVersion(LooseVersion):
else:
return LooseVersion.__str__(self)
- def supports_named_listeners(self):
- return self >= V_0_10_2_0
-
- def topic_command_supports_bootstrap_server(self):
- return self >= V_2_3_0
def get_version(node=None):
- """Return the version attached to the given node.
+ """
+ Return the version attached to the given node.
Default to DEV_BRANCH if node or node.version is undefined (aka None)
"""
if node is not None and hasattr(node, "version") and node.version is not None:
@@ -64,77 +61,12 @@ def get_version(node=None):
else:
return DEV_BRANCH
-DEV_BRANCH = KafkaVersion("dev")
-DEV_VERSION = KafkaVersion("2.6.0-SNAPSHOT")
-
-# 0.8.2.x versions
-V_0_8_2_1 = KafkaVersion("0.8.2.1")
-V_0_8_2_2 = KafkaVersion("0.8.2.2")
-LATEST_0_8_2 = V_0_8_2_2
-
-# 0.9.0.x versions
-V_0_9_0_0 = KafkaVersion("0.9.0.0")
-V_0_9_0_1 = KafkaVersion("0.9.0.1")
-LATEST_0_9 = V_0_9_0_1
-
-# 0.10.0.x versions
-V_0_10_0_0 = KafkaVersion("0.10.0.0")
-V_0_10_0_1 = KafkaVersion("0.10.0.1")
-LATEST_0_10_0 = V_0_10_0_1
-
-# 0.10.1.x versions
-V_0_10_1_0 = KafkaVersion("0.10.1.0")
-V_0_10_1_1 = KafkaVersion("0.10.1.1")
-LATEST_0_10_1 = V_0_10_1_1
-
-# 0.10.2.x versions
-V_0_10_2_0 = KafkaVersion("0.10.2.0")
-V_0_10_2_1 = KafkaVersion("0.10.2.1")
-V_0_10_2_2 = KafkaVersion("0.10.2.2")
-LATEST_0_10_2 = V_0_10_2_2
-
-LATEST_0_10 = LATEST_0_10_2
-
-# 0.11.0.x versions
-V_0_11_0_0 = KafkaVersion("0.11.0.0")
-V_0_11_0_1 = KafkaVersion("0.11.0.1")
-V_0_11_0_2 = KafkaVersion("0.11.0.2")
-V_0_11_0_3 = KafkaVersion("0.11.0.3")
-LATEST_0_11_0 = V_0_11_0_3
-LATEST_0_11 = LATEST_0_11_0
-
-# 1.0.x versions
-V_1_0_0 = KafkaVersion("1.0.0")
-V_1_0_1 = KafkaVersion("1.0.1")
-V_1_0_2 = KafkaVersion("1.0.2")
-LATEST_1_0 = V_1_0_2
-
-# 1.1.x versions
-V_1_1_0 = KafkaVersion("1.1.0")
-V_1_1_1 = KafkaVersion("1.1.1")
-LATEST_1_1 = V_1_1_1
-
-# 2.0.x versions
-V_2_0_0 = KafkaVersion("2.0.0")
-V_2_0_1 = KafkaVersion("2.0.1")
-LATEST_2_0 = V_2_0_1
-
-# 2.1.x versions
-V_2_1_0 = KafkaVersion("2.1.0")
-V_2_1_1 = KafkaVersion("2.1.1")
-LATEST_2_1 = V_2_1_1
-
-# 2.2.x versions
-V_2_2_0 = KafkaVersion("2.2.0")
-V_2_2_1 = KafkaVersion("2.2.1")
-V_2_2_2 = KafkaVersion("2.2.2")
-LATEST_2_2 = V_2_2_2
-
-# 2.3.x versions
-V_2_3_0 = KafkaVersion("2.3.0")
-V_2_3_1 = KafkaVersion("2.3.1")
-LATEST_2_3 = V_2_3_1
-
-# 2.4.x versions
-V_2_4_0 = KafkaVersion("2.4.0")
-LATEST_2_4 = V_2_4_0
+
+DEV_BRANCH = IgniteVersion("dev")
+DEV_VERSION = IgniteVersion("2.9.0-SNAPSHOT")
+
+# 2.7.x versions
+V_2_7_6 = IgniteVersion("2.7.6")
+
+# 2.8.0 versions
+V_2_8_0 = IgniteVersion("2.8.0")