Skip to content

Conversation

@jdheyburn
Copy link
Contributor

  • Bug

Redis replication role was added in below PR:

However it did not correctly deserialize the response, this PR fixes that.

Proposed commit message

Correctly parse Redis role values in connection receive

Checklist

  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have made corresponding change to the default configuration files
  • I have added tests that prove my fix is effective or that my feature works
  • I have added an entry in CHANGELOG.next.asciidoc or CHANGELOG-developer.next.asciidoc.

Disruptive User Impact

N/A

Author's Checklist

  • [ ]

How to test this PR locally

Related issues

Use cases

Screenshots

Logs

@jdheyburn jdheyburn requested a review from a team as a code owner January 6, 2025 18:09
@jdheyburn jdheyburn requested review from belimawr and rdner January 6, 2025 18:09
@botelastic botelastic bot added the needs_team Indicates that the issue/PR needs a Team:* label label Jan 6, 2025
@mergify
Copy link
Contributor

mergify bot commented Jan 6, 2025

This pull request does not have a backport label.
If this is a bug or security fix, could you label this PR @jdheyburn? 🙏.
For such, you'll need to label your PR with:

  • The upcoming major version of the Elastic Stack
  • The upcoming minor version of the Elastic Stack (if you're not pushing a breaking change)

To fixup this pull request, you need to add the backport labels for the needed
branches, such as:

  • backport-8./d is the label to automatically backport to the 8./d branch. /d is the digit

@mergify
Copy link
Contributor

mergify bot commented Jan 6, 2025

backport-8.x has been added to help with the transition to the new branch 8.x.
If you don't need it please use backport-skip label and remove the backport-8.x label.

@mergify mergify bot added the backport-8.x Automated backport to the 8.x branch with mergify label Jan 6, 2025
@jdheyburn jdheyburn force-pushed the jdheyburn/filebeat/redis/role-fix branch from 36c54f2 to 521bc6d Compare January 6, 2025 18:11
@jdheyburn jdheyburn closed this Jan 6, 2025
@jdheyburn jdheyburn force-pushed the jdheyburn/filebeat/redis/role-fix branch from 521bc6d to e3e2332 Compare January 6, 2025 18:15
@jdheyburn jdheyburn reopened this Jan 6, 2025
@belimawr
Copy link
Contributor

belimawr commented Jan 7, 2025

@jdheyburn could you add a test to show that this fix works? There is already an integration test on this package (filebeat/input/redis/redis_integration_test.go) that can be a good starting point.

@jdheyburn
Copy link
Contributor Author

Thanks @belimawr, I am unsure if the integration test is doing much besides seeing if it can establish a connection to Redis. Would it make more sense to enhance the below instead to verify that it is a string being returned?

@belimawr
Copy link
Contributor

belimawr commented Jan 7, 2025

Thanks @belimawr, I am unsure if the integration test is doing much besides seeing if it can establish a connection to Redis. Would it make more sense to enhance the below instead to verify that it is a string being returned?

That does make sense, however, we are trying to move away from those python tests and migrate them to Go. Currently we're doing our bests not to write new python tests (or add functionalities to them).

If you could add this validation to the Go test filebeat/input/redis/redis_integration_test.go it would be much better.

@jdheyburn
Copy link
Contributor Author

@belimawr I appreciate the path going forward is to use the Go integration tests, but I believe this increases the scope of the PR which is a bug fix. For this iteration could we continue to use the Python test and any net new functionality gets added as a Go integration test?

@belimawr
Copy link
Contributor

@belimawr I appreciate the path going forward is to use the Go integration tests, but I believe this increases the scope of the PR which is a bug fix. For this iteration could we continue to use the Python test and any net new functionality gets added as a Go integration test?

I see your point, but if we keeping adding functionalities to python tests we might never get rid of them. Also looking at the Go integration test, I believe it will be simple to add an extra check here:

case event := <-eventsCh:
val, err := event.GetValue("message")
require.NoError(t, err)
require.Equal(t, message, val)

@jdheyburn
Copy link
Contributor Author

@belimawr I'm trying to pick this up again. There seems to be little to no documentation on how I can run these integration tests. I am trying to validate that the below is what is required for the test?

select {
	case event := <-eventsCh:
		val, err := event.GetValue("message")
		require.NoError(t, err)
		require.Equal(t, message, val)

		val, err = event.GetValue("redis.slowlog.role")
		require.NoError(t, err)
		require.Equal(t, "master", val)
	case <-time.After(30 * time.Second):
		t.Fatal("Timeout waiting for event")
	}

I would appreciate any pointers you have for me to be able to add the desired test.

@pierrehilbert pierrehilbert added the Team:Elastic-Agent-Data-Plane Label for the Agent Data Plane team label Feb 19, 2025
@botelastic botelastic bot removed the needs_team Indicates that the issue/PR needs a Team:* label label Feb 19, 2025
@elasticmachine
Copy link
Contributor

Pinging @elastic/elastic-agent-data-plane (Team:Elastic-Agent-Data-Plane)

@belimawr
Copy link
Contributor

I would appreciate any pointers you have for me to be able to add the desired test.

You need to start the docker container dependencies, then run the tests with the integration build flag:

cd filebeat
mage Docker:ComposeUp
go test -tags=integration -v -run=TestInput ./input/redis

Once you're done, you can bring down the containers with:

mage Docker:ComposeDown

If you need to debug the tests, you can use:

cd input/redis
dlv test --build-flags="-tags=integration" . -- -test.run=TestInput

@jdheyburn jdheyburn force-pushed the jdheyburn/filebeat/redis/role-fix branch from e7e0286 to cd5bf04 Compare February 28, 2025 13:45
@jdheyburn
Copy link
Contributor Author

Thanks @belimawr, I was able to get an integration test working, and adjust the fix in the process! I'd love a review when you're able to.

@rdner rdner removed their request for review March 7, 2025 12:01
@jdheyburn
Copy link
Contributor Author

@belimawr Is it possible to get this PR merged assuming it has all the necessary approvals? Thanks!

@belimawr
Copy link
Contributor

Hi @jdheyburn, I'll take care of getting CI running and merging it. Sorry about the delay.

@belimawr
Copy link
Contributor

buildkite test this

1 similar comment
@pierrehilbert
Copy link
Contributor

buildkite test this

@belimawr
Copy link
Contributor

/test

@belimawr belimawr merged commit 19a724d into elastic:main Mar 19, 2025
32 checks passed
mergify bot pushed a commit that referenced this pull request Mar 19, 2025
…in connection receive (#42222)

---------

Co-authored-by: Tiago Queiroz <[email protected]>
(cherry picked from commit 19a724d)
belimawr pushed a commit that referenced this pull request Mar 19, 2025
…in connection receive (#42222) (#43361)

---------

Co-authored-by: Tiago Queiroz <[email protected]>
(cherry picked from commit 19a724d)

Co-authored-by: Joseph Heyburn <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-8.x Automated backport to the 8.x branch with mergify Team:Elastic-Agent-Data-Plane Label for the Agent Data Plane team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants