This is an automated email from the ASF dual-hosted git repository.
ivandasch pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 83c75d88cd3 IGNITE-19729 [ducktests] Add calcite support and ability
to run arbitrary control.sh subcommand, fix PID detection (#10857)
83c75d88cd3 is described below
commit 83c75d88cd356966e66876a234ff24bc671068dc
Author: Sergey Korotkov <[email protected]>
AuthorDate: Thu Jul 27 14:31:59 2023 +0700
IGNITE-19729 [ducktests] Add calcite support and ability to run arbitrary
control.sh subcommand, fix PID detection (#10857)
---
modules/ducktests/pom.xml | 5 +++++
.../ducktests/tests/ignitetest/services/utils/control_utility.py | 9 +++++++++
.../ignitetest/services/utils/ignite_configuration/__init__.py | 2 ++
modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py | 6 +++++-
modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py | 2 +-
.../services/utils/templates/ignite_configuration_macro.j2 | 6 ++++++
.../tests/ignitetest/services/utils/templates/misc_macro.j2 | 6 +++++-
7 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/modules/ducktests/pom.xml b/modules/ducktests/pom.xml
index 7855d62bf4a..e5756e74872 100644
--- a/modules/ducktests/pom.xml
+++ b/modules/ducktests/pom.xml
@@ -48,6 +48,11 @@
<artifactId>ignite-indexing</artifactId>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-calcite</artifactId>
+ </dependency>
+
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>ignite-control-utility</artifactId>
diff --git
a/modules/ducktests/tests/ignitetest/services/utils/control_utility.py
b/modules/ducktests/tests/ignitetest/services/utils/control_utility.py
index 7fd320d9488..1b1dd997cfd 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/control_utility.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/control_utility.py
@@ -260,6 +260,15 @@ class ControlUtility:
return "Enabled." in output
+ def run(self, cmd, node=None):
+ """
+ Run arbitrary control.sh subcommand.
+ :param cmd: Command line parameters for the control.sh.
+ :param node: Node to run the control.sh on.
+ :return: Output of the commands as a string.
+ """
+ return self.__run(cmd, node)
+
def __performance_statistics_cmd(self, sub_command):
return self.__run(f"--performance-statistics {sub_command}")
diff --git
a/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py
b/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py
index d9158d46726..6f83f603e04 100644
---
a/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py
+++
b/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py
@@ -30,6 +30,7 @@ from
ignitetest.services.utils.ignite_configuration.binary_configuration import
from ignitetest.services.utils.ignite_configuration.transaction import
TransactionConfiguration
from ignitetest.services.utils.ssl.ssl_params import SslParams,
is_ssl_enabled, get_ssl_params, IGNITE_CLIENT_ALIAS, \
IGNITE_SERVER_ALIAS
+from ignitetest.utils.bean import Bean
from ignitetest.utils.version import IgniteVersion, DEV_BRANCH
@@ -72,6 +73,7 @@ class IgniteConfiguration(NamedTuple):
sql_schemas: list = []
auto_activation_enabled: bool = None
transaction_configuration: TransactionConfiguration = None
+ sql_configuration: Bean = None
def prepare_ssl(self, test_globals, shared_root):
"""
diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py
b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py
index 4356304d775..84e0126b6d4 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py
@@ -24,6 +24,7 @@ import os
import subprocess
from abc import ABCMeta, abstractmethod
import re
+from copy import deepcopy
from itertools import chain
from ignitetest.services.utils import IgniteServiceType
@@ -209,7 +210,10 @@ class IgniteSpec(metaclass=ABCMeta):
"""
:return: modules set.
"""
- modules = self.service.modules or []
+ if self.service.modules:
+ modules = deepcopy(self.service.modules)
+ else:
+ modules = []
modules.append("log4j2")
modules.append("ducktests")
diff --git a/modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py
b/modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py
index 5aa5adafcd5..a1175712f4c 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py
@@ -115,6 +115,6 @@ class JvmProcessMixin:
:param java_class: Java class name
:return: List of service's pids.
"""
- cmd = "pgrep -ax java | awk '/%s/ {print $1}'" % java_class
+ cmd = "ps -C java -wwo pid,args | grep '%s' | awk -F' ' '{print $1}'"
% java_class
return [int(pid) for pid in node.account.ssh_capture(cmd,
allow_fail=True)]
diff --git
a/modules/ducktests/tests/ignitetest/services/utils/templates/ignite_configuration_macro.j2
b/modules/ducktests/tests/ignitetest/services/utils/templates/ignite_configuration_macro.j2
index d5f7b88012c..fd1cbef5b60 100644
---
a/modules/ducktests/tests/ignitetest/services/utils/templates/ignite_configuration_macro.j2
+++
b/modules/ducktests/tests/ignitetest/services/utils/templates/ignite_configuration_macro.j2
@@ -136,6 +136,12 @@
</property>
{% endif %}
+ {% if config.sql_configuration %}
+ <property name="sqlConfiguration">
+ {{ misc_utils.bean(config.sql_configuration) }}
+ </property>
+ {% endif %}
+
{{ misc_utils.plugins(config) }}
</bean>
{% endmacro %}
diff --git
a/modules/ducktests/tests/ignitetest/services/utils/templates/misc_macro.j2
b/modules/ducktests/tests/ignitetest/services/utils/templates/misc_macro.j2
index 4c78f90ca23..fb2577590ec 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/templates/misc_macro.j2
+++ b/modules/ducktests/tests/ignitetest/services/utils/templates/misc_macro.j2
@@ -65,7 +65,11 @@
<property name="{{ name | snake_to_camel }}">
<list>
{% for v in value %}
- <value>{{ v }}</value>
+ {% if v is string or v is number or v is
boolean %}
+ <value>{{ v }}</value>
+ {% else %}
+ {{ bean(v) }}
+ {% endif %}
{% endfor %}
</list>
</property>