* Handle gevent exception in gevent poller
Currently the gevent poller ignores exceptions raised by
`gevent.wait()`, which causes greenlets to be unkilable while waiting.
This change handles exceptions raised while waiting in the gevent
poller, cancels the gRPC call and propagates the error back to the
application.
Co-authored-by: Kostis Lolos <klolos@arrikto.com>
* Fix imports in header files
* Lint gevent tests
* Set grpc event type to GRPC_QUEUE_SHUTDOWN upon cancel error
To prevent `grpc_completion_queue_next()` to be called indefinitely when
the queue is shut down.
* Remove unnecessary `except *`
* Improve gevent tests
* Format code
* Remove unnecessary import
Co-authored-by: Kostis Lolos <klolos@arrikto.com>
* Expose trailers-only response status through callback API
* Fix change-detector test
* Address reviewer comment about trailers_only headers
* Add TODO requested by markdroth
* Move variable in struct to improve space efficiency
* Don't instantiate ExecCtx in channel_args destructor unless needed
* List annotations of tests that have running pods and are in Errored state.
* Fix format.
* Use pod owner reference instead of "loadtest" label.
* Delete loadtests that have running pods and are in Errored state.
* Improve jsonpath expressions.
* Add comment.
* List tests but do not delete them.
* cmake: don't install plugins when crosscompiling
Plugins should not be installed for a cross-compilation environment,
because it has to run on a host/build system. If it's installed then
configure stage fails with an error, that imported target references
non-existing file. Even if the file is found, it can't be used on a host.
Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
* better way of detecting protoc targets
Co-authored-by: Jan Tattermusch <jtattermusch@google.com>
* Increase core logging verbosity
* Make repo URL injectable
* Apparently that's not allowed
* Use ipv4 in interop server
* Add CSDS to Python interop client
* Revert CI script change
* Scale back logging
* Move env variable to dockerfile
* And Python too
A corresponding update to the build system will need to occur before this is submitted.
Add a way of labelling in build configuration meta-visibility-rules, so that these can be leveraged to restrict visibility in Google's build system upstream.
This example crashes the driver process, since `bq_upload_result.py` expects
the `big_query_table` argument to have the format `<dataset name>.<table name>`.
The project ID is already encoded in the script.
```
+ python3 /src/code/tools/run_tests/performance/bq_upload_result.py --bq_result_table=grpc-testing.e2e_benchmarks.experimental_results_hork_x5
Traceback (most recent call last):
File "/src/code/tools/run_tests/performance/bq_upload_result.py", line 177, in <module>
dataset_id, table_id = args.bq_result_table.split('.', 2)
ValueError: too many values to unpack (expected 2)
```
* Resolve and test race between OnReadDone(ok=false) and IsCancelled
* Fix retry case
* Fix health check case
* Address reviewer comments.
* ADD TODO requested by markdroth
* Provide custom sponge configs
* Correct the script
* Allow test scripts to produce artifacts through Docker
* Overcome the direcotry clone in our docker script
* Expose TESTGRID_EXCLUDE and GIT_ORIGIN_URL through docker run
* Make sanity tests happy
* Run all kokoro performance tests on dedicated node pools.
Both official and experimental tests run with kokoro are set to run on separate node pools with the suffix "-ci" (drivers-ci, workers-8core-ci, workers-32core-ci), separate from the default pools used for manual runs.
This change sets the deadline of master and experimental kokoro jobs to match their running interval (4 hours and 12 hours), and makes a change so runs initiated by kokoro are marked 'kokoro' for the master job and 'kokoro-test' for the experimental job.
When we call recvmsg(), we are allowed to set msg_control and
msg_controllen to receive ancillary messages from the TCP socket.
msg_controllen is set to available buffer length for such sockets
before we call recvmsg(); after the call returns successfully, it
contains the amount of available data in the ancillary buffer.
Existing behaviour is buggy; it calls recvmsg() in a loop but does not
set msg_controllen to the size of the full buffer correctly on each
iteration. This leads to a surfeit of error log messages, claiming the
ancillary messages had to be truncated due to insufficient buffer
space.
This patch correctly sets the ancillary buffer size before each call
to recvmsg() when processing the TCP error queue.
Experiments show that 4 tests running concurrrently (two on 8-core nodes and two on 32-core nodes) is enough to run all tests within two hours with time to spare.
* Removes optional flag -a, allowing it to be changed later to a long-form flag.
* Updates concurrency levels to one more than what each worker node pool can support (each test requires two workers, and there are nine nodes in each pool, so each node can support four tests).