Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

logictest: swap directives with default config when possible #52680

Merged
merged 1 commit into from
Aug 13, 2020
Merged

logictest: swap directives with default config when possible #52680

merged 1 commit into from
Aug 13, 2020

Conversation

asubiotto
Copy link
Contributor

A while back, we added the ability to run logic tests without a directive,
which would run all default configs.

Some tests still specified explicit configs even though they could run without
a problem with all default configs. Even though it takes more time, running
with all default configs is preferable, since developers rely on the widespread
usage of the default config for good test coverage of new features.

Additionally, all files affected can also be run in a multitenant configuration
using 3node-tenant. So that TestTenantLogic may run these files, this commit
adds a blocklist directive with an issue number where appropriate for any tests
that fail in 3node-tenant that previously had explicit directives.

Release note: None (testing change)

Addresses #52410

@cockroach-teamcity
Copy link
Member

This change is Reviewable

@asubiotto
Copy link
Contributor Author

Hmm, we probably do not want to do this for the 5node-configs. @yuzefovich what's your opinion?

Copy link
Member

@yuzefovich yuzefovich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm worried that we'll be hitting 30 minutes timeout more often with this change. In particular, fk file is huge, so I think it deserves special consideration about which configs to use when running it (all others are quite small, so all default configs should be ok in there).

I think if the file has explicit logic to split and relocate ranges assuming 5 node clusters, then those should not be updated.

Reviewed 35 of 35 files at r1.
Reviewable status: :shipit: complete! 0 of 0 LGTMs obtained (waiting on @asubiotto and @nvanbenschoten)


pkg/sql/logictest/testdata/logic_test/edge, line 2 at r1 (raw file):

# LogicTest: local-vec-off fakedist-vec-off
# TODO(yuzefovich): run with all default configs once #40354 is resolved.

Is this no longer an issue? I wonder what's changed because the issue is still present, I think.


pkg/sql/logictest/testdata/logic_test/window, line 1 at r1 (raw file):

# LogicTest: default-configs 5node-default-configs

By deleting this line we will no longer run this test on 5node configs. However, this file doesn't split and relocate ranges, so probably it's ok.

Copy link
Contributor Author

@asubiotto asubiotto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm worried that we'll be hitting 30 minutes timeout more often with this change. In particular, fk file is huge, so I think it deserves special consideration about which configs to use when running it (all others are quite small, so all default configs should be ok in there).

