* grab connected subchannel in the data plane
* don't return connected subchannel via state watch
* fix build
* fix build
* pass health check service name through LB policies via a channel arg
* fix build
* clang-format
* add trace log
This commit
1. Implements the security policies that does not require JNI. This
includes a security policy that always allow connection and a security
policy that allows connection when remote UID is the same us local UID.
2. Add security policy as an argument in our interfaces. Old interfaces
are temporarily preserved so compilation will not suddenly break when we
import the code to internal repo.
3. Pumping the security policy from the public interfaces to the code
that handles SETUP_TRANSPORT transaction.
4. Abort the transport setup when the security policy is not satisfied.
Since meaningful tests will require to be run in real Android
environment, we will implement it later. For now, this change is
manually tested with example APKs.
For security policies that need to invoke Java to check authorization,
we will implement them in later.
* Drop ABSL_RANDOM_HWAES_FLAGS compiler flags
Older CPUs that do not have SSE4.1 would crash with the Ruby native gem
due to an illegal instruction exception.
The Abseil random library isn't being used at the moment
(https://github.com/grpc/grpc/pull/26476), and there's no reason gRPC
needs to force SSE4.1 instructions on all platforms at the moment. There
are other hardware-specific issues that need to be ironed out for this
to work: https://github.com/grpc/grpc/pull/26479
When the `-msse4` compiler flag was enabled, the Abseil code started
using the `pinsrb` instruction:
```
$ elfx86exts abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.o
MODE64 (ret)
CMOV (cmovne)
SSE2 (movdqa)
SSE41 (pinsrb)
SSE1 (movaps)
CPU Generation: Penryn
```
Closes https://github.com/grpc/grpc/issues/27095
* Revert "Drop ABSL_RANDOM_HWAES_FLAGS compiler flags"
This reverts commit 3b7cc74d39.
* Drop -msse4 compiler flag
Older CPUs that do not have SSE4.1 would crash with the Ruby native gem
due to an illegal instruction exception.
The Abseil random library isn't being used at the moment
(https://github.com/grpc/grpc/pull/26476), and there's no reason gRPC
needs to force SSE4.1 instructions on all platforms at the moment. There
are other hardware-specific issues that need to be ironed out for this
to work: https://github.com/grpc/grpc/pull/26479
When the `-msse4` compiler flag was enabled, the Abseil code started
using the `pinsrb` instruction:
```
$ elfx86exts abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.o
MODE64 (ret)
CMOV (cmovne)
SSE2 (movdqa)
SSE41 (pinsrb)
SSE1 (movaps)
CPU Generation: Penryn
```
This was previously needed because gcc 4.8 wouldn't compile without the
`-msse4` and `-maes` flags.
However, per
97db2bf7fb
gcc 5.0+ automatically detects whether these options are enabled.
clang still needs `-maes` since including `wmmintrin.h` expects the AES
option to be enabled.
Closes https://github.com/grpc/grpc/issues/27095
A reusable test suite for EventEngine implementations.
To exercise a custom EventEngine, simply link against :event_engine_test_suite
and provide a testing main function that sets a custom EventEngine factory:
```
#include "path/to/my_custom_event_engine.h"
#include "src/core/event_engine/test_suite/event_engine_test.h"
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
SetEventEngineFactory(
[]() { return absl::make_unique<MyCustomEventEngine>(); });
auto result = RUN_ALL_TESTS();
return result;
}
```
It used to be that we could run the hpack deserializer into an arbitrary
sink - that's about to change and the hpack deserializer will buffer
directly into a map. That being the case, it's really hard to compare
performance of the current and the new system. With this PR, I'm
updating the relevant scenario to be more similar to the eventual
scenario that we plan, so that as the new work finishes up, we can get a
clearer idea of what changes we're really making.