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

Run platform functional tests with/without base-path #63672

Open
mshustov opened this issue Apr 16, 2020 · 10 comments
Open

Run platform functional tests with/without base-path #63672

mshustov opened this issue Apr 16, 2020 · 10 comments
Labels
impact:needs-assessment Product and/or Engineering needs to evaluate the impact of the change. Team:Operations Team label for Operations Team

Comments

@mshustov
Copy link
Contributor

FTR runs functional tests with --no-base-path option.

'--no-base-path',

That is a source of many regressions during migration:
#54687
#56409
#57301
#62016
#63417 (review)

We would like to have reliable function tests to prevent such problems in the future.

Probably @elastic/kibana-operations can provide more information about the requirement to run FTR without a base path. As I can see this setting was on since the kbn-test package was introduced in #18568

I'm not sure we could and should enable configurable base-path for all the tests. Probably, we can start with moving the platform tests to a separate test config that runs tests with and without the base-path option.

@mshustov mshustov added Team:Core Core services & architecture: plugins, logging, config, saved objects, http, ES client, i18n, etc Feature:New Platform labels Apr 16, 2020
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-platform (Team:Platform)

@spalger
Copy link
Contributor

spalger commented Apr 16, 2020

Yeah, one problem with testing with the base path turned on is that we test against the distributable, which doesn't include the base path proxy, so we would need to setup a separate proxy for use in the functional tests (which would probably be ideal since the base path proxy has conveniences for development that production proxies do not).

We would also need the tests to work against cloud Kibana instances that don't have base paths configured, so they can't rely on the base path being there, but that also shouldn't be a problem.

@spalger spalger added Team:Operations Team label for Operations Team and removed Feature:New Platform Team:Core Core services & architecture: plugins, logging, config, saved objects, http, ES client, i18n, etc labels Apr 16, 2020
@mshustov
Copy link
Contributor Author

Can we run Nginx as a reverse proxy when #68173 merged?

@spalger
Copy link
Contributor

spalger commented Jun 18, 2020

We'd probably need to add support for running the containers on the host network or something, but should be a pretty straightforward change to the dockerServers service. Only thing is that we want to make sure we don't make docker required to run most tests, so it'd be ideal if it ran as an alternate way to connect to the standard Kibana instance that most of the tests talk to.

@joshdover
Copy link
Contributor

Only thing is that we want to make sure we don't make docker required to run most tests

Is this a firm decision? If we're finding success with Docker for test orchestration, I don't think we should hesitate to require it. It's quite a mature technology at this point and well supported on all platforms.

@spalger
Copy link
Contributor

spalger commented Jul 13, 2020

Only thing is that we want to make sure we don't make docker required to run most tests

Is this a firm decision? If we're finding success with Docker for test orchestration, I don't think we should hesitate to require it. It's quite a mature technology at this point and well supported on all platforms.

The reasons I have for not wanting to require docker are not that it's new or unsupported. I still feel like there are a number of usability gotchas, like debugging specific processes, image creation performance with massive directories like our node_modules, network management, mounted volume performance, etc. There are also maintenance considerations like GC, determining what's running, and less OS diversity in our development environments that I think might have a pretty negative impact on developers.

I know a lot of teams rely on docker, I've investigated moving several parts of the "operations experience" to Docker, and every time I have run into a roadblock that I makes things overall worse.

I'm still open minded to applying docker strategically, but I just want to express caution about requiring it without actually testing things out and making sure that it doesn't just make things conceptually simpler, but actually makes things better.

@spalger
Copy link
Contributor

spalger commented Jul 13, 2020

Sorry, I'm backing up my stance that we "make sure we don't make docker required", but requiring it for something small like nginx might be reasonable as most of the issues I described could be eliminated

  • we're not building the image
  • we'd only need to sync simple config files into the container
  • debugging nginx isn't really a part of developing Kibana
  • the container is small enough and would change infrequently enough that GC likely wouldn't be a constant problem
  • OS diversity is still maintained as all Kibana code is running on the host machine directly

So from that angle I might have been a bit hasty about "not requiring docker" for something like an nginx proxy. That said, a module which implements a proxy (maybe based on any popular proxy library from npm) is a much simply way to accomplish this in my mind.

@mshustov
Copy link
Contributor Author

mshustov commented Oct 8, 2020

@spalger is #76935 prerequisite for the current issue to decouple basePathProxy from the platform and ClusterManager?

@spalger
Copy link
Contributor

spalger commented Oct 9, 2020

I suppose, yeah

@mshustov
Copy link
Contributor Author

I suppose, yeah

ok, I think we might use another nodejs server since we run FTR not in dev mode anyway

@tylersmalley tylersmalley added 1 and removed 1 labels Oct 11, 2021
@exalate-issue-sync exalate-issue-sync bot added impact:low Addressing this issue will have a low level of impact on the quality/strength of our product. loe:small Small Level of Effort labels Feb 16, 2022
@tylersmalley tylersmalley removed loe:small Small Level of Effort impact:low Addressing this issue will have a low level of impact on the quality/strength of our product. EnableJiraSync labels Mar 16, 2022
@exalate-issue-sync exalate-issue-sync bot added the impact:needs-assessment Product and/or Engineering needs to evaluate the impact of the change. label Mar 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
impact:needs-assessment Product and/or Engineering needs to evaluate the impact of the change. Team:Operations Team label for Operations Team
Projects
None yet
Development

No branches or pull requests

5 participants