Skip to content

Add comprehensive test coverage for parser libraries#168

Merged
vkmc merged 2 commits into
masterfrom
improve-test-coverage-parser-libraries
Jan 23, 2026
Merged

Add comprehensive test coverage for parser libraries#168
vkmc merged 2 commits into
masterfrom
improve-test-coverage-parser-libraries

Conversation

@vkmc
Copy link
Copy Markdown
Contributor

@vkmc vkmc commented Jan 23, 2026

Ceilometer:

  • ParseInputJSON with various message formats
  • ParseInputMsgPack for msgpack parsing
  • sanitize function with escaped quotes and payload formatting
  • Error handling for invalid JSON and malformed data
  • Edge cases: empty payloads, multiple metrics, user metadata

Collectd:

  • ParseInputByte for all metric variations
  • Multi-dimensional metrics with multiple values
  • Optional fields (plugin_instance, type_instance)
  • Error handling for invalid JSON and non-array data
  • Edge cases: empty arrays, zero values, negative values, large values
  • Real-world virt plugin data formats

Sensu:

  • IsMsgValid: validation with all required/optional fields, missing fields
  • IsOutputValid: single/multiple services, empty arrays, invalid outputs
  • BuildMsgErr: error building for missing message fields
  • BuildOutputsErr: error building for missing output fields with indices
  • ErrMissingFields: error type testing, message formatting, field addition

vkmc and others added 2 commits January 23, 2026 09:42
Ceilometer:
- ParseInputJSON with various message formats
- ParseInputMsgPack for msgpack parsing
- sanitize function with escaped quotes and payload formatting
- Error handling for invalid JSON and malformed data
- Edge cases: empty payloads, multiple metrics, user metadata

Collectd:
- ParseInputByte for all metric variations
- Multi-dimensional metrics with multiple values
- Optional fields (plugin_instance, type_instance)
- Error handling for invalid JSON and non-array data
- Edge cases: empty arrays, zero values, negative values, large values
- Real-world virt plugin data formats

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Create test file for sensubility-metrics sensu parser library with
complete coverage of all validation and error building functions.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@vkmc vkmc merged commit c88d6bb into master Jan 23, 2026
20 of 21 checks passed
@vkmc vkmc deleted the improve-test-coverage-parser-libraries branch January 23, 2026 10:20
vkmc added a commit that referenced this pull request Jan 23, 2026
* Pin Ceilometer to stable/2024.2 (#154)

Even though we are pinning to the stable/2024.2
when cloning Devstack, we are pulling Ceilometer
requirements from the master branch and this is
generating dependencies conflict.

Explicitily set stable/2024.2 branch when cloning
Ceilometer to fix this.

Closes-Bug: OSPRH-19908

* Bump gopkg.in/yaml.v3 from 3.0.0 to 3.0.1 (#153)

---
updated-dependencies:
- dependency-name: gopkg.in/yaml.v3
  dependency-version: 3.0.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Victoria Martinez de la Cruz <victoria@redhat.com>

* Protect the expiryProc list with a mutex (#155)

The container/list data structure used in expiry.go is not safe for concurrent use.
See golang/go#25105

Serialize the access to the shared list to avoid having check() on empty lists.

Closes-Bug: OSPRH-18979

* Fix long message handling with dynamic buffer growth (#158)

The socket transport plugin used a fixed 64KB buffer size
which caused messages surpassing that size to be truncated

For UDP/Unix datagram sockets, this resulted in parsing errors
like "unexpected end of input"

This change allows the buffer to grow (up to a limit depending on the
protocol) to accommodate larger messages.

* Create helper functions for TCP connection handling

* Add helper sendUDPSocketMessage

* Update TestUnixSocketTransport large message test

This test verifies the dynamic buffer growth by sending
three messages

In each iteration the buffer grows from the initial size
of 65535 bytes to 3 times the initial size.

Also verifies the content of the received message

Closes: OSPRH-23826

* Update to golang 1.24.11 (#159)

* Fix non-constant format string in call

Go 1.24.11 has stricter checking for format strings
in printf-style functions to prevent format string
vulnerabilities.

* Bump golangci-lint version to 1.64.2

* Replace exportloopref for copyloopvar

The linter 'exportloopref' is deprecated (since v1.60.2)

* Update coveralls-badge workflow to be non-blocking (#160)

Added "continue-on-error: true" to prevent badge failures from blocking PRs.

Explicitly defined pull-requests: write permissions for GITHUB_TOKEN.

Added try-catch safety logic and async/await to the script.

* Improve test coverage for expiry.go (#164)

Add tests for check() edge cases, run() function, and concurrent access.

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* Improve test coverage for prometheus application plugin (#166)

Add tests for New, Config, PromCollector methods, metricExpiry,
collectorExpiry, ReceiveMetric, UpdateMetrics, Describe, and Collect.
Omit logging and HTTP server tests.

* Fix golangci-lint empty-block error in prometheus tests

Replace empty for-range loop with explicit assignment to satisfy revive linter.

* Add timestamp verification assertions to prometheus collector tests

Enhance test coverage by adding assertions that verify the presence or
absence of timestamps in collected metrics. The "collect with timestamp"
test now verifies that metrics include the expected timestamp value,
while the "collect with zero timestamp" test confirms that metrics with
zero timestamps are sent without timestamp metadata.

Also fixes default port assertion and cleans up empty-block lint issue.

* Fix golangci-lint empty-block error in channel drain loop

Replace empty for-range loop with explicit variable usage to resolve
the revive empty-block linting error.

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* Improve test coverage for socket transport plugin (#165)

Add tests for Config, New, Listen, init errors, dump messages, and TCP parsing edge cases.

* Fix golangci-lint errors in socket transport tests

- Check error returns from binary.Write calls
- Reduce file permissions from 0644 to 0600

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Add comprehensive test coverage for parser libraries (#168)

Ceilometer:
- ParseInputJSON with various message formats
- ParseInputMsgPack for msgpack parsing
- sanitize function with escaped quotes and payload formatting
- Error handling for invalid JSON and malformed data
- Edge cases: empty payloads, multiple metrics, user metadata

Collectd:
- ParseInputByte for all metric variations
- Multi-dimensional metrics with multiple values
- Optional fields (plugin_instance, type_instance)
- Error handling for invalid JSON and non-array data
- Edge cases: empty arrays, zero values, negative values, large values
- Real-world virt plugin data formats

* Add comprehensive test coverage for sensu parser library

Create test file for sensubility-metrics sensu parser library with
complete coverage of all validation and error building functions.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Add test coverage for manager package (#167)

Create manager_test.go test cases covering setter functions, plugin initialization error paths, and edge cases.

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant