| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Feature/service fine grained permissions (#2878) * chore: add task detail * feat: dynamic permission registry * feat(role): add dynamic permission support Introduce DynamicSchemeNames on Role and implement dynamic permission management: AddDynamicPermissions, RemoveDynamicPermissions and DynamicPermissionsFor. Persist dynamic schemes using Mongo ($addToSet / $pullAll) and refresh in-memory state after updates. Replace manual context checks with slices.Contains and add tests for dynamic schemes and related helpers. * feat: extend token interface for dynamic permissions * feat: implement method+path matching with virtual std ServeMux * feat: manifest ingestion with fine grained permissions * feat: repopulate service api manifest during startup * feat: proxy manifest to action matching (WIP) * feat: service proxying with new permission validation * feat: role management and service management with dynamic permissions * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix: return error if created permission is empry string * ref: remove manifest fields unnused on permission flow * ref: re-use list permissions route for dynamic permissions as well * test: adjust match on manifest * chore: newer routes should be under 1.31 path version * ref: remove duplicated field operationName * ref: format * test: integratoin 1 * test: integration tests for fine grained service permissions * feat: use old endpoints to add/remove dynamic permissions to roles * test: use tsuru cli for permission handling on integration * test: run all integratoin tests * ref: fix linting errors * chore: add instance proxy to check-handlers * test: fix failing test missing global ctx on action contexts * Simplify token usage removing duplicated code * Simplify token usage removing duplicated code[2] * Simplify dynamic permissions removing in-memory registry Dynamic permission schemes are now pure values derived from the permission name, and the service manifests stored in the database are the single source of truth for which actions exist. This removes the stateful dynamicRegistry, its startup rebuild (RepopulateDynamicPermissions) and all register/unregister/rollback synchronization on manifest ingest. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Drop unused method * chore: remove spec files * Drop unused method[2] * ref: move new typing to types package and adjust usage * ref: extract permission listing into method * ref: lint and fmt * fix: typing issue on func impl * fix: "service-action" should not be a valid dynamic permission name * test: integration with two services and same actions * simplify code * refactor: validate manifest instead of normalizing it Replace normalizeManifest with validateManifest so ingesting a manifest no longer mutates the caller's input. Validation now checks operations in place (method casing, path patterns, duplicate actions/routes) without building a normalized copy. Drop the LegacyEnabledAt field and its timestamp bookkeeping, which was only needed to carry normalization state across updates. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: make manifest matcher stateless Remove the global manifestMatchStates sync.Map and the per-manifest manifestMatchState cache. compiledMatcher now builds the ServeMux and action lookup fresh on each call, dropping the shared mutable state keyed by manifest pointer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: require uppercase manifest method instead of normalizing Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix: address review comments on fine-grained service permissions - manifestGrantConflicts now detects orphaned ancestor-level dynamic grants (e.g. service-action.<svc>.rules or service-action.<svc>) by checking whether each grant still covers any action kept by the next manifest, instead of only exact-matching removed action names - gate integration flow skip logging behind the verbose env setting - add missing "team" requirement to the serviceBind integration flow so it is skipped (not broken) when TSURU_INTEGRATION_TEAM is unset Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat: do not use force to change service manifest orphaned perms * chore: bump vulnerable dependencies --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Wilson Júnior <wilsonpjunior@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Paulo Sousa <paulo.sousa@corp.globo.com> | 1 个月前 | |
chore: golang upgrade (#2865) * chore: bump golang version * chore: bump all golang versions * chore: bump alpine version * chore: bump golangci-lint to v2.11.4 * chore: update golangci-lint configuration to v2 compatible * chore: bump golangci-lint action to v8 * chore: bump tsuru-api-docs to v0.0.1 --------- Co-authored-by: ravilock <ravi.me.professional@hotmail.com> | 4 个月前 | |
Drop unused doc | 2 年前 | |
Feat/unit autoscale swap (#2809) * Adding API endpoint for swapping the autoscale version * adding backoff so KEDA can create the resources needed to tsuru api list the autoscale info * fix: app info to return scaled objects info when it exists * fix provisioner_test.go * adding cleanup for the auscale in the integration tests * adding debug to list hpas * improving Check on integration package * adding check to wait the integration test until KEDA has applied changes to HPA * refactor | 7 个月前 | |
Feature/service fine grained permissions (#2878) * chore: add task detail * feat: dynamic permission registry * feat(role): add dynamic permission support Introduce DynamicSchemeNames on Role and implement dynamic permission management: AddDynamicPermissions, RemoveDynamicPermissions and DynamicPermissionsFor. Persist dynamic schemes using Mongo ($addToSet / $pullAll) and refresh in-memory state after updates. Replace manual context checks with slices.Contains and add tests for dynamic schemes and related helpers. * feat: extend token interface for dynamic permissions * feat: implement method+path matching with virtual std ServeMux * feat: manifest ingestion with fine grained permissions * feat: repopulate service api manifest during startup * feat: proxy manifest to action matching (WIP) * feat: service proxying with new permission validation * feat: role management and service management with dynamic permissions * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix: return error if created permission is empry string * ref: remove manifest fields unnused on permission flow * ref: re-use list permissions route for dynamic permissions as well * test: adjust match on manifest * chore: newer routes should be under 1.31 path version * ref: remove duplicated field operationName * ref: format * test: integratoin 1 * test: integration tests for fine grained service permissions * feat: use old endpoints to add/remove dynamic permissions to roles * test: use tsuru cli for permission handling on integration * test: run all integratoin tests * ref: fix linting errors * chore: add instance proxy to check-handlers * test: fix failing test missing global ctx on action contexts * Simplify token usage removing duplicated code * Simplify token usage removing duplicated code[2] * Simplify dynamic permissions removing in-memory registry Dynamic permission schemes are now pure values derived from the permission name, and the service manifests stored in the database are the single source of truth for which actions exist. This removes the stateful dynamicRegistry, its startup rebuild (RepopulateDynamicPermissions) and all register/unregister/rollback synchronization on manifest ingest. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Drop unused method * chore: remove spec files * Drop unused method[2] * ref: move new typing to types package and adjust usage * ref: extract permission listing into method * ref: lint and fmt * fix: typing issue on func impl * fix: "service-action" should not be a valid dynamic permission name * test: integration with two services and same actions * simplify code * refactor: validate manifest instead of normalizing it Replace normalizeManifest with validateManifest so ingesting a manifest no longer mutates the caller's input. Validation now checks operations in place (method casing, path patterns, duplicate actions/routes) without building a normalized copy. Drop the LegacyEnabledAt field and its timestamp bookkeeping, which was only needed to carry normalization state across updates. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: make manifest matcher stateless Remove the global manifestMatchStates sync.Map and the per-manifest manifestMatchState cache. compiledMatcher now builds the ServeMux and action lookup fresh on each call, dropping the shared mutable state keyed by manifest pointer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: require uppercase manifest method instead of normalizing Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix: address review comments on fine-grained service permissions - manifestGrantConflicts now detects orphaned ancestor-level dynamic grants (e.g. service-action.<svc>.rules or service-action.<svc>) by checking whether each grant still covers any action kept by the next manifest, instead of only exact-matching removed action names - gate integration flow skip logging behind the verbose env setting - add missing "team" requirement to the serviceBind integration flow so it is skipped (not broken) when TSURU_INTEGRATION_TEAM is unset Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat: do not use force to change service manifest orphaned perms * chore: bump vulnerable dependencies --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Wilson Júnior <wilsonpjunior@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Paulo Sousa <paulo.sousa@corp.globo.com> | 1 个月前 | |
remove unused param | 2 年前 | |
Tsuru healthcheck info json (#2893) * feat: app info now returns healthcheck/startupcheck * ref: simplify process merging * feat: use process merging and probe dissasembling * test: regression test on tsuru app info with integration tests * fix: should ignore when wrongly created deployment with liveness probe exists but with no readines probes * test: adjust get raw app info with curl to see healthcheck data | 30 天前 | |
Test/tsuru job integration (#2798) * test: job integration * chore: add test-verbose target * test: integration tests for job * test: fix parallelism on job integration tests * test: use each job name provided by job creation test * uncomment app tests | 9 个月前 | |
Test/improve multiversion (#2794) * feat(integration): improve multiversion rollback tests refactor(integration): use helpers for app readiness checks Replace inline JSON parsing and readiness checks in integration tests with helper functions `checkAppReady` and `checkAppExternallyAddressable`. This improves code reuse, readability, and consistency across tests. Also removes unnecessary sleeps and streamlines version/hash verification logic. test: use external service address for local test only test: add more logs for debugging test: use c.Logf instead of println test: use println for debugs feat(integration): improve multiversion rollback tests Refactor multiversion rollback integration tests to use NewCommand instead of os/exec for hash generation. Add debug output for deployment hash. Update deploy flow to include app update before deployment. Change app readiness check to use external addressability in rollback service common test. Update multiversion-python-app fixture to include build hooks for version hash. * test(integration): refine multiversion rollback test logic Comment out unrelated test flows in install_test.go to focus on multiversion rollback scenario. Improve multiversion_rollback_test.go by adding Kubernetes context checks, simplifying app health checks, and replacing static sleep with a retry loop for deployment sync. These changes enhance reliability and diagnostics for multiversion rollback integration tests. * chore: set KUBECONFIG before running tests * test: add multiversion rollback override integration * Update integration/multiversion_rollback_test.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update integration/multiversion_rollback_test.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update integration/install_test.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update integration/multiversion_rollback_override_test.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update integration/multiversion_rollback_override_test.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update integration/multiversion_rollback_test.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update integration/multiversion_rollback_test.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * test: typo on helper function * test: isolate kubeconfig and improve docs Isolate integration test kubeconfig from main development config by creating a dedicated $HOME/.kube/tsuru-integration-config file. Update integration test setup and scripts to use this file, preventing conflicts with local development. Improve README with clear instructions for running integration tests. Enhance shell script formatting and error handling. Add generated version_hash.txt to .gitignore. * test: should use custom INTEGRATION_KUBECONFIG to avoid running tests pointing to default KUBECONFIG * chore: separation between unit and integration tests checkup * test: chheck only rollback override test * test: fix checkKubeconfig * test: setup unit and integration tests with the kubeconfig check * test: fix integration kubectl command * test: run all integration tests * test: check kubectl config before integration test setup * test: app router add/remove should retry commands * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: instead of using kubectl context from user - use kubectl client-go from config reading * test: setup storage before test run * test: import storage on integration suite setup * debug if storage is using correct config * debug error callstack * test: copy config file before running tests * debug config * chore: fix integration conf copy * chore: use /tmp as dir for the tsurud-integration.conf * chore: debug copy config * Revert "chore: debug copy config" This reverts commit 6407d0e423b5fb0e41c0c4608e56c54d849d3150. * Revert "chore: use /tmp as dir for the tsurud-integration.conf" This reverts commit 79f751a48067e21667eabb87918c07b181947e5b. * Revert "chore: fix integration conf copy" This reverts commit 29226e694f8209e289c5cab820b59561b1245076. * Revert "debug config" This reverts commit 5e3c6daa5a618c1797586756716e12254de10b9f. * Revert "test: copy config file before running tests" This reverts commit 6cd2b287d7666c7f9e6d6741ddf00ffa4464c283. * Revert "debug error callstack" This reverts commit d925293b2d0768455b9c8cc24bb1b9d6d78d3b6f. * Revert "debug if storage is using correct config" This reverts commit bec5c8d621e383a22125f8769d56491df2630651. * Revert "test: import storage on integration suite setup" This reverts commit 6f4e053ec404ecbd53e597d12a415a6e69623e79. * Revert "chore: instead of using kubectl context from user - use kubectl client-go from config reading" This reverts commit 28c0d2db13a301260442011fde05b050d1451547. * test: integration test evaluate deployment and pod status * Update integration/multiversion_rollback_test.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * ref: check for ok on retry func for cmd.Retry method --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> | 9 个月前 | |
Feat/unit autoscale swap (#2809) * Adding API endpoint for swapping the autoscale version * adding backoff so KEDA can create the resources needed to tsuru api list the autoscale info * fix: app info to return scaled objects info when it exists * fix provisioner_test.go * adding cleanup for the auscale in the integration tests * adding debug to list hpas * improving Check on integration package * adding check to wait the integration test until KEDA has applied changes to HPA * refactor | 7 个月前 | |
Fix: app start/stop with multiversion (#2795) * Fix: app start/stop with multiversion * when restarting the base version should not restart if stopped * fix tests to consider new rules :eyes: * fix tests to be compatible with the current logic for starting and stopping the aplications * on app restart, only the running units should restart * adding error handler * check if map value exists * test: add new test for multiversion stop start * ref: rename test to multiversionRoutableStopStartTest * test: remove duplicated stop/start on integration test --------- Co-authored-by: ravilock <ravi.me.professional@hotmail.com> | 7 个月前 | |
Fix: app start/stop with multiversion (#2795) * Fix: app start/stop with multiversion * when restarting the base version should not restart if stopped * fix tests to consider new rules :eyes: * fix tests to be compatible with the current logic for starting and stopping the aplications * on app restart, only the running units should restart * adding error handler * check if map value exists * test: add new test for multiversion stop start * ref: rename test to multiversionRoutableStopStartTest * test: remove duplicated stop/start on integration test --------- Co-authored-by: ravilock <ravi.me.professional@hotmail.com> | 7 个月前 | |
Feature/service fine grained permissions (#2878) * chore: add task detail * feat: dynamic permission registry * feat(role): add dynamic permission support Introduce DynamicSchemeNames on Role and implement dynamic permission management: AddDynamicPermissions, RemoveDynamicPermissions and DynamicPermissionsFor. Persist dynamic schemes using Mongo ($addToSet / $pullAll) and refresh in-memory state after updates. Replace manual context checks with slices.Contains and add tests for dynamic schemes and related helpers. * feat: extend token interface for dynamic permissions * feat: implement method+path matching with virtual std ServeMux * feat: manifest ingestion with fine grained permissions * feat: repopulate service api manifest during startup * feat: proxy manifest to action matching (WIP) * feat: service proxying with new permission validation * feat: role management and service management with dynamic permissions * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix: return error if created permission is empry string * ref: remove manifest fields unnused on permission flow * ref: re-use list permissions route for dynamic permissions as well * test: adjust match on manifest * chore: newer routes should be under 1.31 path version * ref: remove duplicated field operationName * ref: format * test: integratoin 1 * test: integration tests for fine grained service permissions * feat: use old endpoints to add/remove dynamic permissions to roles * test: use tsuru cli for permission handling on integration * test: run all integratoin tests * ref: fix linting errors * chore: add instance proxy to check-handlers * test: fix failing test missing global ctx on action contexts * Simplify token usage removing duplicated code * Simplify token usage removing duplicated code[2] * Simplify dynamic permissions removing in-memory registry Dynamic permission schemes are now pure values derived from the permission name, and the service manifests stored in the database are the single source of truth for which actions exist. This removes the stateful dynamicRegistry, its startup rebuild (RepopulateDynamicPermissions) and all register/unregister/rollback synchronization on manifest ingest. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Drop unused method * chore: remove spec files * Drop unused method[2] * ref: move new typing to types package and adjust usage * ref: extract permission listing into method * ref: lint and fmt * fix: typing issue on func impl * fix: "service-action" should not be a valid dynamic permission name * test: integration with two services and same actions * simplify code * refactor: validate manifest instead of normalizing it Replace normalizeManifest with validateManifest so ingesting a manifest no longer mutates the caller's input. Validation now checks operations in place (method casing, path patterns, duplicate actions/routes) without building a normalized copy. Drop the LegacyEnabledAt field and its timestamp bookkeeping, which was only needed to carry normalization state across updates. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: make manifest matcher stateless Remove the global manifestMatchStates sync.Map and the per-manifest manifestMatchState cache. compiledMatcher now builds the ServeMux and action lookup fresh on each call, dropping the shared mutable state keyed by manifest pointer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: require uppercase manifest method instead of normalizing Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix: address review comments on fine-grained service permissions - manifestGrantConflicts now detects orphaned ancestor-level dynamic grants (e.g. service-action.<svc>.rules or service-action.<svc>) by checking whether each grant still covers any action kept by the next manifest, instead of only exact-matching removed action names - gate integration flow skip logging behind the verbose env setting - add missing "team" requirement to the serviceBind integration flow so it is skipped (not broken) when TSURU_INTEGRATION_TEAM is unset Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat: do not use force to change service manifest orphaned perms * chore: bump vulnerable dependencies --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Wilson Júnior <wilsonpjunior@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Paulo Sousa <paulo.sousa@corp.globo.com> | 1 个月前 | |
Feature/service fine grained permissions (#2878) * chore: add task detail * feat: dynamic permission registry * feat(role): add dynamic permission support Introduce DynamicSchemeNames on Role and implement dynamic permission management: AddDynamicPermissions, RemoveDynamicPermissions and DynamicPermissionsFor. Persist dynamic schemes using Mongo ($addToSet / $pullAll) and refresh in-memory state after updates. Replace manual context checks with slices.Contains and add tests for dynamic schemes and related helpers. * feat: extend token interface for dynamic permissions * feat: implement method+path matching with virtual std ServeMux * feat: manifest ingestion with fine grained permissions * feat: repopulate service api manifest during startup * feat: proxy manifest to action matching (WIP) * feat: service proxying with new permission validation * feat: role management and service management with dynamic permissions * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix: return error if created permission is empry string * ref: remove manifest fields unnused on permission flow * ref: re-use list permissions route for dynamic permissions as well * test: adjust match on manifest * chore: newer routes should be under 1.31 path version * ref: remove duplicated field operationName * ref: format * test: integratoin 1 * test: integration tests for fine grained service permissions * feat: use old endpoints to add/remove dynamic permissions to roles * test: use tsuru cli for permission handling on integration * test: run all integratoin tests * ref: fix linting errors * chore: add instance proxy to check-handlers * test: fix failing test missing global ctx on action contexts * Simplify token usage removing duplicated code * Simplify token usage removing duplicated code[2] * Simplify dynamic permissions removing in-memory registry Dynamic permission schemes are now pure values derived from the permission name, and the service manifests stored in the database are the single source of truth for which actions exist. This removes the stateful dynamicRegistry, its startup rebuild (RepopulateDynamicPermissions) and all register/unregister/rollback synchronization on manifest ingest. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Drop unused method * chore: remove spec files * Drop unused method[2] * ref: move new typing to types package and adjust usage * ref: extract permission listing into method * ref: lint and fmt * fix: typing issue on func impl * fix: "service-action" should not be a valid dynamic permission name * test: integration with two services and same actions * simplify code * refactor: validate manifest instead of normalizing it Replace normalizeManifest with validateManifest so ingesting a manifest no longer mutates the caller's input. Validation now checks operations in place (method casing, path patterns, duplicate actions/routes) without building a normalized copy. Drop the LegacyEnabledAt field and its timestamp bookkeeping, which was only needed to carry normalization state across updates. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: make manifest matcher stateless Remove the global manifestMatchStates sync.Map and the per-manifest manifestMatchState cache. compiledMatcher now builds the ServeMux and action lookup fresh on each call, dropping the shared mutable state keyed by manifest pointer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: require uppercase manifest method instead of normalizing Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix: address review comments on fine-grained service permissions - manifestGrantConflicts now detects orphaned ancestor-level dynamic grants (e.g. service-action.<svc>.rules or service-action.<svc>) by checking whether each grant still covers any action kept by the next manifest, instead of only exact-matching removed action names - gate integration flow skip logging behind the verbose env setting - add missing "team" requirement to the serviceBind integration flow so it is skipped (not broken) when TSURU_INTEGRATION_TEAM is unset Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat: do not use force to change service manifest orphaned perms * chore: bump vulnerable dependencies --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Wilson Júnior <wilsonpjunior@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Paulo Sousa <paulo.sousa@corp.globo.com> | 1 个月前 | |
test: fix test depending on regex filter (#2832) | 7 个月前 | |
Feat/unit autoscale swap (#2809) * Adding API endpoint for swapping the autoscale version * adding backoff so KEDA can create the resources needed to tsuru api list the autoscale info * fix: app info to return scaled objects info when it exists * fix provisioner_test.go * adding cleanup for the auscale in the integration tests * adding debug to list hpas * improving Check on integration package * adding check to wait the integration test until KEDA has applied changes to HPA * refactor | 7 个月前 | |
integration: add integration test flow triggering machine healing | 8 年前 |
Integration tests
Package integration provides a set of integration tests for tsuru. The testing behavior can be configured by a set of environment variables.
These tests might be ran on an existing tsuru installation (by providing the correct amount of environment variables) or it can test a new installation (locally or in a cloud) by leveraging tsuru installer.
Basics
The integration testing consists of a sequence of steps defined as the type:
ExecFlow{}
These steps are registered in the global flows variable. Each step has a provides
field which registers what resources this step provides, and will only run if this resource is
not provided by an environment variable TSURU_INTEGRATION_<provides>. They also might require specific
resources by setting the requires field.
Running locally
$ make test-integration
Environment Variables
The following variables may be set to customize the integration testing, these are all prefixed with TSURU_INTEGRATION_.
General
- enabled - enables integration testing
- maxconcurrency - test concurrency
- verbose - test verbosity
- examplesdir - path to the platforms examples
- platforms - List of platforms to test. Defaults to all platforms available on https://github.com/tsuru/platforms
Flow control
- platformimages
- installerconfig
- installercompose
- targetaddr
- team
- poolnames
- installedplatforms
- serviceimage
- servicename