-
Notifications
You must be signed in to change notification settings - Fork 6k
Initial config for framework_smoke test #42467
Changes from all commits
74b215e
ab8625b
7e56769
783401d
06656f7
f2ae376
dd4fe0b
ed0da1e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| { | ||
| "builds": [ | ||
| { | ||
| "archives": [ | ||
| { | ||
| "name": "host_debug_unopt", | ||
| "base_path": "out/host_debug_unopt/zip_archives/", | ||
| "type": "gcs", | ||
| "include_paths": [ | ||
| "out/host_debug_unopt/zip_archives/dart-sdk-linux-x64.zip" | ||
| ], | ||
| "realm": "production" | ||
| } | ||
| ], | ||
| "drone_dimensions": [ | ||
| "device_type=none", | ||
| "os=Linux" | ||
| ], | ||
| "gn": [ | ||
| "--unoptimized", | ||
| "--prebuilt-dart-sdk" | ||
| ], | ||
| "name": "host_debug_unopt", | ||
| "ninja": { | ||
| "config": "host_debug_unopt", | ||
| "targets": [ | ||
| "flutter/build/archives:dart_sdk_archive" | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm a bit confused about how this is working. The v1 recipe does a complete The tests are using Maybe the tests in the framework repo only need the Dart SDK? If that's the case, then if there's a change in the framework repo which causes the tests below to need more engine artifacts, then that framework change will break the engine tree. To avoid that, I think the engine v2 recipe should match the engine v1 behavior, and build all of the Engine artifacts, and not just the Dart SDK archive.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As far as I understand this is running the framework unit tests, if other artifacts apart from dart are needed I'd expect the tests to go to a different category e.g. widget test. This also brings the question if this test is adding value to the engine? is there any history of this test identifying issues with the engine?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nvm, I see that widgets shard is already included.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The dart-sdk-linux-x64.zip is downloaded when running To confirm for v1 test behavior: do we know what artifacts these two test steps (v1 consists of only these two) consume in addition to the
If there is no clear answer, does that mean we have to use the
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As one example, I'm surprised that these tests don't use
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
both
The log shows all tests passed (ignore the warning), though we are not using
Actually this seems not the case. See one log for v1 framework_smoke_tests, where unit tests under
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
If the build target and archive config only says to build and upload the Dart SDK, why does
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, I see why. We have another config Will this cause contamination between targets? Do we need to separate artifacts based on configs? /cc @godofredoc
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I ran one of the tests in that log locally with Log
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks @goderbauer for the explanation. Confirmed using led: https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8778925221459687985/+/u/Run_framework_tests_widgets_tests/stdout Same as |
||
| ] | ||
| } | ||
| } | ||
| ], | ||
| "tests": [ | ||
| { | ||
| "name": "test: lint host_debug widgets", | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It would be really helpful to have comments or links to the test commands that this will actually run. One advantage of the engine v1 recipe was that it was totally unambiguous what commands would be run. For example here: https://flutter.googlesource.com/recipes/+/refs/heads/main/recipes/engine/framework_smoke.py#85
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For example, it would be great if the config here was self-documenting, and it was obvious how to add more tests. Right now, these test configs are more-or-less full of magic strings, and it's not clear where to mine more magic strings from.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Json does not support comments. To be able to add comments the configs will need to get migrated to yaml or proto. To mitigate this I added docs to the README file in build configuration directory. The magic strings are coming from the framework test runner. Unfortunately it has no owner, no structure and zero documentation.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This is usually accomplished by adding non-interpreted fields like
@keyonghan How did you find the strings that are in this PR?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To be honest, this is not a trivial thing even though I have been relatively familiar with ci.yaml, recipes, and some parts of test runners.. This is how I did:
As @godofredoc mentions, missing ownership of these test runners makes it difficult to achieve this.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think what I'm asking has anything to do with ownership of the tests. All I want to know is where do these strings come from. For example, it looks like below, the https://github.com/flutter/flutter/blob/master/.ci.yaml#L498. Can you please add a note somewhere in this file that the
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added a comment for both shard and validation.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks! |
||
| "drone_dimensions": [ | ||
| "device_type=none", | ||
| "os=Linux" | ||
| ], | ||
| "dependencies": [ | ||
| "host_debug_unopt" | ||
| ], | ||
| "shard": "framework_tests", | ||
| "subshard": "widgets" | ||
| }, | ||
| { | ||
| "name": "test: lint host_debug library", | ||
| "drone_dimensions": [ | ||
| "device_type=none", | ||
| "os=Linux" | ||
| ], | ||
| "dependencies": [ | ||
| "host_debug_unopt" | ||
| ], | ||
| "_comment": "shard/subshard strings are defined in framework test runner: dev/bots/test.dart, and are consistent with properties defined in framework .ciyaml targets", | ||
| "shard": "framework_tests", | ||
| "subshard": "libraries" | ||
| }, | ||
| { | ||
| "name": "test: flutter analyze", | ||
| "drone_dimensions": [ | ||
| "device_type=none", | ||
| "os=Linux" | ||
| ], | ||
| "dependencies": [ | ||
| "host_debug_unopt" | ||
| ], | ||
| "_comment": "validation strings are consistent with properties defined in framework .ciyaml targets", | ||
| "validation": "analyze", | ||
| "validation_name": "Analyze" | ||
| } | ||
| ] | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As a workaround before the build graph is designed and implemented. The
gnstep can specify a different--target-dirto avoid conflicts: https://github.com/flutter/engine/blob/main/tools/gn#L952.