diff --git a/release_notes.md b/release_notes.md index 0fc4f6cc99..3b41ec0b68 100644 --- a/release_notes.md +++ b/release_notes.md @@ -6,7 +6,7 @@ - [#897](https://github.com/Flank/flank/pull/897) Added option to print iOS available versions to test against. ([piotradamczyk5](https://github.com/piotradamczyk5)) - [#901](https://github.com/Flank/flank/pull/901) Added option to print Android and iOS available test-environment. ([piotradamczyk5](https://github.com/piotradamczyk5)) - [#904](https://github.com/Flank/flank/pull/904) Added option to print provided software. ([piotradamczyk5](https://github.com/piotradamczyk5)) -- +- [#906](https://github.com/Flank/flank/pull/906) Added option to print network profiles. ([adamfilipow92](https://github.com/adamfilipow92)) - - diff --git a/test_runner/docs/ascii/flank.jar_-android-models-list.adoc b/test_runner/docs/ascii/flank.jar_-android-models-list.adoc new file mode 100644 index 0000000000..17d3a73515 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-android-models-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-android-models-list - Print current list of devices available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + android models list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of Android devices available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-android-models.adoc b/test_runner/docs/ascii/flank.jar_-android-models.adoc new file mode 100644 index 0000000000..0f72426412 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-android-models.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-android-models - Information about available models + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + android models* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available models. For example prints list of available models to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + Print current list of devices available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-android-run.adoc b/test_runner/docs/ascii/flank.jar_-android-run.adoc index 2c132ce02b..0d515aed03 100644 --- a/test_runner/docs/ascii/flank.jar_-android-run.adoc +++ b/test_runner/docs/ascii/flank.jar_-android-run.adoc @@ -121,6 +121,9 @@ Configuration is read from flank.yml *--shard-time*=__:: The max amount of seconds each shard should run. +*--project*=__:: + The Google Cloud Platform project name to use for this invocation. If omitted, then the project from the service account credential is used + *--num-test-runs*=__:: The amount of times to run the test executions. @@ -139,9 +142,6 @@ Configuration is read from flank.yml *--files-to-download*=__[,__...]:: A list of paths that will be downloaded from the resulting bucket to the local results folder after the test is complete. These must be absolute paths (for example, --files-to-download /images/tempDir1,/data/local/tmp/tempDir2). Path names are restricted to the characters a-zA-Z0-9_-./+. -*--project*=__:: - The Google Cloud Platform project name to use for this invocation. If omitted, then the project from the service account credential is used - *--local-result-dir*=__:: Saves test result to this local folder. Deleted before each run. diff --git a/test_runner/docs/ascii/flank.jar_-android-test-environment.adoc b/test_runner/docs/ascii/flank.jar_-android-test-environment.adoc new file mode 100644 index 0000000000..4c5553896f --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-android-test-environment.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-android-test-environment - Print available devices, OS versions, provided software list and network configuration to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + android test-environment* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print available Android devices, Android OS versions list, provided software and network configuration to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-android-versions-list.adoc b/test_runner/docs/ascii/flank.jar_-android-versions-list.adoc new file mode 100644 index 0000000000..16183085ec --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-android-versions-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-android-versions-list - List of OS versions available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + android versions list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of Android OS versions available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-android-versions.adoc b/test_runner/docs/ascii/flank.jar_-android-versions.adoc new file mode 100644 index 0000000000..0402f5a5b8 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-android-versions.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-android-versions - Information about available software versions + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + android versions* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available software versions. For example prints list of available software versions + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + List of OS versions available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-android.adoc b/test_runner/docs/ascii/flank.jar_-android.adoc index 11bb9c6a36..0087dcc265 100644 --- a/test_runner/docs/ascii/flank.jar_-android.adoc +++ b/test_runner/docs/ascii/flank.jar_-android.adoc @@ -39,7 +39,7 @@ flank.jar Information about available software versions *test-environment*:: - Print available devices and OS versions list to test against + Print available devices, OS versions, provided software list and network configuration to test against // end::picocli-generated-man-section-commands[] diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-models-list.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-models-list.adoc new file mode 100644 index 0000000000..32aa61e81a --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-models-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-android-models-list - Print current list of devices available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test android models list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of Android devices available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-models.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-models.adoc new file mode 100644 index 0000000000..2fef9c6b21 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-models.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-android-models - Information about available models + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test android models* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available models. For example prints list of available models to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + Print current list of devices available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-run.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-run.adoc index b14b54c548..56ef583067 100644 --- a/test_runner/docs/ascii/flank.jar_-firebase-test-android-run.adoc +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-run.adoc @@ -133,6 +133,9 @@ Configuration is read from flank.yml *--shard-time*=__:: The max amount of seconds each shard should run. +*--project*=__:: + The Google Cloud Platform project name to use for this invocation. If omitted, then the project from the service account credential is used + *--num-test-runs*=__:: The amount of times to run the test executions. @@ -151,9 +154,6 @@ Configuration is read from flank.yml *--files-to-download*=__[,__...]:: A list of paths that will be downloaded from the resulting bucket to the local results folder after the test is complete. These must be absolute paths (for example, --files-to-download /images/tempDir1,/data/local/tmp/tempDir2). Path names are restricted to the characters a-zA-Z0-9_-./+. -*--project*=__:: - The Google Cloud Platform project name to use for this invocation. If omitted, then the project from the service account credential is used - *--local-result-dir*=__:: Saves test result to this local folder. Deleted before each run. diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-test-environment.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-test-environment.adoc new file mode 100644 index 0000000000..332ee77266 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-test-environment.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-android-test-environment - Print available devices, OS versions, provided software list and network configuration to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test android test-environment* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print available Android devices, Android OS versions list, provided software and network configuration to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-versions-list.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-versions-list.adoc new file mode 100644 index 0000000000..13e0599fbc --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-versions-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-android-versions-list - List of OS versions available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test android versions list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of Android OS versions available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-versions.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-versions.adoc new file mode 100644 index 0000000000..1f8a538ea4 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-versions.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-android-versions - Information about available software versions + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test android versions* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available software versions. For example prints list of available software versions + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + List of OS versions available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android.adoc index c004c66304..19b5eb7916 100644 --- a/test_runner/docs/ascii/flank.jar_-firebase-test-android.adoc +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android.adoc @@ -39,7 +39,7 @@ flank.jar Information about available software versions *test-environment*:: - Print available devices and OS versions list to test against + Print available devices, OS versions, provided software list and network configuration to test against // end::picocli-generated-man-section-commands[] diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-models-list.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-models-list.adoc new file mode 100644 index 0000000000..4da66d3c5d --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-models-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-ios-models-list - Print current list of devices available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test ios models list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of iOS devices available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-models.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-models.adoc new file mode 100644 index 0000000000..1a6724faf5 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-models.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-ios-models - Information about available models + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test ios models* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available models. For example prints list of available models to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + Print current list of devices available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-run.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-run.adoc index 1994bc0bca..7538b24237 100644 --- a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-run.adoc +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-run.adoc @@ -112,6 +112,9 @@ Configuration is read from flank.yml *--shard-time*=__:: The max amount of seconds each shard should run. +*--project*=__:: + The Google Cloud Platform project name to use for this invocation. If omitted, then the project from the service account credential is used + *--num-test-runs*=__:: The amount of times to run the test executions. @@ -130,9 +133,6 @@ Configuration is read from flank.yml *--files-to-download*=__[,__...]:: A list of paths that will be downloaded from the resulting bucket to the local results folder after the test is complete. These must be absolute paths (for example, --files-to-download /images/tempDir1,/data/local/tmp/tempDir2). Path names are restricted to the characters a-zA-Z0-9_-./+. -*--project*=__:: - The Google Cloud Platform project name to use for this invocation. If omitted, then the project from the service account credential is used - *--local-result-dir*=__:: Saves test result to this local folder. Deleted before each run. @@ -154,15 +154,15 @@ Configuration is read from flank.yml *--disable-results-upload*:: Disables flank results upload on gcloud storage. -*--test*=__:: - The path to the test package (a zip file containing the iOS app and XCTest files). The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. Note: any .xctestrun file in this zip file will be ignored if --xctestrun-file is specified. - *--xctestrun-file*=__:: The path to an .xctestrun file that will override any .xctestrun file contained in the --test package. Because the .xctestrun file contains environment variables along with test methods to run and/or ignore, this can be useful for customizing or sharding test suites. The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. *--xcode-version*=__:: The version of Xcode that should be used to run an XCTest. Defaults to the latest Xcode version supported in Firebase Test Lab. This Xcode version must be supported by all iOS versions selected in the test matrix. +*--test*=__:: + The path to the test package (a zip file containing the iOS app and XCTest files). The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. Note: any .xctestrun file in this zip file will be ignored if --xctestrun-file is specified. + *--test-targets*=__[,__...]:: A list of one or more test method names to run (default: run all test targets). diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-test-environment.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-test-environment.adoc new file mode 100644 index 0000000000..b7f9828989 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-test-environment.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-ios-test-environment - Print available devices, OS versions, provided software list and network configuration to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test ios test-environment* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print available iOS devices, iOS OS versions list, provided software and network configuration to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-versions-list.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-versions-list.adoc new file mode 100644 index 0000000000..05f067f545 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-versions-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-ios-versions-list - List of OS versions available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test ios versions list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of iOS versions available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-versions.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-versions.adoc new file mode 100644 index 0000000000..085f3e147f --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-versions.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-ios-versions - Information about available software versions + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test ios versions* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available software versions. For example prints list of available software versions + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + List of OS versions available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios.adoc index 68c65073e8..b112056a05 100644 --- a/test_runner/docs/ascii/flank.jar_-firebase-test-ios.adoc +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios.adoc @@ -39,7 +39,7 @@ flank.jar Information about available software versions *test-environment*:: - Print available devices and OS versions list to test against + Print available devices, OS versions, provided software list and network configuration to test against // end::picocli-generated-man-section-commands[] diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-provided-software-list.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-provided-software-list.adoc new file mode 100644 index 0000000000..7a3e825f15 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-provided-software-list.adoc @@ -0,0 +1,26 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-provided-software-list - The software environment provided by TestExecutionService. + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test provided-software list* + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + + + +// end::picocli-generated-man-section-description[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-provided-software.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-provided-software.adoc new file mode 100644 index 0000000000..7c12d2b67c --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-provided-software.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-provided-software - + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test provided-software* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + + + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + The software environment provided by TestExecutionService. + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test.adoc index eaf60d706e..084d337f73 100644 --- a/test_runner/docs/ascii/flank.jar_-firebase-test.adoc +++ b/test_runner/docs/ascii/flank.jar_-firebase-test.adoc @@ -40,4 +40,4 @@ flank.jar // end::picocli-generated-man-section-commands[] -// end::picocli-generated-full-manpage[] +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-ios-models-list.adoc b/test_runner/docs/ascii/flank.jar_-ios-models-list.adoc new file mode 100644 index 0000000000..d23000868e --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-ios-models-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-ios-models-list - Print current list of devices available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + ios models list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of iOS devices available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-ios-models.adoc b/test_runner/docs/ascii/flank.jar_-ios-models.adoc new file mode 100644 index 0000000000..0f5c2551fb --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-ios-models.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-ios-models - Information about available models + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + ios models* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available models. For example prints list of available models to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + Print current list of devices available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-ios-run.adoc b/test_runner/docs/ascii/flank.jar_-ios-run.adoc index 3ed26efc1e..0f511825e4 100644 --- a/test_runner/docs/ascii/flank.jar_-ios-run.adoc +++ b/test_runner/docs/ascii/flank.jar_-ios-run.adoc @@ -104,6 +104,9 @@ Configuration is read from flank.yml *--shard-time*=__:: The max amount of seconds each shard should run. +*--project*=__:: + The Google Cloud Platform project name to use for this invocation. If omitted, then the project from the service account credential is used + *--num-test-runs*=__:: The amount of times to run the test executions. @@ -122,9 +125,6 @@ Configuration is read from flank.yml *--files-to-download*=__[,__...]:: A list of paths that will be downloaded from the resulting bucket to the local results folder after the test is complete. These must be absolute paths (for example, --files-to-download /images/tempDir1,/data/local/tmp/tempDir2). Path names are restricted to the characters a-zA-Z0-9_-./+. -*--project*=__:: - The Google Cloud Platform project name to use for this invocation. If omitted, then the project from the service account credential is used - *--local-result-dir*=__:: Saves test result to this local folder. Deleted before each run. @@ -146,15 +146,15 @@ Configuration is read from flank.yml *--disable-results-upload*:: Disables flank results upload on gcloud storage. -*--test*=__:: - The path to the test package (a zip file containing the iOS app and XCTest files). The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. Note: any .xctestrun file in this zip file will be ignored if --xctestrun-file is specified. - *--xctestrun-file*=__:: The path to an .xctestrun file that will override any .xctestrun file contained in the --test package. Because the .xctestrun file contains environment variables along with test methods to run and/or ignore, this can be useful for customizing or sharding test suites. The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. *--xcode-version*=__:: The version of Xcode that should be used to run an XCTest. Defaults to the latest Xcode version supported in Firebase Test Lab. This Xcode version must be supported by all iOS versions selected in the test matrix. +*--test*=__:: + The path to the test package (a zip file containing the iOS app and XCTest files). The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. Note: any .xctestrun file in this zip file will be ignored if --xctestrun-file is specified. + *--test-targets*=__[,__...]:: A list of one or more test method names to run (default: run all test targets). diff --git a/test_runner/docs/ascii/flank.jar_-ios-test-environment.adoc b/test_runner/docs/ascii/flank.jar_-ios-test-environment.adoc new file mode 100644 index 0000000000..eb46b5d284 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-ios-test-environment.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-ios-test-environment - Print available devices, OS versions, provided software list and network configuration to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + ios test-environment* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print available iOS devices, iOS OS versions list, provided software and network configuration to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-ios-versions-list.adoc b/test_runner/docs/ascii/flank.jar_-ios-versions-list.adoc new file mode 100644 index 0000000000..b8b2ca4262 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-ios-versions-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-ios-versions-list - List of OS versions available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + ios versions list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of iOS versions available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-ios-versions.adoc b/test_runner/docs/ascii/flank.jar_-ios-versions.adoc new file mode 100644 index 0000000000..dab2ec5bf4 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-ios-versions.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-ios-versions - Information about available software versions + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + ios versions* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available software versions. For example prints list of available software versions + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + List of OS versions available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-ios.adoc b/test_runner/docs/ascii/flank.jar_-ios.adoc index 99082ef300..8b91852d00 100644 --- a/test_runner/docs/ascii/flank.jar_-ios.adoc +++ b/test_runner/docs/ascii/flank.jar_-ios.adoc @@ -39,7 +39,7 @@ flank.jar Information about available software versions *test-environment*:: - Print available devices and OS versions list to test against + Print available devices, OS versions, provided software list and network configuration to test against // end::picocli-generated-man-section-commands[] diff --git a/test_runner/docs/ascii/flank.jar_-network-profiles-list.adoc b/test_runner/docs/ascii/flank.jar_-network-profiles-list.adoc new file mode 100644 index 0000000000..16f5710818 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-network-profiles-list.adoc @@ -0,0 +1,26 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-network-profiles-list - List all network profiles available for testing + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + network-profiles list* + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + + + +// end::picocli-generated-man-section-description[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-network-profiles.adoc b/test_runner/docs/ascii/flank.jar_-network-profiles.adoc new file mode 100644 index 0000000000..79a95c6200 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-network-profiles.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-network-profiles - + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + network-profiles* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + + + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + List all network profiles available for testing + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-provided-software-list.adoc b/test_runner/docs/ascii/flank.jar_-provided-software-list.adoc new file mode 100644 index 0000000000..51efc782f5 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-provided-software-list.adoc @@ -0,0 +1,26 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-provided-software-list - The software environment provided by TestExecutionService. + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + provided-software list* + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + + + +// end::picocli-generated-man-section-description[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-provided-software.adoc b/test_runner/docs/ascii/flank.jar_-provided-software.adoc new file mode 100644 index 0000000000..071a37997a --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-provided-software.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-provided-software - + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + provided-software* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + + + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + The software environment provided by TestExecutionService. + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_.adoc b/test_runner/docs/ascii/flank.jar_.adoc index 7dee54e5af..6391f7e5c8 100644 --- a/test_runner/docs/ascii/flank.jar_.adoc +++ b/test_runner/docs/ascii/flank.jar_.adoc @@ -58,6 +58,9 @@ flank.jar *provided-software*:: +*network-profiles*:: + + // end::picocli-generated-man-section-commands[] -// end::picocli-generated-full-manpage[] +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/src/main/kotlin/ftl/Main.kt b/test_runner/src/main/kotlin/ftl/Main.kt index f207172219..e3dbb03816 100644 --- a/test_runner/src/main/kotlin/ftl/Main.kt +++ b/test_runner/src/main/kotlin/ftl/Main.kt @@ -6,6 +6,7 @@ import ftl.cli.firebase.CancelCommand import ftl.cli.firebase.RefreshCommand import ftl.cli.firebase.test.AndroidCommand import ftl.cli.firebase.test.IosCommand +import ftl.cli.firebase.test.NetworkProfilesCommand import ftl.cli.firebase.test.ProvidedSoftwareCommand import ftl.log.setDebugLogging import ftl.util.readRevision @@ -23,7 +24,8 @@ import picocli.CommandLine RefreshCommand::class, CancelCommand::class, AuthCommand::class, - ProvidedSoftwareCommand::class + ProvidedSoftwareCommand::class, + NetworkProfilesCommand::class ] ) class Main : Runnable { diff --git a/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/AndroidTestEnvironmentCommand.kt b/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/AndroidTestEnvironmentCommand.kt index 77f074d755..09e08199e1 100644 --- a/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/AndroidTestEnvironmentCommand.kt +++ b/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/AndroidTestEnvironmentCommand.kt @@ -5,6 +5,7 @@ import ftl.android.AndroidCatalog.supportedVersionsAsTable import ftl.args.AndroidArgs import ftl.config.FtlConstants import ftl.environment.providedSoftwareAsTable +import ftl.environment.networkConfigurationAsTable import picocli.CommandLine import java.nio.file.Paths @@ -15,8 +16,8 @@ import java.nio.file.Paths descriptionHeading = "%n@|bold,underline Description:|@%n%n", parameterListHeading = "%n@|bold,underline Parameters:|@%n", optionListHeading = "%n@|bold,underline Options:|@%n", - header = ["Print available devices and OS versions list to test against"], - description = ["Print available Android devices and Android OS versions list to test against"], + header = ["Print available devices, OS versions, provided software list and network configuration to test against"], + description = ["Print available Android devices, Android OS versions list, provided software and network configuration to test against"], usageHelpAutoWidth = true ) class AndroidTestEnvironmentCommand : Runnable { @@ -24,6 +25,7 @@ class AndroidTestEnvironmentCommand : Runnable { println(devicesCatalogAsTable(AndroidArgs.load(Paths.get(configPath)).project)) println(supportedVersionsAsTable(AndroidArgs.load(Paths.get(configPath)).project)) println(providedSoftwareAsTable()) + println(networkConfigurationAsTable()) } @CommandLine.Option(names = ["-c", "--config"], description = ["YAML config file path"]) diff --git a/test_runner/src/main/kotlin/ftl/cli/firebase/test/ios/IosTestEnvironmentCommand.kt b/test_runner/src/main/kotlin/ftl/cli/firebase/test/ios/IosTestEnvironmentCommand.kt index 64a4a50141..5550cd9600 100644 --- a/test_runner/src/main/kotlin/ftl/cli/firebase/test/ios/IosTestEnvironmentCommand.kt +++ b/test_runner/src/main/kotlin/ftl/cli/firebase/test/ios/IosTestEnvironmentCommand.kt @@ -3,6 +3,7 @@ package ftl.cli.firebase.test.ios import ftl.args.IosArgs import ftl.config.FtlConstants import ftl.environment.providedSoftwareAsTable +import ftl.environment.networkConfigurationAsTable import ftl.ios.IosCatalog.devicesCatalogAsTable import ftl.ios.IosCatalog.softwareVersionsAsTable import picocli.CommandLine @@ -15,8 +16,8 @@ import java.nio.file.Paths descriptionHeading = "%n@|bold,underline Description:|@%n%n", parameterListHeading = "%n@|bold,underline Parameters:|@%n", optionListHeading = "%n@|bold,underline Options:|@%n", - header = ["Print available devices and OS versions list to test against"], - description = ["Print available iOS devices and iOS versions list to test against"], + header = ["Print available devices, OS versions, provided software list and network configuration to test against"], + description = ["Print available iOS devices, iOS OS versions list, provided software and network configuration to test against"], usageHelpAutoWidth = true ) class IosTestEnvironmentCommand : Runnable { @@ -24,6 +25,7 @@ class IosTestEnvironmentCommand : Runnable { println(devicesCatalogAsTable(IosArgs.load(Paths.get(configPath)).project)) println(softwareVersionsAsTable(IosArgs.load(Paths.get(configPath)).project)) println(providedSoftwareAsTable()) + println(networkConfigurationAsTable()) } @CommandLine.Option(names = ["-c", "--config"], description = ["YAML config file path"]) diff --git a/test_runner/src/main/kotlin/ftl/cli/firebase/test/networkprofiles/NetworkProfilesListCommand.kt b/test_runner/src/main/kotlin/ftl/cli/firebase/test/networkprofiles/NetworkProfilesListCommand.kt index 3e359b11fb..c9e3ba008f 100644 --- a/test_runner/src/main/kotlin/ftl/cli/firebase/test/networkprofiles/NetworkProfilesListCommand.kt +++ b/test_runner/src/main/kotlin/ftl/cli/firebase/test/networkprofiles/NetworkProfilesListCommand.kt @@ -1,8 +1,6 @@ package ftl.cli.firebase.test.networkprofiles -import ftl.gc.GcTesting -import ftl.http.executeWithRetry -import ftl.run.common.prettyPrint +import ftl.environment.networkConfigurationAsTable import picocli.CommandLine @CommandLine.Command( @@ -19,13 +17,6 @@ import picocli.CommandLine class NetworkProfilesListCommand : Runnable { override fun run() { println("fetching available network profiles...") - val configurations = GcTesting.get.testEnvironmentCatalog() - .get("NETWORK_CONFIGURATION") - .executeWithRetry() - ?.networkConfigurationCatalog - ?.configurations - ?: emptyList() - println() - println(prettyPrint.toJson(configurations)) + println(networkConfigurationAsTable()) } } diff --git a/test_runner/src/main/kotlin/ftl/environment/ListNetworkConfiguration.kt b/test_runner/src/main/kotlin/ftl/environment/ListNetworkConfiguration.kt new file mode 100644 index 0000000000..13d15b3a90 --- /dev/null +++ b/test_runner/src/main/kotlin/ftl/environment/ListNetworkConfiguration.kt @@ -0,0 +1,53 @@ +package ftl.environment + +import com.google.api.services.testing.model.NetworkConfiguration +import ftl.util.TableStyle +import ftl.util.buildTable + +fun List.asPrintableTable() = createConfigurationDetails().createConfigurationsTable() + +private fun List.createConfigurationDetails() = fold(mutableMapOf>()) { networkInfo, networkConfiguration -> + networkInfo.apply { + getOrCreateList(PROFILE_ID).add(" ") + getOrCreateList(PROFILE_ID).add(networkConfiguration.id) + + getOrCreateList(RULE).add(RULE_UP) + getOrCreateList(RULE).add(RULE_DOWN) + + getOrCreateList(DELAY).add(networkConfiguration.upRule.delay.orEmpty()) + getOrCreateList(DELAY).add(networkConfiguration.downRule.delay.orEmpty()) + + getOrCreateList(LOSS_RATION).add(networkConfiguration.upRule.packetLossRatio?.toString().orEmpty()) + getOrCreateList(LOSS_RATION).add(networkConfiguration.downRule.packetLossRatio?.toString().orEmpty()) + + getOrCreateList(DUPLICATION_RATION).add(networkConfiguration.upRule.packetDuplicationRatio?.toString().orEmpty()) + getOrCreateList(DUPLICATION_RATION).add(networkConfiguration.downRule.packetDuplicationRatio?.toString().orEmpty()) + + getOrCreateList(BANDWIDTH).add(networkConfiguration.upRule.bandwidth?.toString().orEmpty()) + getOrCreateList(BANDWIDTH).add(networkConfiguration.downRule.bandwidth?.toString().orEmpty()) + + getOrCreateList(BURST).add(networkConfiguration.upRule.burst?.toString().orEmpty()) + getOrCreateList(BURST).add(networkConfiguration.downRule.burst?.toString().orEmpty()) + } +} + +private fun TestEnvironmentInfo.createConfigurationsTable() = buildTable( + createTableColumnFor(PROFILE_ID), + createTableColumnFor(RULE), + createTableColumnFor(DELAY), + createTableColumnFor(LOSS_RATION), + createTableColumnFor(DUPLICATION_RATION), + createTableColumnFor(BANDWIDTH), + createTableColumnFor(BURST), + tableStyle = TableStyle.ROW_SEPARATOR +) + +private const val PROFILE_ID = "PROFILE_ID" +private const val RULE = "RULE" +private const val RULE_UP = "up" +private const val RULE_DOWN = "down" +private const val DELAY = "DELAY" +private const val LOSS_RATION = "LOSS_RATIO" +private const val DUPLICATION_RATION = "DUPLICATION_RATIO" +private const val BANDWIDTH = "BANDWIDTH" +private const val BURST = "BURST" diff --git a/test_runner/src/main/kotlin/ftl/environment/NetworkConfigurationCatalog.kt b/test_runner/src/main/kotlin/ftl/environment/NetworkConfigurationCatalog.kt new file mode 100644 index 0000000000..dd35bd4aad --- /dev/null +++ b/test_runner/src/main/kotlin/ftl/environment/NetworkConfigurationCatalog.kt @@ -0,0 +1,13 @@ +package ftl.environment + +import ftl.gc.GcTesting +import ftl.http.executeWithRetry + +fun networkConfigurationAsTable() = networkConfiguration().asPrintableTable() + +private fun networkConfiguration() = GcTesting.get.testEnvironmentCatalog() + .get("NETWORK_CONFIGURATION") + .executeWithRetry() + ?.networkConfigurationCatalog + ?.configurations + .orEmpty() diff --git a/test_runner/src/main/kotlin/ftl/gc/GcTesting.kt b/test_runner/src/main/kotlin/ftl/gc/GcTesting.kt index 05a93f7bc0..2cc1976a8e 100644 --- a/test_runner/src/main/kotlin/ftl/gc/GcTesting.kt +++ b/test_runner/src/main/kotlin/ftl/gc/GcTesting.kt @@ -8,7 +8,6 @@ import ftl.config.FtlConstants.httpCredential import ftl.config.FtlConstants.httpTransport object GcTesting { - val get: Testing by lazy { val builder = Testing.Builder(httpTransport, JSON_FACTORY, httpCredential) .setApplicationName(applicationName) diff --git a/test_runner/src/main/kotlin/ftl/util/LogTableBuilder.kt b/test_runner/src/main/kotlin/ftl/util/LogTableBuilder.kt index 589dddb696..c95512c81d 100644 --- a/test_runner/src/main/kotlin/ftl/util/LogTableBuilder.kt +++ b/test_runner/src/main/kotlin/ftl/util/LogTableBuilder.kt @@ -2,6 +2,11 @@ package ftl.util import com.google.common.annotations.VisibleForTesting +enum class TableStyle { + DEFAULT, + ROW_SEPARATOR +} + data class TableColumn( val header: String, val data: List, @@ -15,28 +20,49 @@ private data class DataWithSize( ) private const val DEFAULT_COLUMN_PADDING = 2 -@VisibleForTesting const val TABLE_HORIZONTAL_LINE = '─' -@VisibleForTesting const val TABLE_VERTICAL_LINE = '│' -@VisibleForTesting const val START_TABLE_START_CHAR = '┌' -@VisibleForTesting const val START_TABLE_MIDDLE_CHAR = '┬' -@VisibleForTesting const val START_TABLE_END_CHAR = '┐' -@VisibleForTesting const val MIDDLE_TABLE_START_CHAR = '├' -@VisibleForTesting const val MIDDLE_TABLE_MIDDLE_CHAR = '┼' -@VisibleForTesting const val MIDDLE_TABLE_END_CHAR = '┤' -@VisibleForTesting const val END_TABLE_START_CHAR = '└' -@VisibleForTesting const val END_TABLE_MIDDLE_CHAR = '┴' -@VisibleForTesting const val END_TABLE_END_CHAR = '┘' - -fun buildTable(vararg tableColumns: TableColumn): String { + +@VisibleForTesting +const val TABLE_HORIZONTAL_LINE = '─' + +@VisibleForTesting +const val TABLE_VERTICAL_LINE = '│' + +@VisibleForTesting +const val START_TABLE_START_CHAR = '┌' + +@VisibleForTesting +const val START_TABLE_MIDDLE_CHAR = '┬' + +@VisibleForTesting +const val START_TABLE_END_CHAR = '┐' + +@VisibleForTesting +const val MIDDLE_TABLE_START_CHAR = '├' + +@VisibleForTesting +const val MIDDLE_TABLE_MIDDLE_CHAR = '┼' + +@VisibleForTesting +const val MIDDLE_TABLE_END_CHAR = '┤' + +@VisibleForTesting +const val END_TABLE_START_CHAR = '└' + +@VisibleForTesting +const val END_TABLE_MIDDLE_CHAR = '┴' + +@VisibleForTesting +const val END_TABLE_END_CHAR = '┘' + +fun buildTable(vararg tableColumns: TableColumn, tableStyle: TableStyle = TableStyle.DEFAULT): String { val rowSizes = tableColumns.map { it.columnSize } val builder = StringBuilder().apply { startTable(rowSizes) tableColumns.map { DataWithSize(it.header, it.columnSize) }.apply { appendDataRow(this) } rowSeparator(rowSizes) - appendData(tableColumns) + appendData(tableColumns, rowSizes, tableStyle) endTable(rowSizes) } - return builder.toString() } @@ -60,9 +86,8 @@ private fun StringBuilder.rowSeparator(rowSizes: List) { appendln() } -private fun StringBuilder.appendData(tableColumns: Array) { +private fun StringBuilder.appendData(tableColumns: Array, rowSizes: List, tableStyle: TableStyle) { val rowCount = (tableColumns.maxBy { it.data.size } ?: tableColumns.first()).data.size - (0 until rowCount) .map { rowNumber -> tableColumns.map { @@ -73,7 +98,11 @@ private fun StringBuilder.appendData(tableColumns: Array) { else DataWithSize(color.applyTo(data), columnSize + color.additionalLengthWhenApplied) } } - .forEach { appendDataRow(it) } + .forEachIndexed { index, list -> + appendDataRow(list) + if (tableStyle == TableStyle.ROW_SEPARATOR && index < rowCount - 1 && list.first().data.isNotBlank()) + rowSeparator(rowSizes) + } } private fun StringBuilder.endTable(rowSizes: List) { diff --git a/test_runner/src/test/kotlin/Debug.kt b/test_runner/src/test/kotlin/Debug.kt index d87dbd4904..ae4e131f46 100644 --- a/test_runner/src/test/kotlin/Debug.kt +++ b/test_runner/src/test/kotlin/Debug.kt @@ -12,17 +12,16 @@ fun main() { ?: "YOUR PROJECT ID" val quantity = "multiple" val type = "success" - // Bugsnag keeps the process alive so we must call exitProcess // https://github.com/bugsnag/bugsnag-java/issues/151 withGlobalExceptionHandling { CommandLine(Main()).execute( // "--debug", - "firebase", "test", - "android", "run", + "firebase", "test", "android", + "test-environment", // "--dry", // "--dump-shards", - "--output-style=single", +// "--output-style=single", "--full-junit-result", "-c=src/test/kotlin/ftl/fixtures/test_app_cases/flank-$quantity-$type.yml", "--project=$projectId" diff --git a/test_runner/src/test/kotlin/ftl/cli/firebase/test/networkprofiles/NetworkProfilesListCommandTest.kt b/test_runner/src/test/kotlin/ftl/cli/firebase/test/networkprofiles/NetworkProfilesListCommandTest.kt index 7514b542b0..9096805044 100644 --- a/test_runner/src/test/kotlin/ftl/cli/firebase/test/networkprofiles/NetworkProfilesListCommandTest.kt +++ b/test_runner/src/test/kotlin/ftl/cli/firebase/test/networkprofiles/NetworkProfilesListCommandTest.kt @@ -1,14 +1,10 @@ package ftl.cli.firebase.test.networkprofiles -import com.google.api.services.testing.Testing -import com.google.api.services.testing.model.NetworkConfiguration -import com.google.api.services.testing.model.NetworkConfigurationCatalog -import com.google.api.services.testing.model.TestEnvironmentCatalog -import ftl.http.executeWithRetry -import ftl.run.common.prettyPrint +import ftl.environment.networkConfigurationAsTable +import ftl.gc.GcTesting import io.mockk.every +import io.mockk.mockkObject import io.mockk.mockkStatic -import io.mockk.spyk import io.mockk.unmockkAll import io.mockk.verify import org.junit.After @@ -22,7 +18,8 @@ class NetworkProfilesListCommandTest { fun setUp() { mockkStatic( "ftl.http.ExecuteWithRetryKt", - "ftl.run.common.PrettyPrintKt" + "ftl.run.common.PrettyPrintKt", + "ftl.environment.ListNetworkConfigurationKt" ) } @@ -33,19 +30,12 @@ class NetworkProfilesListCommandTest { @Test fun run() { - val configurationsMock = emptyList() - val prettyPrintSpy = spyk(prettyPrint) - every { prettyPrint } returns prettyPrintSpy - every { - any().executeWithRetry() - } returns TestEnvironmentCatalog().apply { - networkConfigurationCatalog = NetworkConfigurationCatalog().apply { - configurations = configurationsMock - } + mockkObject(GcTesting) { + every { + networkConfigurationAsTable() + } returns "" + CommandLine(NetworkProfilesListCommand()).execute() + verify { networkConfigurationAsTable() } } - - CommandLine(NetworkProfilesListCommand()).execute() - - verify { prettyPrintSpy.toJson(configurationsMock) } } }