I'm not worried. I prefer running more tests with the default config than trying to stay under a timeout. If the runtime of the logic tests is a problem then I think that should be dealt with separately. The reasons I'm not worried about it is:

  1. We removed 3node-tenant from the default config, removing one run from all files run with the default config so we have breathing space.
  2. Pretty soon we'll be reducing the number of default configs (at least the auto and auto-disk configs).
  3. If test runtime does become a problem and we want to solve it by running fewer tests, I prefer a policy of exclusion (i.e. blocking configs we don't see much use in running) to get automatic coverage of additions to the default configs.

I'll take a look at the TestLogic runtime on a green run of this PR.

I think if the file has explicit logic to split and relocate ranges assuming 5 node clusters, then those should not be updated.

I ran all these files with the new configurations and automatically updated the configs if it ran successfully. I think that these kinds of tests would fail with a non-5node config, so shouldn't be updated.

Reviewable status: :shipit: complete! 0 of 0 LGTMs obtained (waiting on @nvanbenschoten and @yuzefovich)


pkg/sql/logictest/testdata/logic_test/distsql_join, line 1 at r1 (raw file):

# LogicTest: 5node-default-configs

What do you think of this removal @yuzefovich? Was there any good reason to use a 5node config here?


pkg/sql/logictest/testdata/logic_test/edge, line 2 at r1 (raw file):

Previously, yuzefovich wrote…

Is this no longer an issue? I wonder what's changed because the issue is still present, I think.

Yep, the test ran successfully. Maybe post-processing delegation to the row engine?


pkg/sql/logictest/testdata/logic_test/interleaved_join, line 1 at r1 (raw file):

# LogicTest: !local-spec-planning(47473) !fakedist-spec-planning(47473)

@yuzefovich OOC what was the reason for blocking this test?


pkg/sql/logictest/testdata/logic_test/window, line 1 at r1 (raw file):

Previously, yuzefovich wrote…

By deleting this line we will no longer run this test on 5node configs. However, this file doesn't split and relocate ranges, so probably it's ok.

Done.

A while back, we added the ability to run logic tests without a directive,
which would run all default configs.

Some tests still specified explicit configs even though they could run without
a problem with all default configs. Even though it takes more time, running
with all default configs is preferable, since developers rely on the widespread
usage of the default config for good test coverage of new features.

Additionally, all files affected can also be run in a multitenant configuration
using 3node-tenant. So that TestTenantLogic may run these files, this commit
adds a blocklist directive with an issue number where appropriate for any tests
that fail in 3node-tenant that previously had explicit directives.

Release note: None (testing change)
@asubiotto
Copy link
Contributor Author

TestLogic took 22m on this PR, I'm happy with that.

Copy link
Member

@yuzefovich yuzefovich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Reviewed 3 of 3 files at r2.
Reviewable status: :shipit: complete! 1 of 0 LGTMs obtained (waiting on @asubiotto and @nvanbenschoten)


pkg/sql/logictest/testdata/logic_test/distsql_join, line 1 at r1 (raw file):

Previously, asubiotto (Alfonso Subiotto Marqués) wrote…

What do you think of this removal @yuzefovich? Was there any good reason to use a 5node config here?

I don't see a good reason. I think this file has had 5node configs since its introduction in 2017.


pkg/sql/logictest/testdata/logic_test/edge, line 2 at r1 (raw file):

Previously, asubiotto (Alfonso Subiotto Marqués) wrote…

Yep, the test ran successfully. Maybe post-processing delegation to the row engine?

I don't think so. I'll take a look at why this isn't failing anymore.


pkg/sql/logictest/testdata/logic_test/interleaved_join, line 1 at r1 (raw file):

Previously, asubiotto (Alfonso Subiotto Marqués) wrote…

@yuzefovich OOC what was the reason for blocking this test?

When I added support for the joins in the new factory, interleaved joins were planned in an ad-hoc manner (there was no separate ConstructInterleavedJoin method, instead, hash or merge joins could be converted into interleaved joins). As a result, the new factory was planning hash or merge joins and not interleaved ones as the test expects. Since then Radu has cleaned things up, and now the new factory correctly falls back to the old path when an interleaved join can be planned.

@asubiotto
Copy link
Contributor Author

TFTR

bors r=yuzefovich

@craig
Copy link
Contributor

craig bot commented Aug 13, 2020

Build succeeded:

@craig craig bot merged commit 2597211 into cockroachdb:master Aug 13, 2020
@yuzefovich
Copy link
Member

edge is no longer failing because we now prohibit mixed-type operations with dates (ERROR: unable to vectorize execution plan: unable to columnarize render expression "_date - 1": dates and timestamp(tz) not supported in mixed-type expressions in the vectorized engine), so we fallback to row engine on those queries. However, since the root cause is not fixed, I'm not going to close #40354.

craig bot pushed a commit that referenced this pull request Aug 14, 2020
52765: logictest: add 3node-tenant directive to logictests with non-default configs r=yuzefovich,nvanbenschoten a=asubiotto

This commit is the result of running all logictests that specify non-default
configs after applying #52680, and adding the 3node-tenant directive to tests
that pass.

For all tests with non-default configs that fail with the 3node-tenant
configuration, the failures were analyzed and marked as either expected (no
action necessary) or unexpected, in which case a 3node-tenant blocklist
directive with an associated issue was added to the list of directives.

Release note: None (testing change)

Closes #52410 

Co-authored-by: Alfonso Subiotto Marques <alfonso@cockroachlabs.com>
@asubiotto asubiotto deleted the ltdc branch August 17, 2020 16:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-multitenancy Related to multi-tenancy
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants