+1. Let's do it :). I think if others will agree, a LAZY CONSENSUS thread
will do + documenting the format as PR + getting each team to implement it
is a good way to progress.

Once we have it exposed by at least two dashboards, we can add a "canary"
test that will pull them and fail in case of error (soft - non-blocking
fail).

On Mon, Aug 5, 2024 at 11:07 AM Freddy Demiane <fdemi...@google.com.invalid>
wrote:

> Hello all,
>
> I took a long time to reply to this thread, I was on a long vacation. +1 to
> Dennis' suggestion, I believe the provided JSON format contains the minimal
> information required to render a dashboard. I experimented with generating
> a JSON output from a development CI (from Google's side), I added a sample
> output of how it could look like.
> As of the Junit XML format, while I was searching online, I found multiple
> different standards, and for tools to visualize results, each tool has
> their own standard (even though the formats look similar). Again, I never
> used the JUnit XML format nor tooling for visualization, so I might be
> wrong in this regard.
> I suggest sticking with a defined JSON schema, and later if we want to
> generate some aggregated report, and decide to go with a Junit XML
> visualizer, we can transform the data.
> Nevertheless, I played a bit with generating a Junit XML result, which I
> also attached in this email.
> Let me know what you think.
>
> Best,
> Freddy
>
> JSON Sample Output:
>
> {
>   "provider": "Google",
>   "tests": 159,
>   "errors": 0,
>   "failures": 21,
>   "skipped": 68,
>   "timestamp": "2024-07-30 12:00:00.460429+00:00",
>   "duration": 8263.065936,
>   "properties": {
>     "airflow_commit_id": "41508f23ad",
>     "providers_commit_id": "41508f23ad"
>   },
>   "testcases": [
>     {
>       "name": "example_gcp_translate_speech",
>       "file": "
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/translate_speech/example_translate_speech.py
> ",
>       "duration": 0,
>       "result": {
>         "state": "SKIPPED",
>         "message": "Skipped",
>         "type": ""
>       },
>       "properties": {
>         "logs_folder_link": "",
>         "failed_tasks": []
>       },
>       "skipped": true
>     },
>     {
>       "name": "example_gcp_translate",
>       "file": "
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/translate/example_translate.py
> ",
>       "duration": "0:00:02.443829",
>       "result": {
>         "state": "SUCCESS",
>         "message": "",
>         "type": ""
>       },
>       "properties": {
>         "logs_folder_link":
> "
> https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-30
> 12:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=example_gcp_translate
> <https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-3012:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=example_gcp_translate>
> ",
>         "failed_tasks": []
>       },
>       "skipped": false
>     },
>     {
>       "name": "vertex_ai_pipeline_job_operations",
>       "file": "
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_pipeline_job.py
> ",
>       "duration": "0:24:35.451846",
>       "result": {
>         "state": "FAILURE",
>         "message": "Check the logs at:
>
> https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-30
>
> 12:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_pipeline_job_operations
> <https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-3012:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_pipeline_job_operations>
> ",
>         "type": "Test Failure"
>       },
>       "properties": {
>         "logs_folder_link":
> "
> https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-30
>
> 12:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_pipeline_job_operations
> <https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-3012:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_pipeline_job_operations>
> ",
>         "failed_tasks": [
>           "watcher",
>           "run_pipeline_job"
>         ]
>       },
>       "skipped": false
>     },
>
> XML Sample Output:
>
> <testsuite name="Google" tests="159" failures="21" time="8263.065936"
> timestamp="2024-07-30 12:00:00.460429+00:00">
> <testcase name="example_gcp_translate_speech"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/translate_speech/example_translate_speech.py
> "
> time="0">
> <skipped>Ignored</skipped>
> </testcase>
> <testcase name="example_gcp_translate"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/translate/example_translate.py
> "
> time="0:00:02.443829"/>
> <testcase name="vertex_ai_pipeline_job_operations"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_pipeline_job.py
> "
> time="0:24:35.451846">
> <failure message="Check the logs at:
>
> https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-30
>
> 12:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_pipeline_job_operations
> <https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-3012:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_pipeline_job_operations>
> "
> type="ERROR"/>
> </testcase>
> <testcase name="vertex_ai_custom_job_operations_list_custom_job"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_list_custom_jobs.py
> "
> time="0:00:19.742450"/>
> <testcase name="vertex_ai_auto_ml_operations_video_training_job"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_auto_ml_video_training.py
> "
> time="-1">
> <failure message="" type="ERROR"/>
> </testcase>
> <testcase name="vertex_ai_batch_prediction_operations"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_batch_prediction_job.py
> "
> time="2:00:16.013429">
> <failure message="Check the logs at:
>
> https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-30
>
> 12:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_batch_prediction_operations
> <https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-3012:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_batch_prediction_operations>
> "
> type="ERROR"/>
> </testcase>
> <testcase name="vertex_ai_generative_model_dag"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_generative_model.py
> "
> time="0:00:18.350772"/>
> <testcase name="vertex_ai_custom_job_operations_custom"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_custom_job.py
> "
> time="0:21:58.908473"/>
> <testcase name="vertex_ai_auto_ml_operations_list_training_job"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_auto_ml_list_training.py
> "
> time="0:00:24.284901"/>
> <testcase name="vertex_ai_auto_ml_operations_forecasting_training_job"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_auto_ml_forecasting_training.py
> "
> time="1:42:17.086311"/>
> <testcase name="vertex_ai_auto_ml_operations_text_training_job"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_auto_ml_text_training.py
> "
> time="-1">
> <failure message="" type="ERROR"/>
> </testcase>
> <testcase name="vertex_ai_hyperparameter_tuning_job_operations"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_hyperparameter_tuning_job.py
> "
> time="0:31:34.276985">
> <failure message="Check the logs at:
>
> https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-30
>
> 12:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_hyperparameter_tuning_job_operations
> <https://console.cloud.google.com/storage/browser/dashboard-system-tests-public-logs-dev/2024-07-3012:00:00.460429+00:00-41508f23ad-41508f23ad/dag_id=vertex_ai_hyperparameter_tuning_job_operations>
> "
> type="ERROR"/>
> </testcase>
> <testcase name="vertex_ai_model_service_operations"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_model_service.py
> "
> time="0:19:51.716990"/>
> <testcase name="vertex_ai_auto_ml_operations_tabular_training_job"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_auto_ml_tabular_training.py
> "
> time="1:57:02.637592"/>
> <testcase name="vertex_ai_endpoint_service_operations"
> file="
> https://github.com/apache/airflow/blob/main/tests/system/providers/google/cloud/vertex_ai/example_vertex_ai_endpoint.py
> "
> time="-1">
> <failure message="" type="ERROR"/>
> </testcase>
>
>
> On Wed, Jun 26, 2024 at 12:47 AM Ferruzzi, Dennis
> <ferru...@amazon.com.invalid> wrote:
>
> > I was unaware of the Teradata dashboard!  Outstanding to see.
> >
> > I can take point on design discussion and documentation for this, but in
> > the end it'll be up to each provider to update their own infra, so there
> is
> > only so much I can do.
> >
> > I didn't really think this would catch on so enthusiastically.   One
> other
> > thing I was thinking about but dropped from the initial idea would be
> > adding an optional field to the provider.yaml with a dashboard url.
> > Currently it is up to the provider to manually add a link to the list on
> > the ecosystem page.  If we make it part of the yaml file, new providers
> > might see it when looking for a template and jump onboard.  It would also
> > make the dashboards more programmatically-discoverable, maybe even
> > something that can be used in generating a docs page and skip the manual
> > step of adding it to the ecosystem page if someone wants to do that at
> some
> > point.  Given the way this discussion caught on, maybe it should be two
> > fields: 'dashboard-html' and 'dashboard-json' (or -xml or whatever we
> > decide is the vended format).
> >
> >
> > As at least half of the existing dashboards already export some form of
> > json, I'd propose we stick to that unless someone has a compelling reason
> > to convert to XML?  I looked into junit-xml and I like the way they break
> > down their schema, so maybe json-ify that with some tweaks?
> >
> > Proposed formatting:
> >
> > {
> >   "testsuite": {
> >     "provider": string,    [REQUIRED]
> >     "tests": int,          [REQUIRED]  // Could drop this as it's just
> > len(testcases) but by that same logic it's easy enough to add it...
> >     "errors": int,         [REQUIRED]
> >     "failures": int,       [REQUIRED]
> >     "skipped": int,        [REQUIRED]
> >     "timestamp": string,   [REQUIRED]  // Standardize on UTC?
> >     "duration": float,     [OPTIONAL]  // Seconds?
> >     "properties": {},      [OPTIONAL]  // Let's make all "properties"
> > blocks free-form and optional; a provider may add whatever extra values
> in
> > this block that they want.
> >     "testcases": [
> >       {
> >         "name": string,        [OPTIONAL]
> >         "file": string,        [REQUIRED]
> >         "duration": float,     [OPTIONAL] // Seconds?
> >         "result": {
> >             "state": "SUCCESS" | "SKIPPED" | "FAILURE",   [REQUIRED]
> >             "message": string, [OPTIONAL]
> >             "type": string,    [OPTIONAL]  // Exception type in case of a
> > failure.
> >         },
> >         "properties": {},      [OPTIONAL]  // Let's make all "properties"
> > blocks free-form and optional; a provider may add whatever extra values
> in
> > this block that they want.
> >       },
> >     ]
> >   }
> > }
> >
> > Sample:
> >
> >
> > {
> >   "testsuite": {
> >     "provider": "AWS",
> >     "tests": 3,
> >     "errors": 0,
> >     "failures": 1,
> >     "skipped": 1,
> >     "timestamp": "2020-01-26T13:45:02",
> >     "duration": 139.89,
> >     "properties": {
> >       "commit": "ef7bebf",
> >       "executor": "celery",
> >     },
> >     "testcases": [
> >       // Example successful test
> >       {
> >         "name": "example_appflow",
> >         "file": "tests/system/providers/amazon/aws/example_appflow.py",
> >         "duration": 45.87,
> >         "result": {
> >             "state": "SUCCESS"
> >         },
> >         "properties": {
> >           "source": "
> >
> https://github.com/apache/airflow/blob/main/tests/system/providers/amazon/aws/example_appflow.py
> > ",
> >           "operators": [
> >             "AppflowRunOperator",
> >             "S3CreateBucketOperator",
> >             "S3CreateObjectOperator",
> >             "S3DeleteBucketOperator"
> >           ]
> >         }
> >       },
> >       // Example of a test case that was skipped.
> >       {
> >         "name": "example_athena",
> >         "file": "tests/system/providers/amazon/aws/example_athena.py",
> >         "duration": 0.01,
> >         "result": {
> >             "state": "SKIPPED",
> >             "message": "Message explaining why."
> >         },
> >         "properties": {
> >           "source": "
> >
> https://github.com/apache/airflow/blob/main/tests/system/providers/amazon/aws/example_athena.py
> > ",
> >           "operators": [
> >             "AthenaOperator",
> >             "S3CreateBucketOperator",
> >             "S3CreateObjectOperator",
> >             "S3DeleteBucketOperator"
> >           ]
> >         }
> >       },
> >       // Example of a test case that failed.
> >       {
> >         "name": "example_batch",
> >         "file": "tests/system/providers/amazon/aws/example_batch.py",
> >         "duration": 94.01,
> >         "result": {
> >             "state": "FAILURE",
> >             "message": "Some failure message, maybe a link to logs or a
> > stack trace?",
> >             "type": "AssertionError",
> >         },
> >         "properties": {
> >           "source": "
> >
> https://github.com/apache/airflow/blob/main/tests/system/providers/amazon/aws/example_batch.py
> > ",
> >           "operators": [
> >             "BatchCreateComputeEnvironmentOperator",
> >             "BatchComputeEnvironmentSensor",
> >             "BatchJobQueueSensor",
> >             "BatchOperator",
> >             "BatchSensor",
> >           ]
> >         }
> >       },
> >     ]
> >   }
> > }
> >
> >
> >  - ferruzzi
> >
> >
> > ________________________________
> > From: Eugen Kosteev <eu...@kosteev.com>
> > Sent: Tuesday, June 25, 2024 6:04 AM
> > To: dev@airflow.apache.org
> > Subject: RE: [EXT] System Test Dashboards - Phase Two??
> >
> > CAUTION: This email originated from outside of the organization. Do not
> > click links or open attachments unless you can confirm the sender and
> know
> > the content is safe.
> >
> >
> >
> > AVERTISSEMENT: Ce courrier électronique provient d’un expéditeur externe.
> > Ne cliquez sur aucun lien et n’ouvrez aucune pièce jointe si vous ne
> pouvez
> > pas confirmer l’identité de l’expéditeur et si vous n’êtes pas certain
> que
> > le contenu ne présente aucun risque.
> >
> >
> >
> > +1 to the idea of standardizing the format of the system test results
> > output
> >
> > On Tue, Jun 25, 2024 at 10:40 AM Jarek Potiuk <ja...@potiuk.com> wrote:
> >
> > > So we have almost everyone on board!
> > >
> > > Now we also need the Teradata team to add whatever JSON/XML we come up
> > with
> > > :). In case people have not noticed, among our dashboards [1] we also
> > have
> > > Teradata dashboard [2]
> > >
> > > [1]
> > >
> > >
> >
> https://airflow.apache.org/ecosystem/#airflow-provider-system-test-dashboards
> > > [2] https://teradata.github.io/airflow/
> > >
> > > Anyone would like to take a lead on it? I am personally fine with
> either
> > > approach - Junit xml (or json version of it), or custom json is fine
> for
> > > me.
> > >
> > > J.
> > >
> > >
> > > On Tue, Jun 25, 2024 at 10:24 AM Pankaj Koti
> > > <pankaj.k...@astronomer.io.invalid> wrote:
> > >
> > > > For context, the Astronomer LLM providers dashboard operates as
> > follows:
> > > >
> > > > 1. Fetch the latest source code for providers and system
> tests/example
> > > DAGs
> > > > from the Airflow repository, deploy them to an Airflow instance, and
> > > > execute the
> > > > DAGs.
> > > > 2. Use the Airflow API to retrieve the DAG run statuses and produce a
> > > JSON
> > > > output of these statuses.
> > > > 3. The dashboard, hosted on GitHub Pages, consumes the JSON data
> > > > generated in step 2.
> > > >
> > > > We are willing to adopt and adhere to a JSON or XML specification
> and a
> > > > model HTML view if one is established.
> > > >
> > > > Best regards,
> > > >
> > > > *Pankaj Koti*
> > > > Senior Software Engineer (Airflow OSS Engineering team)
> > > > Location: Pune, Maharashtra, India
> > > > Timezone: Indian Standard Time (IST)
> > > >
> > > >
> > > > On Mon, Jun 24, 2024 at 11:40 PM Ferruzzi, Dennis
> > > > <ferru...@amazon.com.invalid> wrote:
> > > >
> > > > > >  The information in our database is similar to the structure of
> the
> > > AWS
> > > > > providers json file
> > > > > >
> > https://aws-mwaa.github.io/open-source/system-tests/dashboard.json
> > > +
> > > > a
> > > > > field for logs.
> > > > > >  We also have an extra field that specifies the commit-id against
> > > which
> > > > > the CI was run,
> > > > > >  which I believe is helpful in case users want to know whether
> > their
> > > PR
> > > > > was merged before
> > > > > >  or after a failure.
> > > > >
> > > > > The commit ID is a handy addition for sure, I may look into adding
> > that
> > > > to
> > > > > the AWS dashboard.  I haven't had a chance to look into junit-xml
> > yet,
> > > > but
> > > > > I think what we could do is agree on a minimum structure and allow
> > for
> > > > > extras.   For example, logs are great, but if Google provides them
> > and
> > > > AWS
> > > > > doesn't, that shouldn't break anything for the user trying to fetch
> > > logs.
> > > > > But the test name, timestamp, and success/fail state are definitely
> > > among
> > > > > the required minimum fields.
> > > > >
> > > > > > we could consider enforcing the presence of *some* dashboard that
> > > shows
> > > > > results of regular system tests executions for any new provider.
> > > > >
> > > > > The issue there is that smaller providers come and go, and are
> often
> > > > added
> > > > > by community members, not even necessarily with the provider's
> > > knowledge.
> > > > >  We can't force them to provide any support.  If Random Contributor
> > > adds
> > > > > support for a new provider, neither the contributor nor the
> provider
> > > can
> > > > be
> > > > > required to provide hosting for a dashboard and infrastructure to
> run
> > > the
> > > > > tests.  So (for the foreseeable future) the dashboards need to be
> an
> > > > opt-in
> > > > > project by/for the providers.   Maybe some day the project might be
> > > able
> > > > to
> > > > > provide hosting for the smaller dashboards or something, but I
> think
> > > the
> > > > > infrastructure to run the tests will always be optional and at the
> > > > expense
> > > > > (and effort) of some other interested party (almost certainly the
> > > > provider
> > > > > themselves, but who knows... ).
> > > > >
> > > > >
> > > > >  - ferruzzi
> > > > >
> > > > >
> > > > > ________________________________
> > > > > From: Michał Modras <michalmod...@google.com.INVALID>
> > > > > Sent: Monday, June 24, 2024 5:20 AM
> > > > > To: dev@airflow.apache.org
> > > > > Subject: RE: [EXT] System Test Dashboards - Phase Two??
> > > > >
> > > > > CAUTION: This email originated from outside of the organization. Do
> > not
> > > > > click links or open attachments unless you can confirm the sender
> and
> > > > know
> > > > > the content is safe.
> > > > >
> > > > >
> > > > >
> > > > > AVERTISSEMENT: Ce courrier électronique provient d’un expéditeur
> > > externe.
> > > > > Ne cliquez sur aucun lien et n’ouvrez aucune pièce jointe si vous
> ne
> > > > pouvez
> > > > > pas confirmer l’identité de l’expéditeur et si vous n’êtes pas
> > certain
> > > > que
> > > > > le contenu ne présente aucun risque.
> > > > >
> > > > >
> > > > >
> > > > > Hi,
> > > > >
> > > > > +1 to this idea. I think standardizing the format of the presented
> > test
> > > > run
> > > > > results makes sense. I also agree that we don't necessarily need to
> > > > enforce
> > > > > it in any hard way. However, given that we have dashboards of these
> > > three
> > > > > major providers, we could consider enforcing the presence of *some*
> > > > > dashboard
> > > > > that shows results of regular system tests executions for any new
> > > > provider.
> > > > > WDYT?
> > > > >
> > > > > Best,
> > > > > Michal
> > > > >
> > > > > On Sun, Jun 23, 2024 at 10:09 PM Freddy Demiane
> > > > > <fdemi...@google.com.invalid>
> > > > > wrote:
> > > > >
> > > > > > Hello,
> > > > > >
> > > > > > Thank you for the comments! Indeed, +1 to the idea, I believe
> this
> > > > would
> > > > > be
> > > > > > a good step to increase the quality of providers. From our
> (Google)
> > > > side,
> > > > > > the dashboard's CI outputs the results to a database, which are
> > then
> > > > used
> > > > > > to generate an HTML page. Yet, generating and publishing a JSON
> or
> > a
> > > > > JUnit
> > > > > > XML style file would be a simple task for us. The information in
> > our
> > > > > > database is similar to the structure of the AWS providers json
> file
> > > > > >
> https://aws-mwaa.github.io/open-source/system-tests/dashboard.json
> > +
> > > > > > a field for logs. We also have an extra field that specifies the
> > > > > commit-id
> > > > > > against which the CI was run, which I believe is helpful in case
> > > users
> > > > > want
> > > > > > to know whether their PR was merged before or after a failure.
> > > > > > If we want to go with the junit-xml style format (I checked this
> > > > > reference
> > > > > > <
> > > > > >
> > > > >
> > > >
> > >
> >
> https://www.ibm.com/docs/en/developer-for-zos/16.0?topic=formats-junit-xml-format
> > > > > > >),
> > > > > > one thing I could think of is to make each "Dashboard CI run"
> > > generate
> > > > an
> > > > > > xml file where each test is represented by a testcase, which as
> > Jarek
> > > > > > mentioned, could be used in some way in the canary builds.
> > > > > > Let me know what you think.
> > > > > >
> > > > > > Best,
> > > > > > Freddy
> > > > > >
> > > > > >
> > > > > > On Fri, Jun 21, 2024 at 11:12 AM Jarek Potiuk <ja...@potiuk.com>
> > > > wrote:
> > > > > >
> > > > > > > This is a fantastic idea! I love it !
> > > > > > >
> > > > > > > It also has some very far reaching possible spin-offs in the
> > > future -
> > > > > > > literally few days ago, when I discussed some of the future
> > > security
> > > > > > > related work that we might want to do, there was a concept of
> > > having
> > > > a
> > > > > > sort
> > > > > > > of CI of all CIs where we (and by we I mean wider Python
> > ecosystem)
> > > > > could
> > > > > > > gather a status of pre-release versions of dependencies before
> > they
> > > > hit
> > > > > > > release stage, and some kind of interchange between those CI
> > > systems
> > > > > that
> > > > > > > will be machine-parseable is pretty much prerequisite for that.
> > So
> > > we
> > > > > > could
> > > > > > > generally try it out and sort out some issues, see how it works
> > in
> > > > our
> > > > > > > small "airflow" world, but in the future we might be able to
> use
> > > > > similar
> > > > > > > mechanisms to get alerts for a number of our dependencies - and
> > > even
> > > > > > > further than that, we could make such approach much more
> > > wide-spread
> > > > (I
> > > > > > am
> > > > > > > discussing it with people from Python Software
> > Foundation/Packaging
> > > > > team
> > > > > > /
> > > > > > > Python security, so there is a chance this might actually
> > > materialize
> > > > > in
> > > > > > a
> > > > > > > long term). This would be the first step.
> > > > > > >
> > > > > > > I think the first step for it could be rather simple and we do
> > not
> > > > have
> > > > > > to
> > > > > > > invent our own standard - we could easily start with junit-xml
> > > style
> > > > > > output
> > > > > > > produced by each dashboard and available under some URL that we
> > > could
> > > > > > pull
> > > > > > > in our canary builds and have a step in our canary builds that
> > > could
> > > > > > > aggregate multiple xmlunit files coming from various
> dashboards,
> > > > > display
> > > > > > > them as the output, and fail the job in case some tests are
> > failing
> > > > > (with
> > > > > > > maybe some thresholds). Pytest and a number of tools natively
> > > > supports
> > > > > > the
> > > > > > > junit-xml format, it's pretty established as machine-readable
> > test
> > > > > > results,
> > > > > > > and I think it has all we need to start with
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://docs.pytest.org/en/latest/how-to/usage.html#creating-junitxml-format-files
> > > > > > > .
> > > > > > > There is a lot of tooling around this format - including easy
> > ways
> > > > how
> > > > > we
> > > > > > > could possibly integrate it with Github Actions output (think
> > links
> > > > to
> > > > > > the
> > > > > > > tests that failed directly in GitHub UI), showing logs of
> failed
> > > > tests
> > > > > > etc.
> > > > > > > etc.
> > > > > > >
> > > > > > > If we can get the Astronomer, Amazon and Google team on board
> > with
> > > > it,
> > > > > we
> > > > > > > could likely implement a simple version quickly and iterate
> over
> > > it -
> > > > > > later
> > > > > > > we could think about possibly evolving that into a more
> > extensible
> > > > > > > approach.
> > > > > > >
> > > > > > > J.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Thu, Jun 20, 2024 at 11:27 PM Ferruzzi, Dennis
> > > > > > > <ferru...@amazon.com.invalid> wrote:
> > > > > > >
> > > > > > > > Congrats to the Google team for getting their dashboard live,
> > it
> > > > > looks
> > > > > > > > great!  I've been thinking of something for a while and
> thought
> > > I'd
> > > > > > > mention
> > > > > > > > it here.  I'm wearing a few different hats here so I'll try
> to
> > > > > clarify
> > > > > > > > context on my plural pronouns the best I can.
> > > > > > > >
> > > > > > > > Now that we [Providers] have a couple of big dashboards up,
> I'm
> > > > > curious
> > > > > > > if
> > > > > > > > we [Airflow dev community] might collaborate on a community
> > > > "optional
> > > > > > > > guideline" for a json (or yaml or whatever) format output on
> > the
> > > > > > > dashboards
> > > > > > > > for any providers interested in participating.  I'm not
> > > interested
> > > > in
> > > > > > (or
> > > > > > > > trying to) impose any kind of hard-line policy or standard
> > here,
> > > > but
> > > > > I
> > > > > > > > wonder if we [owners of the existing dashboards] might set
> some
> > > > > > > non-binding
> > > > > > > > precedent for future providers to join.  If others don't
> follow
> > > > suit,
> > > > > > > then
> > > > > > > > they wouldn't benefit from whatever uses folks come up with
> for
> > > the
> > > > > > data,
> > > > > > > > but I personally don't think we [Airflow] can or should try
> to
> > > > impose
> > > > > > > this
> > > > > > > > on providers.
> > > > > > > >
> > > > > > > > To my knowledge there are three provider-owned system test
> > > > dashboards
> > > > > > > > currently live, and I look forward to seeing more in time:
> > > > > > > >
> > > > > > > > Astronomer (found this LLM-specific one, not sure if there is
> > > > another
> > > > > > > > one): https://astronomer.github.io/llm-dags-dashboard/
> > > > > > > > AWS:
> > > > > >
> https://aws-mwaa.github.io/open-source/system-tests/dashboard.html
> > > > > > > > and
> > > > > >
> https://aws-mwaa.github.io/open-source/system-tests/dashboard.json
> > > > > > > > Google:
> > > > > > > >
> > > > >
> > https://storage.googleapis.com/providers-dashboard-html/dashboard.html
> > > > > > > >
> > > > > > > > Each was developed independently, and the path/name of the
> > Google
> > > > one
> > > > > > may
> > > > > > > > hint that there is already an alternative to the html view
> that
> > > I'm
> > > > > > just
> > > > > > > > not familiar with, so maybe we [the three providers] could
> > > > > collaborate
> > > > > > on
> > > > > > > > some precedent that others could follow?  We [AWS] already
> have
> > > > ours
> > > > > > > > exporting in json so discussion might start there and see
> where
> > > it
> > > > > > goes?
> > > > > > > > Either way... Even if we [Airflow] don't do anything with the
> > > > json, I
> > > > > > > bet a
> > > > > > > > user could find interesting things to build if we give them
> the
> > > > > tools.
> > > > > > > >  Maybe aggregating a dashboard which monitors (and alerts?)
> the
> > > > > status
> > > > > > of
> > > > > > > > the system tests which cover the operators their workflow
> > depends
> > > > on,
> > > > > > > > maybe?  Who knows what someone may come up with once they
> have
> > > the
> > > > > > tools
> > > > > > > to
> > > > > > > > mix and match the data from various providers.
> > > > > > > >
> > > > > > > > Is there any interest in the idea of a "standard json schema"
> > for
> > > > > these
> > > > > > > > and any future system test dashboards?
> > > > > > > >
> > > > > > > >
> > > > > > > >  - ferruzzi
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> >
> > --
> > Eugene
> >
>

Reply via email to