This is an automated email from the ASF dual-hosted git repository. liyafan pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 1ce4f05cac88fec92d2fcbaaf4ad81d1ee1aa2f7 Author: ILuffZhe <[email protected]> AuthorDate: Fri Dec 24 23:17:14 2021 +0800 [CALCITE-4960] Enable unit tests in Elasticsearch Adapter 1. Increase SocketTimeout and ConnectionTimeout for RestClient to avoid CI failures. 2. Disable/Skip test cases with appropriate JIRA references. Close apache/calcite#2659 --- core/src/main/java/org/apache/calcite/util/Bug.java | 10 ++++++++++ .../apache/calcite/adapter/elasticsearch/AggregationTest.java | 5 +++-- .../apache/calcite/adapter/elasticsearch/BooleanLogicTest.java | 8 +++++--- .../adapter/elasticsearch/ElasticSearchAdapterTest.java | 9 +++++---- .../adapter/elasticsearch/EmbeddedElasticsearchPolicy.java | 6 +++++- .../org/apache/calcite/adapter/elasticsearch/MatchTest.java | 3 --- .../apache/calcite/adapter/elasticsearch/ProjectionTest.java | 2 -- .../apache/calcite/adapter/elasticsearch/ScrollingTest.java | 1 - 8 files changed, 28 insertions(+), 16 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/util/Bug.java b/core/src/main/java/org/apache/calcite/util/Bug.java index b9d44d8..b759341 100644 --- a/core/src/main/java/org/apache/calcite/util/Bug.java +++ b/core/src/main/java/org/apache/calcite/util/Bug.java @@ -200,6 +200,16 @@ public abstract class Bug { * Druid plans with small intervals should be chosen over full interval scan plus filter</a> is * fixed. */ public static final boolean CALCITE_4213_FIXED = false; + /** Whether + * <a href="https://issues.apache.org/jira/browse/CALCITE-4645">[CALCITE-4645] + * In Elasticsearch adapter, a range predicate should be translated to a range query</a> is + * fixed. */ + public static final boolean CALCITE_4645_FIXED = false; + /** Whether + * <a href="https://issues.apache.org/jira/browse/CALCITE-4965">[CALCITE-4965] + * IS NOT NULL failed in Elasticsearch Adapter</a> is + * fixed. */ + public static final boolean CALCITE_4965_FIXED = false; /** * Use this to flag temporary code. diff --git a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/AggregationTest.java b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/AggregationTest.java index 385ad26..fac8b7c 100644 --- a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/AggregationTest.java +++ b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/AggregationTest.java @@ -22,14 +22,15 @@ import org.apache.calcite.schema.impl.ViewTable; import org.apache.calcite.schema.impl.ViewTableMacro; import org.apache.calcite.test.CalciteAssert; import org.apache.calcite.test.ElasticsearchChecker; +import org.apache.calcite.util.Bug; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.common.collect.ImmutableMap; +import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.parallel.ResourceAccessMode; import org.junit.jupiter.api.parallel.ResourceLock; @@ -120,8 +121,8 @@ class AggregationTest { * So disable this test case until the translation from Search in range * to rang Query in ES is implemented. */ - @Disabled @Test void searchInRange() { + Assumptions.assumeTrue(Bug.CALCITE_4645_FIXED, "CALCITE-4645"); CalciteAssert.that() .with(newConnectionFactory()) .query("select count(*) from view where val1 >= 10 and val1 <=20") diff --git a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/BooleanLogicTest.java b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/BooleanLogicTest.java index 5cc9081..26a009c 100644 --- a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/BooleanLogicTest.java +++ b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/BooleanLogicTest.java @@ -21,12 +21,12 @@ import org.apache.calcite.schema.SchemaPlus; import org.apache.calcite.schema.impl.ViewTable; import org.apache.calcite.schema.impl.ViewTableMacro; import org.apache.calcite.test.CalciteAssert; +import org.apache.calcite.util.Bug; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.common.collect.ImmutableMap; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.parallel.ResourceAccessMode; import org.junit.jupiter.api.parallel.ResourceLock; @@ -42,7 +42,6 @@ import java.util.Map; /** * Test of different boolean expressions (some more complex than others). */ -@Disabled("RestClient often timeout in PR CI") @ResourceLock(value = "elasticsearch-scrolls", mode = ResourceAccessMode.READ) class BooleanLogicTest { @@ -120,7 +119,10 @@ class BooleanLogicTest { assertEmpty("select * from view where num > 42 and num < 42 and num = 42"); assertEmpty("select * from view where num > 42 or num < 42 and num = 42"); assertSingle("select * from view where num > 42 and num < 42 or num = 42"); - assertSingle("select * from view where num > 42 or num < 42 or num = 42"); + if (Bug.CALCITE_4965_FIXED) { + assertSingle("select * from view where num > 42 or num < 42 or num = 42"); + assertEmpty("select * from view where num is null"); + } assertSingle("select * from view where num >= 42 and num <= 42 and num = 42"); assertEmpty("select * from view where num >= 42 and num <= 42 and num <> 42"); assertEmpty("select * from view where num < 42"); diff --git a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ElasticSearchAdapterTest.java b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ElasticSearchAdapterTest.java index f42faf3..7a7a4a3 100644 --- a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ElasticSearchAdapterTest.java +++ b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ElasticSearchAdapterTest.java @@ -23,6 +23,7 @@ import org.apache.calcite.schema.impl.ViewTable; import org.apache.calcite.schema.impl.ViewTableMacro; import org.apache.calcite.test.CalciteAssert; import org.apache.calcite.test.ElasticsearchChecker; +import org.apache.calcite.util.Bug; import org.apache.calcite.util.TestUtil; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -30,8 +31,8 @@ import com.google.common.collect.ImmutableMap; import com.google.common.io.LineProcessor; import com.google.common.io.Resources; +import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.parallel.ResourceAccessMode; import org.junit.jupiter.api.parallel.ResourceLock; @@ -55,7 +56,6 @@ import java.util.function.Consumer; * Set of tests for ES adapter. Uses real instance via {@link EmbeddedElasticsearchPolicy}. Document * source is local {@code zips-mini.json} file (located in test classpath). */ -@Disabled("RestClient often timeout in PR CI") @ResourceLock(value = "elasticsearch-scrolls", mode = ResourceAccessMode.READ) class ElasticSearchAdapterTest { @@ -463,6 +463,7 @@ class ElasticSearchAdapterTest { } @Test void testFilterSortDesc() { + Assumptions.assumeTrue(Bug.CALCITE_4645_FIXED, "CALCITE-4645"); final String sql = "select * from zips\n" + "where pop BETWEEN 95000 AND 100000\n" + "order by state desc, pop"; @@ -476,8 +477,8 @@ class ElasticSearchAdapterTest { @Test void testInPlan() { final String[] searches = { - "query: {'constant_score':{filter:{bool:{should:" - + "[{term:{pop:96074}},{term:{pop:99568}}]}}}}", + "query: {'constant_score':{filter:{terms:{pop:" + + "[96074, 99568]}}}}", "script_fields: {longitude:{script:'params._source.loc[0]'}, " + "latitude:{script:'params._source.loc[1]'}, " + "city:{script: 'params._source.city'}, " diff --git a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/EmbeddedElasticsearchPolicy.java b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/EmbeddedElasticsearchPolicy.java index a3fa6f8..e89af6c 100644 --- a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/EmbeddedElasticsearchPolicy.java +++ b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/EmbeddedElasticsearchPolicy.java @@ -197,7 +197,11 @@ class EmbeddedElasticsearchPolicy { return client; } - final RestClient client = RestClient.builder(httpHost()).build(); + final RestClient client = RestClient.builder(httpHost()) + .setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder + .setConnectTimeout(60 * 1000) // default 1000 + .setSocketTimeout(3 * 60 * 1000)) // default 30000 + .build(); closer.add(client); this.client = client; return client; diff --git a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/MatchTest.java b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/MatchTest.java index fbf126a..a0c7b2a 100644 --- a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/MatchTest.java +++ b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/MatchTest.java @@ -45,7 +45,6 @@ import com.google.common.io.LineProcessor; import com.google.common.io.Resources; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.parallel.ResourceAccessMode; import org.junit.jupiter.api.parallel.ResourceLock; @@ -71,7 +70,6 @@ import static org.hamcrest.MatcherAssert.assertThat; /** * Testing Elasticsearch match query. */ -@Disabled("RestClient often timeout in PR CI") @ResourceLock(value = "elasticsearch-scrolls", mode = ResourceAccessMode.READ) class MatchTest { @@ -80,7 +78,6 @@ class MatchTest { /** Default index/type name. */ private static final String ZIPS = "match-zips"; - private static final int ZIPS_SIZE = 149; /** * Used to create {@code zips} index and insert zip data in bulk. diff --git a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ProjectionTest.java b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ProjectionTest.java index 7cc22b2..b5f66a1 100644 --- a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ProjectionTest.java +++ b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ProjectionTest.java @@ -26,7 +26,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.common.collect.ImmutableMap; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.parallel.ResourceAccessMode; import org.junit.jupiter.api.parallel.ResourceLock; @@ -42,7 +41,6 @@ import java.util.Map; /** * Checks renaming of fields (also upper, lower cases) during projections. */ -@Disabled("RestClient often timeout in PR CI") @ResourceLock(value = "elasticsearch-scrolls", mode = ResourceAccessMode.READ) class ProjectionTest { diff --git a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ScrollingTest.java b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ScrollingTest.java index 6afcb60..766ab8d 100644 --- a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ScrollingTest.java +++ b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/ScrollingTest.java @@ -46,7 +46,6 @@ import java.util.stream.IntStream; * Tests usage of scrolling API like correct results and resource cleanup * (delete scroll after scan). */ -@Disabled("RestClient often timeout in PR CI") @ResourceLock("elasticsearch-scrolls") class ScrollingTest {
