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

Reply via email to