Add experimental end-to-end test framework#3056
Add experimental end-to-end test framework#3056rob05c wants to merge 3 commits intoapache:masterfrom
Conversation
|
Refer to this link for build results (access rights to CI server needed): |
|
Refer to this link for build results (access rights to CI server needed): |
|
Refer to this link for build results (access rights to CI server needed): |
|
Refer to this link for build results (access rights to CI server needed): |
|
Refer to this link for build results (access rights to CI server needed): |
|
Have you looked at using the same autest framework that Traffic Server uses? |
|
I didn't look at I did look at several HTTP-level frameworks (Selenium, Katalon, SoapUI). I was actually really hoping we could use one of them, to reduce writing framework-level stuff. But I came to the conclusion that there are enough CDN-specific things we'd want to test, that any framework at that level would either be incapable of, or we'd end up using its scripting language to essentially write our own framework within in. When I say "CDN-specific", I mean things like verifying a DNS DS got a direct IP to the cache from a host lookup, or that a video could play. A lot of it is actually more network-specific, if we could find a good "network e2e test framework" that might work; but I didn't see one. Likewise for video. |
|
I was thinking that autest already had a solid trafficserver integration written, but I'm reconsidering because a Traffic Control E2E test would talk primarily to Traffic Ops. We also get that pretty much for free in this framework by using the TO client library. I've got some more thoughts on what types of functionality an E2E framework should have based on some experiences with our own in house regression tests. I'll try to write those up a bit later. In general, I'm favorable on improving TC test infrastructure, I think it could make our lives a lot easier and increase quality |
Well, it needs to to get the data, to make requests. But after that, its primary job should be making requests thru the Router/Edge. If we felt strongly about a non-Go test, I think it'd be ok to write a thin client in that language to just auth and the endpoints we need.
+1 We can use all the input we can get for this kind of thing. No one person is going to think of all the cases we should test.
This is a total tangent, but while you're here, I have some other ideas about a "Data Validation" tool I think we should write. TC has a ton of data constraints that the CDN simply doesn't function without. I've said since the beginning, I think those data constraints should be encoded in the DB; but there's some pretty strong resistance to that. So, I had an idea about the next best thing: a tool to validate them. (This is obviously similar to Voluspa). For example, Cache profiles MUST have a |
|
Yeah I agree there is a lack of validation in the CDN config. There are too many things that could and often do go wrong. I definitely think we could use improvement within Traffic Ops as far as imposing/checking constraints. My favorite tool for constraint satisfaction is the database- I haven't heard the reasoning behind the resistance to that yet. Regardless, this is a place our users constantly shoot themselves in the foot (or we shoot them in the foot with migration errors) and can certainly be improved. That tool you are proposing is probably a good first step and hopefully can be pretty simple |
|
@rob05c Here are a few really rough notes, didn't have time to write full sentences and explanations around them Components of an end to end test bed Goals
Setup
Test Definition Execution - Lots of common actions between, i.e making HTTP or DNS requests. Should be very simple to make a request but extensible if needed. i.e. default headers are necessary, but easy to add new headers. Similarly it should be really easy to make sure an HTTP request succeeded. If needed, more detailed validation should be possible if the test-writer needs. |
What does this PR do?
Fixes #(issue_number)
Which TC components are affected by this PR?
What is the best way to verify this PR?
Check all that apply