celestiaorg / knuu

Integration Test Framework
Apache License 2.0
39 stars 35 forks source link

fix: obsy tests #578

Closed mojtaba-esk closed 1 week ago

mojtaba-esk commented 1 week ago

There was an issue with the obsy sidecar and the test which was blocking the celestia-node integration. This PR proposes a solution for it.

Thank you @smuu for helping in finding the bug.

Summary by CodeRabbit

coderabbitai[bot] commented 1 week ago

Walkthrough

The changes in this pull request involve modifications to the observability_test.go, otel.go, helpers.go, and obsy.go files. In observability_test.go, several constants and variables are updated for improved configurability, including the introduction of a new scrapeInterval constant and a more dynamic command string. In otel.go, a new LoggingExporter struct is introduced, along with methods for handling logging exporters. Additionally, helpers.go adds a method for setting the logging exporter, and obsy.go introduces a new configuration field for the logging exporter log level.

Changes

File Path Change Summary
e2e/basic/observability_test.go - Updated TestObservabilityCollector with dynamic prometheusArgs and added scrapeInterval.
- Modified targetStartCommand for dynamic otlpPort.
- Changed scrape_interval to use scrapeInterval.
- Updated target instance name format.
- Reduced wait time from 60 seconds to 20 seconds.
- Added TestObservabilityCollectorWithLogging for logging verification.
pkg/sidecars/observability/otel.go - Introduced LoggingExporter struct with LogLevel field.
- Added createLoggingExporter method.
- Updated methods to append logging exporter to metrics and traces pipelines.
- Added logic to reset metrics and traces if no exporters are present.
pkg/sidecars/observability/helpers.go - Added SetLoggingExporter method to set logging exporter with validation and default handling.
pkg/sidecars/observability/obsy.go - Added loggingExporterLogLevel field to ObsyConfig struct for logging configuration.
e2e/system/build_image_test.go - Updated expectedData in TestBuildWithBuildArgs from "Hello, build arg!" to "Hello, World!".

Sequence Diagram(s)

sequenceDiagram
    participant Test as TestObservabilityCollector
    participant Prometheus as Prometheus Config
    participant Service as Service
    participant Telemetry as Telemetry Struct
    participant Logging as LoggingExporter

    Test->>Prometheus: Set prometheusArgs with dynamic config
    Prometheus-->>Test: Return updated config
    Test->>Service: Initialize Service with Telemetry
    Service->>Telemetry: Set Address and Level
    Telemetry-->>Service: Return initialized Telemetry
    Service->>Test: Return Service with valid metrics and traces
    Test->>Logging: Set LoggingExporter with log level
    Logging-->>Test: Confirm LoggingExporter setup

πŸ‡ "In the code where changes abound,
New structures and constants are found.
With logging now in the mix,
Our observability gets its fix!
From waits that were long, now just a short hop,
Our tests are now ready, let’s make them pop!" πŸ‡

Possibly related PRs

Suggested reviewers


πŸ“œ Recent review details **Configuration used: CodeRabbit UI** **Review profile: CHILL**
πŸ“₯ Commits Reviewing files that changed from the base of the PR and between 495a4d472e9473f85c173c20450e32eeff6449dd and 6336782422020d01e4ead10ac95bd2555c458b27.
πŸ“’ Files selected for processing (1) * `e2e/system/build_image_test.go` (1 hunks)
πŸ”‡ Additional comments (1)
e2e/system/build_image_test.go (1) `103-103`: _:warning: Potential issue_ **Test might not effectively validate build arguments.** The change to `"Hello, World!"` weakens the test's ability to verify that build arguments are working correctly. A more distinctive value would better prove that the build argument is actually being used in the build process. Let's verify the Dockerfile contents to understand how the MESSAGE build arg is used: Suggestion: Consider changing back to a more distinctive message or using a unique format like: ```diff - expectedData = "Hello, World!" + expectedData = "BuildArg_Test_Message_12345" ``` This would make it clear that the value comes from the build argument rather than being hardcoded in the Dockerfile.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❀️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
πŸͺ§ Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.