> 1. Docker-compose and kind are 2 options to set up the environments. > 2. Totally replace the Java and Maven based driving system. > 3. Enhance CLI to validate the GraphQL > 4. Keep the agent test tool unchanged for now as it is already a separate > system from the e2e.
This conclusion is good for me. What are others opinions? ————————— Zhenxu Ke (柯振旭) GitHub @kezhenxu94 > On Nov 17, 2020, at 2:42 PM, Sheng Wu <[email protected]> wrote: > > Using k8s and docker-compose as 2 options in the test process is > reasonable, and should be supported. > > Let's keep the conclusion as simple as possible. In the next generation e2e > framework > 1. Docker-compose and kind are 2 options to set up the environments. > 2. Totally replace the Java and Maven based driving system. > 3. Enhance CLI to validate the GraphQL > 4. Keep the agent test tool unchanged for now as it is already a separate > system from the e2e. > > Are these good enough for everyone? > > Sheng Wu 吴晟 > Twitter, wusheng1108 > > > Hongtao Gao <[email protected]> 于2020年11月17日周二 下午12:41写道: > >>> >>> We can see from above, your discussion actually is only related to 3. >> >> >> That's the only I intend to discuss here if you notice my first >> response('May SWCK help about provision and demo") in this thread. For >> other parts, I don't have any tips to share, though. >> Let me explain it more clearly. I want kubernetes to be seen as an >> alternative to docker-compose to play a running-engine role in the test >> framework. If kubernetes can't replace >> the latter one Is it able to participate in it to solve the dedicated or >> special issues. >> >> Our e2e test and plugin test frameworks are already top-level complicity >>> thing in the worldwide open source field. Please don't over-design it, >> and >>> too aggressive, the world will stay in the hybrid env for a very long >> time, >>> same as the developer. >> >> >> Reusing current elaborate output might be reasonable. But in this thread, >> we're talking about the potential solution to build a >> next-generation framework, which might mean that the current framework >> is too complicated to maintain; we need a more tiny way to support more and >> more cases. >> >> And finally, SWCK is gonna and has to build a similar test framework. If >> the test framework opts for the kubernetes solution, we could share test >> cases and the underlying framework. It's a more efficient >> and consistent path for the entire system. >> >> regards, Hongtao. >> >> Sheng Wu <[email protected]> 于2020年11月17日周二 上午10:33写道: >> >>> Hi >>> >>> I don't think we have to make the decision on k8s or out-of-k8s. >>> e2e and all integration tests have their scenarios like SkyWalking have >>> multiple languages based and mesh-based, even Prometheus adoption. >>> The same thing happens on the test field, k8s, and out of k8s. >>> >>> I would like to agree with both of you, k8s is needed, no matter in mesh >>> solution(ALS, telemetry v2), but also not anyone needs that, such as >> agent >>> developer. We wouldn't deny the fact, the docker-compose is more >>> lightweight and easier to learn. >>> So, let me get this straight, for the test you need >>> 1. Build the source from different repos >>> 2. Build the images >>> 3. Use some platform(docker-compose or k8s) to run the images in one >> piece. >>> 4. Give some inputs to the env >>> 5. Use some tools/ways to check what should happen according to (4)'s >> input >>> 6. Checked or timeout failure. >>> >>> We can see from above, your discussion actually is only related to 3. >> Let's >>> not see this as a battle, we need both. Many developers/users use OAP and >>> SkyWalking out of k8s, that is a simple fact. >>> Our e2e test and plugin test frameworks are already top-level complicity >>> thing in the worldwide open source field. Please don't over-design it, >> and >>> too aggressive, the world will stay in the hybrid env for a very long >> time, >>> same as the developer. >>> >>> Also, let's keep in mind, k8s is popular becomes it doesn't require the >>> developers to understand as the VM did. We as an open-source community, >> are >>> focusing on the developer's capabilities. >>> >>> Sheng Wu 吴晟 >>> Twitter, wusheng1108 >>> >>> >>> Hongtao Gao <[email protected]> 于2020年11月17日周二 上午12:07写道: >>> >>>>> >>>>> but I have been thinking whether or not it is overkill for testing >>>>> purposes to introduce Kubernetes things. >>>> >>>> >>>> we all know the fact docker-compose is more portable than Kubernetes, >>>> friendly to local running. But there're also some benefits to replace >> it >>>> with kubernetes system: >>>> >>>> 1. SWCK has to test based on a real Kubernetes environment if the main >>>> repo test framework doesn't support it(following the docker-compose >>> stack), >>>> That means skywalking ecosystem MUST introduce kubernetes which is not >> an >>>> optional component. >>>> >>>> 2. Kubernetes support to scale applications at runtime, that help >>> improve >>>> the process of e2e. For instance, we could merge a single instance and >>>> cluster test, by scaling up replicas. This strategy will reduce the >> total >>>> time sharply. >>>> >>>> If we are going to use KIND, I hope we can give a script or something >>>>> similar to install all the needed components and create cluster for >>>>> convenient testing locally, Ke Zhang and Huaxi. >>>> >>>> >>>> That's SWCK's capacity to provide a standard and simple way to create a >>>> cluster in every environment, >>>> >>>> kezhenxu94@apache <[email protected]> 于2020年11月16日周一 下午7:00写道: >>>> >>>>> Thanks Hongtao’s suggestion, I’ve thought about adopting >>> Kubernetes-based >>>>> tech stack (e.g. minikube or KIND), I personally prefer KIND too, >> but I >>>>> have been thinking whether or not it is overkill for testing purposes >>> to >>>>> introduce Kubernetes things. >>>>> >>>>> Since you mentioned this, we are open to discuss this much more >> deeply: >>>>> >>>>> It would be definitely a benefit to involve more “end”s in the >> so-call >>>>> “end to end” tests, I’m +1 to leverage SWCK as well. >>>>> >>>>> If we are going to use KIND, I hope we can give a script or something >>>>> similar to install all the needed components and create cluster for >>>>> convenient testing locally, Ke Zhang and Huaxi. >>>>> >>>>> >>>>> ————————— >>>>> Zhenxu Ke (柯振旭) >>>>> GitHub @kezhenxu94 >>>>> >>>>>> On Nov 16, 2020, at 4:03 PM, Hongtao Gao <[email protected]> >>> wrote: >>>>>> >>>>>> May SWCK help about provision and demo >>>>>> >>>>>> 1. SWCK is able to provide a stable and healthy OAP standalone >>> instance >>>>> or >>>>>> cluster for e2e. We could compose indicated CR yamls for different >>>>>> scenarios. >>>>>> 2. Different demo for different cases is mandatory for e2e and >> swck, >>> we >>>>>> could build a group of demo projects for them. With Kubernetes's >>>> support, >>>>>> we could >>>>>> get free of verbose scripts that are written for installation, >>>>> checking >>>>>> the state of running applications, collecting logs. >>>>>> >>>>>> Ppl might have concerts about the minkube we currently have, >> which's >>>> hard >>>>>> to debug and runs slowly. >>>>>> >>>>>> I prefer to kind[1] instead of minkube. From my experience, kind >>> works >>>>> fine >>>>>> in an e2e scenario(limited cpu, memory resources), and it is run >>>> million >>>>>> times >>>>>> on my team's e2e environment, which proves the stability and >>>>>> maintainability of it. >>>>>> >>>>>> * 1.https://kind.sigs.k8s.io/docs/user/quick-start/ >>>>>> >>>>>> regards, Hongtao >>>>>> >>>>>> Sheng Wu <[email protected]> 于2020年11月16日周一 上午8:30写道: >>>>>> >>>>>>> Inline >>>>>>> >>>>>>> kezhenxu94@apache <[email protected]> 于2020年11月15日周日 >> 下午11:16写道: >>>>>>> >>>>>>>> Hi Jiajing, >>>>>>>> >>>>>>>> Thanks for sharing your context and joining the discussion. It’s >>> true >>>>>>> that >>>>>>>> we’re actually tackling the same problems in this domain. Some of >>> the >>>>>>>> issues you mentioned are solved in the current E2E framework >> (like >>>>>>> `retry`, >>>>>>>> `timeout`, etc.), while some others are still there without ideal >>>>>>> solution. >>>>>>>> Other discussions, please see my comments inline. >>>>>>>> >>>>>>>>> - the first issue is useful in health check steps, just like the >>>> ones >>>>>>>>> defined in readiness probe and liveness probe in kubelet. >>>>>>>> >>>>>>>> Yes, the reason why we decided to pick docker-compose is that, it >>> has >>>>> the >>>>>>>> same functionality with kubelet in terms of dependent services >>>> startup >>>>>>>> order and healthiness checking, while it’s more lite-weight and >>> easy >>>>> for >>>>>>>> both developers and GitHub Actions environment. Right? >>>>>>>> >>>>>>>>> - the second issue is critical for highly-customized assertions, >>> we >>>>>>>>> can leverage the `text/template` module to provide highly >>> extensive >>>>>>>>> assertion functions >>>>>>>> >>>>>>>> `text/template` is also the first thought that came to my mind >> when >>>>>>>> considering customized assertors, customized assertors are for >> sure >>>>>>>> critical in SkyWalking E2E tests because we have many kinds of >>>>>>> assertions, >>>>>>>> some of which are not foreseen until we actually need them, >>>>>>>> `AtLeastOneGreaterThanZero` is an example. >>>>>>>> >>>>>>>>> - the last but not the least, the lifecycle hooks can be used >> for >>>>>>>>> accurate control of test setup and teardown, such as >>> `docker-compose >>>>>>>>> build, up -d, down` >>>>>>>> >>>>>>>> The lifecycle hooks are what I didn’t take into consideration >>>> because I >>>>>>>> thought it is quite natural for test framework to provide this >>>>> features, >>>>>>>> maybe Ke Zhang and Huaxi can do some research on this part. >>>>>>>> >>>>>>>>> Together with the aforementioned ideas, we will have a >> go-written, >>>>>>>>> yaml-data driven e2e testing framework which can overcome the >>>> current >>>>>>>>> problems that occur, >>>>>>>> >>>>>>>> I agree. >>>>>>>> >>>>>>>>> in which the most annoying issue is the fragmentation of >> different >>>>>>>>> scripts in different submodules, IMO. >>>>>>>> >>>>>>>> That’s why I list the last item in the previous email, (Nice to >>> have, >>>>>>> wrap >>>>>>>> them into a GitHub Action), with that GitHub Action, we can >> simply >>>>>>>> configure a workflow/job in every submodule, and the tests are >>>> executed >>>>>>>> with the shared scripts, no copy-pasting. >>>>>>>> >>>>>>> >>>>>>> Note, GitHub Action will require an Apache release every time >>> because >>>> we >>>>>>> are distributing the binary. >>>>>>> >>>>>>> >>>>>>> Sheng Wu 吴晟 >>>>>>> Twitter, wusheng1108 >>>>>>> >>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> Jiajing >>>>>>>>> >>>>>>>>> On Sun, Nov 15, 2020 at 9:43 PM kezhenxu94@apache < >>>>>>> [email protected]> >>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> So, we would provide a script set to drive this? >>>>>>>>>> >>>>>>>>>> Yes, a script or a GoLang-written CLI, it depends. >>>>>>>>>> >>>>>>>>>>> My question is more about, >>>>>>>>>>> how to work with docker-compose >>>>>>>>>> >>>>>>>>>> It’s the same as what we’re doing now in the current version of >>> E2E >>>>>>>> tests, now we have many `docker-compose.yaml` files, and all the >>>>>>>> `docker-compose.yaml` files are reusable in the new framework, we >>>> will >>>>>>> keep >>>>>>>> this mechanism as it is proved to be convenient and easy to use >>>>> (remember >>>>>>>> when we added an ElasticSearch 7.9 case, and the TiDB storage E2E >>>> test, >>>>>>> not >>>>>>>> yet merged though, it’s fast/easy to add a new case). >>>>>>>>>> >>>>>>>>>> ————————— >>>>>>>>>> Zhenxu Ke (柯振旭) >>>>>>>>>> GitHub @kezhenxu94 >>>>>>>>>> >>>>>>>>>>> On Nov 15, 2020, at 9:29 PM, Sheng Wu < >>> [email protected]> >>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> kezhenxu94@apache <[email protected]> 于2020年11月15日周日 >>>> 下午9:16写道: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> 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); >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> So, we would provide a script set to drive this? My question >> is >>>> more >>>>>>>> about, >>>>>>>>>>> how to work with docker-compose, rather than challanging the >>>> choice. >>>>>>>>>>> >>>>>>>>>>> Sheng Wu 吴晟 >>>>>>>>>>> Twitter, wusheng1108 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> (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 >>>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> ————————— >>>>>>>> Zhenxu Ke (柯振旭) >>>>>>>> GitHub @kezhenxu94 >>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>>> >>>> >>> >>
