Because now we have skywalking-eyes repository to host the infra tools, we can put the new E2E framework there so that it doesn’t mess up the CLI repo. Here [1] I created a new directory to host the E2E codes.
[1] https://github.com/apache/skywalking-eyes/pull/11 ————————— Zhenxu Ke (柯振旭) GitHub @kezhenxu94 > On Dec 17, 2020, at 17:45, kezhenxu94@apache <[email protected]> wrote: > > Hey, I’ve just drafted a design doc here [1], anyone interested in this > please feel free to leave your comments, thanks! > > [1] https://github.com/apache/skywalking-website/pull/172 > >> On Nov 26, 2020, at 14:41, Sheng Wu <[email protected]> wrote: >> >> You could learn from the Satellite project design, >> 1. Discuss here, https://github.com/apache/skywalking/issues/5871 >> 2. Final design posted as a blog, >> http://skywalking.apache.org/blog/2020-11-25-skywalking-satellite-0.1.0-design/ >> >> People could learn from these things when you join the community in the >> future. >> >> Sheng Wu 吴晟 >> Twitter, wusheng1108 >> >> >> Hoshea Jiang <[email protected]> 于2020年11月26日周四 下午1:38写道: >> >>> I agree with the conclusion, and I hope to have some diagrams such as >>> flowcharts or data flow diagrams, which help provide an overview of the E2E >>> test before we start to do this. >>> >>> Ke Zhang <[email protected]> 于2020年11月26日周四 下午12:34写道: >>> >>>> I think supporting both docker-compose and KIND in the E2E test is >>>> reasonable and necessary, and I also agree with other conclusions.😀 >>>> >>>> kezhenxu94@apache <[email protected]> 于2020年11月26日周四 上午11:58写道: >>>> >>>>> >>>>>> 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 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>>> >>>> >>> > > > > ————————— > Zhenxu Ke (柯振旭) > GitHub @kezhenxu94
