druid/integration-tests-ex/tools
Gian Merlino 0f6a895372
Rework ExprMacro base classes to simplify implementations. (#15622)
* Rework ExprMacro base classes to simplify implementations.

This patch removes BaseScalarUnivariateMacroFunctionExpr, adds
BaseMacroFunctionExpr at the top of the hierarchy (a suitable base class
for ExprMacros that take either arrays or scalars), and adds an
implementation for "visit" to BaseMacroFunctionExpr.

The effect on implementations is generally cleaner code:

- Exprs no longer need to implement "visit".
- Exprs no longer need to implement "stringify", even if they don't
  use all of their args at runtime, because BaseMacroFunctionExpr has
  access to even unused args.
- Exprs that accept arrays can extend BaseMacroFunctionExpr and
  inherit a bunch of useful methods. The only one they need to
  implement themselves that scalar exprs don't is "supplyAnalyzeInputs".

* Make StringDecodeBase64UTFExpression a static class.

* Remove unused import.

* Formatting, annotation changes.
2024-02-12 15:50:45 -08:00
..
src/main Rework ExprMacro base classes to simplify implementations. (#15622) 2024-02-12 15:50:45 -08:00
README.md Add the new integration test framework (#12368) 2022-08-24 17:03:23 +05:30
pom.xml Prepare main branch for next 30.0.0 release. (#15707) 2024-01-23 15:55:54 +05:30

README.md

Testing Tools

it-tools is a copy of extensions-core/testing-tools (module name druid-testing-tools.)

The testing tools are added to the Druid test Docker image. The druid-testing-tools module defines most such additions. However, integration-tests defines a custom node role which also must be added to the image. integration-tests uses a different mechanism to do that addition.

Here, we want a single extension for all the testing gizmos. This is a direct copy of the druid-testing-tools extension, along with a copy of the custom node role from integration-tests.

The reason this is a copy, rather than fixing up druid-testing-tools is that the existing integration-tests must continue to run and it is very difficult to change or test them. (Which is the reason for this parallel approach.) To keep backward compatibility, and to avoid changing integration-tests, we keep the prior approach and make copies here for the new approach.

The names should never clash: it-tools is only ever used within the docker-test project, and the druid-testing-tools is not included as a dependency.

Over time, once integration-tests are converted, then the druid-testing-tools module can be deprecated in favor of this one.