It makes sense to make e2e driver and maybe validators in the INFRA repo. Sheng Wu 吴晟 Twitter, wusheng1108
kezhenxu94@apache <[email protected]> 于2020年12月26日周六 上午8:53写道: > 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 > >
