Commit Graph

105 Commits

Author SHA1 Message Date
Mark D. Roth a78df68e96
xds: add "ignore_resource_deletion" server feature (#29633)
* xds: add "ignore_resource_deletion" server feature

* add logging

* clang-format

* fix build

* fix build

* add test for LDS resource deletion on gRPC server

* clang-format
2022-06-13 14:01:13 -07:00
Craig Tiller 6532084a06
[iwyu] rest of the owl: src/core/lib - excluding iomgr, gpr (#29735)
* [iwyu] rest of the owl: src/core/lib - excluding iomgr, gpr

* Automated change: Fix sanity tests

* Automated change: Fix sanity tests

* fixes

* Automated change: Fix sanity tests

* fix

* fix

* fixes

* fixes

* x

* fix?

* fix

* windows fix

* fix

* fix

* fix

* fix

* fix

* debug

* fix

* fix

* Revert "debug"

This reverts commit c99b8d12dd.

* Automated change: Fix sanity tests

* fix?

* Automated change: Fix sanity tests

* header cleanup

* fix

* fix

* fix

* Automated change: Fix sanity tests

* fix

* fix

* Automated change: Fix sanity tests

* Automated change: Fix sanity tests

* fixes

* Automated change: Fix sanity tests

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2022-06-10 13:04:47 -07:00
Mark D. Roth 8459824e5c
xds end2end tests: change tests to check all RPC failure statuses (#29974)
* WIP

* fix from merge

* fix ring_hash tests

* ring hash: fix picker propagation bug in xds_cluster_manager policy

* fix build

* clang-format (ish)

* fix build

* more conversion

* remove old CheckRpcSendFailure

* fix SendRpcsAndCountFailuresWithMessage

* fix WaitForBackend

* clang-format

* revert xds resolver change, that will be done in a separate PR

* Automated change: Fix sanity tests

Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2022-06-09 18:00:38 -07:00
Mark D. Roth 470a3066c7
ring hash: fix picker propagation bug in xds_cluster_manager policy (#29959)
* ring hash: fix picker propagation bug in xds_cluster_manager policy

* fix build

* fix build
2022-06-09 10:08:47 -07:00
Mark D. Roth e49c61cd2f
client_channel: remove synchronous subchannel connectivity state API (#28339)
* ring_hash: don't recreate ring when individual subchannel states change

* client_channel: remove synchronous subchannel connectivity state API

* change subchannel list to automatically start watching all subchannels

* use a separate loop to start watches, so list size is logged correctly

* fix RR to re-resolve on IDLE again

* fix ring_hash to delay promoting new subchannel list

* fix pick_first to wait for all subchannels to report state

* clean up SubchannelList API

* fix unused argument error

* fix another unused argument error

* clang-format

* fix RR to not re-resolve on initial IDLE state

* also don't re-resolve in initial TF state; same for ring_hash

* clang-format

* change RR and PF to initially report CONNECTING, and add second loop to priority policy

* simplify priority logic a bit

* fix grpclb to drop ref to stats object even if the subchannel call is never started

* fix memory leak in ring_hash

* fix tsan failure in grpclb code

* iwyu

* add missing BUILD deps

* update outlier_detection policy

* fix test

* fix pick_first to not report TF prematurely due to subchannel sharing

* fix test to not depend on timing
2022-06-03 06:44:26 -07:00
Yash Tibrewal 5d9cdc8e67
xds: Add XdsLbRegistry (#29756)
* xds: Add XdsLbRegistry

* Formatting

* Fix upb output

* Allow alternative type url for Custom LBs

* Cleanup

* Reviewer comments

* Add some comments

* Reviewer comments

* Reviewer comments

* Reviewer comments

* Reviewer comments

* Fix tests

* Fix tests

* Fix tests

* Fix tests

* Fix tests

* Unused parameters

* Change to make TextFormat usage work internally

* Fix namespace qualification error
2022-06-01 14:08:26 -07:00
Yash Tibrewal 8cdf8beafd
xDS: Workaround to get gRPC clients working with istio (#29841)
* xDS: Workaround to get gRPC clients working with istio

* Formatting

* Comment test too

* Disable instead of commenting
2022-05-31 17:39:46 -07:00
Mark D. Roth 64b422091e
xds_core_end2end_test: increase timeouts to fix flakiness (#29803)
* xds_core_end2end_test: increase timeouts to fix flakiness

* clang-format
2022-05-27 14:34:53 -07:00
Mark D. Roth a4cbeee699
xds_core_end2end_test: increase RPC timeout on BootstrapSource test (#29802) 2022-05-27 14:32:53 -07:00
Mark D. Roth fb1cc54d41
xds_core_end2end_test: fix federation test timeouts (#29789) 2022-05-26 12:05:57 -07:00
Mark D. Roth 3f5931294e
xds_cluster_type_end2end_test: fix flake in AggregateClusterTest.FallBackWithConnectivityChurn test (#29786) 2022-05-25 14:29:09 -07:00
Mark D. Roth 709dff9ca8
security and subchannel: implement UniqueTypeName and use it in these interfaces (#29709)
* implement UniqueTypeName API

* convert security code to use UniqueTypeName

* change subchannel data producer API to use UniqueTypeName

* sanitize

* add missing build dep

* fix credentials_test

* fix certificate_provider_store_test

* fix tls_security_connector_test

* attempt to fix windows build

* avoid unnecessary allocation

* work around MSVC 2017 bug

* sanity

* change factory to not be templated

* fix sanity

* fix bug in chttp2 connector that used server creds instead of channel creds

* add missing build dep

* simplify API
2022-05-23 09:45:20 -07:00
Mark D. Roth a6d70b449b
xds: don't start resource timer after ADS stream restart if resource is already cached (#29668)
* xds: don't start resource timer after ADS stream restart

* fix sanity

* add missing build dep

* attempt to use std::move() for absl::Status

* sanity
2022-05-20 13:40:43 -07:00
apolcyn 965feb5726
xds: Remove aggregate and logical dns clusters env var guard (#29742)
* Remove aggregate and logical dns clusters env var guard
2022-05-20 12:45:33 -07:00
Mark D. Roth 5c9a971904
xds: use federation env var to guard new-style resource name parsing (#29725) 2022-05-18 15:03:01 -07:00
donnadionne 03cf989610
outlier detection: implement LB policy and xDS configuration (#29343)
* Initial skeleton for outlier detection

* fixing code review comments (modifying child policy)

* Skeleton and all tests passing except for 1

* small code review comments fix

* Adding the parsing of the policy in cds and put it in discovery
mechansim json format

* Parsing outlier detection json policy from parent

* Adding parsing of the updates

* Added Subchannel wrapper and watcher wrapper: and all states pass
through and all tests still pass

* added framework to do eject and uneject

* fixing code review comments

* restore a test

* fixing code review comments

* taking care of code review comments

* removing debug code and rebuild build files

* fixing according to code review comments

* fixing code review comments

* Adding address to subchannel map

* addressing code review comments

* adding call counter

* Refcount SubchannelState (in the map) and store them in Subcahnnel Wrapper

* fixing counterss

* Call counter and tracker skleton added

* Call counter

* addressing code review comments

* addressing code review comments

* Added CallCounter and timer

* fixing sanity; but more importantly: taking out timer temporarly as it
was causing test failures.

* sanity

* fixing according to code review comments

* addressing code review comments

* all algorithms implemented

* addressing code review comment about starting the timer

* protect private vars

* small fix

* Added one more corner case

* fixing EjectionTimer

* Fixing according to code review suggestions.

* fixing according to code reveiw comments

* taking care of code review comments

* fixing sanity issues

* Adding proto to tests

* First test

* Fixing according to code review comments

* Tests all working now

* fixing a crash

* fixing build files

* fixing sanity

* sanity

* Simplifying tests

* merge and update

* format

* sanity and format

* Fixing asan error

* fixing parsing logic and error handling

* 6 more tests done

* Added verifying unejection to tests

* Added all the tests

* fixing according to code review comments

* fixing asan and ubsan

* Fixing tests according to code review comments

* Added both algorithm tests

* added percentage enforcement tests

* fixing tsan error

* keeping debug, but fix warning

* remove debugs

* fixing IWYU and build errors after

* test comments change only but very important

* fixing code review comments

* one more refactorying of util function

* Removed debugs and added one more helper method

* one more logic fix

* Fixing last bit of code review comments and added disable tests

* fixing code review comments

* fixing IWYU

* sanity format

* protecting the feature with environment var:
registering policy and generating policy

* added a todo according to code review comments

* fixing a clang finding at import time

* build fix after synching to latest
2022-05-16 21:37:34 -07:00
Mark D. Roth 5fe979d756
xds: add tests for unknown authority (#29681)
* xds: add tests for unknown authority

* improve trace log message

* fix memory leak
2022-05-13 14:30:12 -07:00
Craig Tiller f56282a6b6
[iwyu] surface (#29588)
* [iwyu] chttp2

* fix

* Automated change: Fix sanity tests

* Automated change: Fix sanity tests

* Automated change: Fix sanity tests

* fwd file

* fix

* fix

* Automated change: Fix sanity tests

* fix

* [iwyu] surface

* [iwyu] surface

* add no-return hint

* fix

* Automated change: Fix sanity tests

* Add flag

* sweep1

* fixes

* speedup

* fixes

* fixes

* fixes

* fix

* fix

* fix

* fix

* Automated change: Fix sanity tests

* fix

* fic

* x

* ugh

* fix

* fix

* Automated change: Fix sanity tests

* fix?

* fixes

* fix

* Automated change: Fix sanity tests

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2022-05-09 15:56:44 -07:00
Mark D. Roth 0ba3c59672
xds_ring_hash_end2end_test: fix flake in ContinuesConnectingWithoutPicks (#29461) 2022-04-21 07:11:03 -07:00
Mark D. Roth 6bda57194a
xds_end2end_test_lib: use DEBUG_LOCATION to log where failures originate (#29444) 2022-04-19 15:36:15 -07:00
Mark D. Roth 8ba275291a
connection delay injector: fix tsan problems (#29445) 2022-04-19 15:35:47 -07:00
Yash Tibrewal 8e0da602a8
HTTP: Rename PUT allowing channel arg (#29438) 2022-04-19 01:51:57 -07:00
Alisha Nanda 6753812278
Fix ubsan failure (#29437) 2022-04-18 19:57:02 -07:00
Yash Tibrewal eb96f90eb7
HTTP: Use channel arg instead of global to allow PUT requests (#29411)
* HTTP: Use channel arg instead of global to allow PUT requests

* Reviewer comments

* Reviewer comments

* clang-format

* Repo manager - AJ

* Reviewer comments

* unused parameter
2022-04-18 16:34:55 -07:00
Mark D. Roth 9a363dbf96
xds_end2end_test: Move CDS and EDS tests to their own file (#29430)
* xds_end2end_test: Move CDS and EDS tests to their own file

* fix build
2022-04-18 15:11:32 -07:00
Mark D. Roth 93a90e3c55
xds_ring_hash_end2end_test: increase RPC timeout to avoid failures on ARM (#29431) 2022-04-18 11:45:50 -07:00
Mark D. Roth 50df29bdec
ring_hash: trigger internal connection attemps on only one subchannel at a time (#29422)
* ring_hash: trigger internal connection attemps on only one subchannel at a time

* simplify logic

* add test

* clang-format
2022-04-18 09:36:27 -07:00
Yash Tibrewal f28695351e
Prevent direct usage of absl::Mutex (#29424)
* Add script to prevent absl::Mutex occurrences

* sanity and fixes

* shellcheck
2022-04-17 23:56:18 -07:00
Mark D. Roth e7ddd7b436
xds_end2end_test: Move aggregate and logical_dns cluster tests to their own file (#29298)
* move some code around

* remove num_backends parameter from XdsEnd2endTest

* remove use_xds_enabled_server param from XdsEnd2endTest

* remove xds_resource_does_not_exist_timeout_ms param from XdsEnd2endTest

* remove client_load_reporting_interval_seconds param from XdsEnd2endTest

* start moving CreateAndStartBackends() into individual tests

* finish moving CreateAndStartBackends() into individual tests

* remove unused variable

* remove SetEdsResourceWithDelay

* fix test flake

* clang-tidy

* clang-format

* move test framework to its own library

* fix build

* clang-format

* fix windows build

* rename TestType to XdsTestType

* move BackendServiceImpl inside of BackendServerThread

* clang-format

* move AdminServerThread to CSDS test suite

* remove unnecessary deps

* move aggregate and logical_dns cluster tests to their own file

* split aggregate and logical_dns tests into separate suites

* clang-format

* re-add flaky tag

* clang-tidy and remove unnecessary dep
2022-04-16 18:08:53 -07:00
Mark D. Roth bea5911569
xds_end2end_test: Move ring_hash tests to their own file (#29287)
* move some code around

* remove num_backends parameter from XdsEnd2endTest

* remove use_xds_enabled_server param from XdsEnd2endTest

* remove xds_resource_does_not_exist_timeout_ms param from XdsEnd2endTest

* remove client_load_reporting_interval_seconds param from XdsEnd2endTest

* start moving CreateAndStartBackends() into individual tests

* finish moving CreateAndStartBackends() into individual tests

* remove unused variable

* remove SetEdsResourceWithDelay

* fix test flake

* clang-tidy

* clang-format

* move test framework to its own library

* fix build

* clang-format

* fix windows build

* rename TestType to XdsTestType

* move BackendServiceImpl inside of BackendServerThread

* clang-format

* move AdminServerThread to CSDS test suite

* move ring_hash tests to their own file

* generate_projects

* remove unnecessary deps

* re-add flaky tag

* clang-format
2022-04-16 14:42:43 -07:00
Mark D. Roth b9d904da58
xds_end2end_test: move routing tests to their own file (#29409)
* xds_end2end_test: move routing tests to their own file

* clang-format and clang-tidy

* re-add flaky label
2022-04-16 08:26:32 -07:00
Yash Tibrewal 136055b043
xds_end2end_test: Fix race in security tests (#29408)
* xds_end2end_test: Fix race in security tests

* Reviewer comments
2022-04-15 15:49:48 -07:00
Lidi Zheng e9ad1d5f47
Improve the MaxFault test case (#29407) 2022-04-15 13:51:31 -07:00
Mark D. Roth dd14f803c3
xds_end2end_test: move core XdsClient tests to their own file (#29403)
* xds_end2end_test: move core XdsClient tests to their own file

* clang-format

* also move SecureNaming and XdsStreamErrorPropagation tests
2022-04-15 12:33:50 -07:00
Mark D. Roth 6273832210
priority and ring_hash LBs: fix interactions when using ring_hash under priority (#29332)
* refactor connection delay injection from client_lb_end2end_test

* fix build

* fix build on older compilers

* clang-format

* buildifier

* a bit of code cleanup

* start failover time whenever the child reports CONNECTING, and don't cancel when deactivating

* clang-format

* rewrite test

* simplify logic in priority policy

* clang-format

* switch to using a bit to indicate child healthiness

* fix reversed comment

* more changes in priority and ring_hash.

priority:
- go back to starting failover timer upon CONNECTING, but only if seen
  READY or IDLE more recently than TRANSIENT_FAILURE

ring_hash:
- don't flap back and forth between IDLE and CONNECTING; once we go
  CONNECTING, we stay there until either TF or READY
- after the first subchannel goes TF, we proactively start another
  subchannel connecting, just like we do after a second subchannel
  reports TF, to ensure that we don't stay in CONNECTING indefinitely if
  we aren't getting any new picks
- always return ring hash's picker, regardless of connectivity state
- update the subchannel connectivity state seen by the picker upon
  subchannel list creation
- start proactive subchannel connection attempt upon subchannel list
  creation if needed

* ring_hash: fix connectivity state seen by aggregation and picker

* fix obiwan error

* swap the order of ring_hash aggregation rules 3 and 4

* restore original test

* refactor connection injector QueuedAttempt code

* add test showing that ring_hash will continue connecting without picks

* clang-format

* don't actually need seen_failure_since_ready_ anymore

* fix TSAN problem

* address code review comments
2022-04-14 17:08:38 -07:00
Mark D. Roth 214e3f3622
xds_end2end_test: Move RLS tests to their own file (#29290)
* move some code around

* remove num_backends parameter from XdsEnd2endTest

* remove use_xds_enabled_server param from XdsEnd2endTest

* remove xds_resource_does_not_exist_timeout_ms param from XdsEnd2endTest

* remove client_load_reporting_interval_seconds param from XdsEnd2endTest

* start moving CreateAndStartBackends() into individual tests

* finish moving CreateAndStartBackends() into individual tests

* remove unused variable

* remove SetEdsResourceWithDelay

* fix test flake

* clang-tidy

* clang-format

* move test framework to its own library

* fix build

* clang-format

* fix windows build

* rename TestType to XdsTestType

* move BackendServiceImpl inside of BackendServerThread

* clang-format

* move AdminServerThread to CSDS test suite

* move RLS tests to their own file

* remove unnecessary deps

* generate_projects
2022-04-14 11:22:39 -07:00
Mark D. Roth 55b0405c86
xds_end2end_test: Move fault injection tests into their own file (#29283)
* move some code around

* remove num_backends parameter from XdsEnd2endTest

* remove use_xds_enabled_server param from XdsEnd2endTest

* remove xds_resource_does_not_exist_timeout_ms param from XdsEnd2endTest

* remove client_load_reporting_interval_seconds param from XdsEnd2endTest

* start moving CreateAndStartBackends() into individual tests

* finish moving CreateAndStartBackends() into individual tests

* remove unused variable

* remove SetEdsResourceWithDelay

* fix test flake

* clang-tidy

* clang-format

* move test framework to its own library

* fix build

* clang-format

* fix windows build

* move fault injection tests to their own file

* rename TestType to XdsTestType

* move BackendServiceImpl inside of BackendServerThread

* clang-format

* generate_projects

* appease clang-tidy

* move AdminServerThread to CSDS test suite

* remove unnecessary deps

* generate_projects

* don't mark test as flaky
2022-04-14 08:32:33 -07:00
Yash Tibrewal 5e989cf78d
HTTP: Conditionally allow PUT requests (#29397)
* Maybe fix for PUT deprecation

* Guard PUT request accepting with a flag and add tests

* Reviewer comments

* Add fallthrough notation

* Reviewer comments

Co-authored-by: Craig Tiller <ctiller@google.com>
2022-04-13 17:47:07 -07:00
Nicolas Noble 5a3cd992b0
Fixing the build breakage from #29285 (#29399) 2022-04-13 16:58:08 -07:00
Mark D. Roth 61987ec3a2
xds_end2end_test: Move CSDS tests to their own file (#29285)
* move some code around

* remove num_backends parameter from XdsEnd2endTest

* remove use_xds_enabled_server param from XdsEnd2endTest

* remove xds_resource_does_not_exist_timeout_ms param from XdsEnd2endTest

* remove client_load_reporting_interval_seconds param from XdsEnd2endTest

* start moving CreateAndStartBackends() into individual tests

* finish moving CreateAndStartBackends() into individual tests

* remove unused variable

* remove SetEdsResourceWithDelay

* fix test flake

* clang-tidy

* clang-format

* move test framework to its own library

* fix build

* clang-format

* fix windows build

* rename TestType to XdsTestType

* move BackendServiceImpl inside of BackendServerThread

* clang-format

* move CSDS tests to their own file

* move AdminServerThread to CSDS test suite

* remove unnecessary deps

* generate_projects

* fix build

* remove flaky label
2022-04-13 13:12:39 -07:00
Mark D. Roth 9a12b0def8
cds LB: fix diamond dependency handling (#29384)
* cds LB: fix diamond dependency handling

* instead of explicitly checking for loops, just check for max depth
2022-04-13 13:01:57 -07:00
Mark D. Roth d61433ecb2
cds LB: handle loops in aggregate cluster graph (#29382)
* cds LB: handle loops in aggregate cluster graph

* clang-format
2022-04-12 14:45:35 -07:00
Mark D. Roth 3a4058c07a
xds_end2end_test: move test framework to its own library (#29279)
* move some code around

* remove num_backends parameter from XdsEnd2endTest

* remove use_xds_enabled_server param from XdsEnd2endTest

* remove xds_resource_does_not_exist_timeout_ms param from XdsEnd2endTest

* remove client_load_reporting_interval_seconds param from XdsEnd2endTest

* start moving CreateAndStartBackends() into individual tests

* finish moving CreateAndStartBackends() into individual tests

* remove unused variable

* remove SetEdsResourceWithDelay

* fix test flake

* clang-tidy

* clang-format

* move test framework to its own library

* fix build

* clang-format

* fix windows build

* rename TestType to XdsTestType

* move BackendServiceImpl inside of BackendServerThread

* clang-format

* move AdminServerThread to CSDS test suite

* remove unnecessary deps
2022-04-12 13:42:58 -07:00
Mark D. Roth 94c538cd55
Second attempt: Adding is_optional case to RLS (#29378)
* Revert "Revert "Adding is_optional case to RLS (#29259)" (#29299)"

This reverts commit a6419dde06.

* change test to check the full error message
2022-04-12 11:21:44 -07:00
Mark D. Roth 96c19e8c98
weighted_target and xds_cluster_manager: don't update picker while update is in flight (#29313)
* weighted_target and xds_cluster_manager: don't update picker while update is in flight

* include deactivation and new child creation

* add test
2022-04-06 15:00:07 -07:00
Mark D. Roth e145c068f2
xds_cluster_resolver LB: don't reuse child numbers that might still be deactivated (#29316)
* xds_cluster_resolver LB: don't reuse child numbers that might still be deactivated

* clang-format
2022-04-06 06:43:39 -07:00
Mark D. Roth caacc7e3aa
xds_end2end_test: fix env var name in RLS tests (#29291)
* xds_end2end_test: fix env var name in RLS tests

* add ScopedExperimentalEnvVar to ensure env vars get unset after tests

* clang-format
2022-04-04 14:27:17 -07:00
Mark D. Roth a6419dde06
Revert "Adding is_optional case to RLS (#29259)" (#29299)
This reverts commit 2fd632a4c1.
2022-04-02 20:27:01 -07:00
Mark D. Roth 217ab2a793
xds_end2end_test: make each individual test start the number of backends it needs (#29271)
* move some code around

* remove num_backends parameter from XdsEnd2endTest

* remove use_xds_enabled_server param from XdsEnd2endTest

* remove xds_resource_does_not_exist_timeout_ms param from XdsEnd2endTest

* remove client_load_reporting_interval_seconds param from XdsEnd2endTest

* start moving CreateAndStartBackends() into individual tests

* finish moving CreateAndStartBackends() into individual tests

* remove unused variable

* fix test flake

* clang-tidy

* clang-format
2022-04-02 09:26:57 -07:00
donnadionne 2fd632a4c1
Adding is_optional case to RLS (#29259)
* Adding is_optional case to RLS

* integrated with the updated envoy data-plane

* Fixing an old bug and adding test

* Use the same plugin map for ignore

* Remove ignore set

* Fixed another test.

* addressing code review comments.

* clean up!
2022-04-01 12:33:39 -07:00