[roll] Roll fuchsia [fidl][dynsuite] flip around client tests.

Modify the client side setup the of the dynsuite to flip around where
tests are initiated. Previously, the unit testing framework would be set
up in each client, which would then connect to a discoverable harness
protocol. The client test would send the request for the particular
tests, and the harness would respond appropriate to the test being run.
This setup had some significant disadvantages.

The previous setup requires every client suite to implement every unit
test case. The biggest issue with this is that in order to ensure all
tests are run, every client suite has to make sure that it actually
includes a test for every dynsuite test case. That is very
decentralized, which would make it relatively easy to accidentally
forget a test case and miss a bug. It also means that if a test case is
skipped intentionally, it's harder to see which cases are missing. By
flipping around to have the harness connect to the language-spcific
runner and have each test case implemented in one place, its easier to
see which tests are enabled for a particular language: you just look at
`Runner.IsTestEnabled`.

Another issue is that having each client implement each test case is
that it reuires a greater degree of cooperation between the clients and
the harness. Essentially, every client must know which requests to make
for each test case, and they must communicate which test case is being
run to the harness so the harness can reply with the correct response.
This means both the client under test and harness both need to
understand the test case in order for the test to work, which is more
error prone and could cause gaps between different languages.

Changing to have all the tests implemented on the harness side has the
advantage that the client end doesn't need to know anything about what
test case is being run. All the client needs to do is make the requested
call and reply with the result. This has two main advantages. First, new
test cases can sometimes be added without additional changes to the
clients, as long as the new tests use the same method calls as the
existing tests. Second, what the client needs to implement is fairly
clearly described by the FIDL protocols involved, which is less
error-prone than having the clients need to know any details of the test
cases, and if the client does make implementation mistakes, those
mistakes can be caught by the common test case, rather than by silently
allowing test cases to succeed when the should have failed.

To support unknown interaction testing, this change also renames the
Target to ClosedTarget and enables the unknown interaction experiment on
the fidl library. When adding new methods to the Runner to trigger
particuler client side calls, those Runner methods will take a Target
protocol appropriate to the test to be run.

Original-Bug: 102339, 88366

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/710951
Original-Revision: c713b917d7926aa6bc2dc78aa62403cddecb5ce5
GitOrigin-RevId: 150bf412aa465aa1fb504cc764d7c32438506e93
Change-Id: I9c493533da512dc254628a3e98cd5b7635ccdfb0
1 file changed
tree: d57d0f3127997b925a17d32432308b8940a79191
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
  13. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.