mirror of https://github.com/grpc/grpc.git
[PSM Interop] Add support to enable CSM Observability and a new test case (#34835)
This PR adds CSM Observability testing capability in the PSM Interop testing framework. This PR mostly changes the framework Python code.
This adds a flag `enable_csm_observability` to the client / server deployment yaml file such that, when enabled, we will create a GMP `PodMonitoring` resource and pass the `--enable_csm_observability` to each language's client / server container (for them to actually enable the Prometheus endpoint)
I added a new test under `tests/csm/csm_observability_test.py`. This is basically a copy of the `tests/baseline_test.py` but with the `enable_csm_observability=True`.
Other PRs for this whole thing to work:
- https://github.com/grpc/grpc/pull/34752: The `PodMonitoring` resource yaml template
- https://github.com/grpc/grpc/pull/34832: Support for the `--enable_csm_observability` flag in the C++ client/server image
Closes #34835
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/34835 from stanley-cheung:csm-o11y-framework-changes 0b3d0eb7ed
PiperOrigin-RevId: 595502496
pull/35445/head
parent
691a068a07
commit
9e702debfb
7 changed files with 99 additions and 1 deletions
@ -0,0 +1,48 @@ |
||||
# Copyright 2023 gRPC authors. |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
import logging |
||||
|
||||
from absl import flags |
||||
from absl.testing import absltest |
||||
|
||||
from framework import xds_gamma_testcase |
||||
from framework import xds_k8s_testcase |
||||
|
||||
logger = logging.getLogger(__name__) |
||||
flags.adopt_module_key_flags(xds_k8s_testcase) |
||||
|
||||
_XdsTestServer = xds_k8s_testcase.XdsTestServer |
||||
_XdsTestClient = xds_k8s_testcase.XdsTestClient |
||||
|
||||
|
||||
class CsmObservabilityTest(xds_gamma_testcase.GammaXdsKubernetesTestCase): |
||||
def test_ping_pong(self): |
||||
# TODO(sergiitk): [GAMMA] Consider moving out custom gamma |
||||
# resource creation out of self.startTestServers() |
||||
with self.subTest("1_run_test_server"): |
||||
test_server: _XdsTestServer = self.startTestServers( |
||||
enable_csm_observability=True |
||||
)[0] |
||||
|
||||
with self.subTest("2_start_test_client"): |
||||
test_client: _XdsTestClient = self.startTestClient( |
||||
test_server, enable_csm_observability=True |
||||
) |
||||
|
||||
with self.subTest("3_test_server_received_rpcs_from_test_client"): |
||||
self.assertSuccessfulRpcs(test_client) |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
absltest.main() |
Loading…
Reference in new issue