> I want to ask, how the docker-compose lands in your mind? I think CLI can't > control this part.
docker-compose just fits the requirements perfectly that we need, we have been using it in the current E2E and turns out it has advantages in starting many services correctly with health check and dependency declaration. (One may say Kubernetes can do the same thing, but it’s kind of heavy in E2E and GitHub Actions and complex). The SkyWalking-CLI won’t get involved with docker-compose related things, it just provides query ability (the same as what it is doing now, just need to check whether it covers all the needed query interfaces or not), we will have a dedicated control program to (1) start docker-compose (existing standard mechanism, no new knowledge); (2) query actual data (by SkyWalking-CLI, existing repository and codes); (3) verify the actual data (by verification tool, a new tool, TODO); (4) and determine the test result (success or failed); ————————— Zhenxu Ke (柯振旭) GitHub @kezhenxu94 > Sheng Wu 吴晟 > Twitter, wusheng1108 > > > kezhenxu94@apache <[email protected]> 于2020年11月15日周日 下午5:27写道: > >> Hi the community, I want to raise a discussion to build the next >> generation of E2E test framework for Apache SkyWalking, which may not be a >> high priority but a necessity. >> >> As we already know, tests in SkyWalking play a very important role in the >> contribution process, and the current E2E tests just work well to verify >> every single pull request before merging, so why bother to build the next >> generation of E2E test framework? >> >> 1. In the SkyWalking's ecosystem, there are many sub-projects that vary in >> terms of language, almost all of them need E2E tests to help us verify the >> pull requests, but we can see that they reimplement the E2E test framework >> in their languages, (or even worse, some of them don’t have E2E tests at >> all). Reimplementing the E2E test framework is unnecesarry and introduces >> more duplicated work when adding a new test case. The ultimate goal is to >> reuse all the test cases when needed. >> >> 2. The current E2E framework is built with Java, running Java-based >> program is not an easy thing for non-Java developers (maintainers of other >> sub-projects such as PHP, C++, LUA, etc.), they need to set up the >> environment correctly and then run the tests, neither is it an easy skill >> to debug the tests. >> >> 3. It’s a good opportunity to optimize the E2E tests because we added many >> cases and many duplicated codes that need to be removed. >> >> Therefore we're planning to build an unified, easy-to-use, and fast E2E >> test framework to benifit all the sub-projects. >> >> Here are some rough ideas about this framework: >> >> 0. (Unchanged) We will continue to use docker-compose.yaml to orchestrate >> the services that are to be tested, it’s proved to be friendly and >> debuggable because we can start it directly even if we are not writing E2E >> tests. >> 1. This framework will take full advantages of the CLI project to query >> the traces/metrics/logs, we don’t want to maintain two versions of query >> codes anymore, (now we have a version in the test codes and one in the CLI). >> 2. We will build a CLI tool to compare the expected data and the actual >> data, we now have a custom schema of the expected data yaml file, the >> verification codes should be packaged into an executable command so that it >> can be executed standalone without Java and maven knowledge. I hope we can >> leverage existing standards to write the YAML files and do verifications. >> 3. Build an orchestrating tool to start the `docker-compose.yaml`, health >> check, query actual data, and verify the result. >> 4. (Nice to have) wrap all the tools as a GitHub Actions to share between >> sub-projects. >> >> If you have any other better idea or want to complement to this proposal, >> please reply here. I will create an issue to track these tasks later. >> >> We have two students (who just finished the Summer Code 2020 Projects) to >> lead this part, Ke Zhang [1] and Huaxi Jiang [2], as I said this is a not >> high priority, you have adequate time to get yourselves familiar with how >> the components (OAP, WebUI, CLI, storages, etc.) of SkyWalking work as well >> as the ecosystem. Thanks for your interests and willingness to help. >> >> [1] https://github.com/Humbertzhang >> [2] https://github.com/fgksgf/ >> >> ————————— >> Zhenxu Ke (柯振旭) >> GitHub @kezhenxu94 >> >> ————————— Zhenxu Ke (柯振旭) GitHub @kezhenxu94
