Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pkg/ottl] Add negation to the grammar #16553

Merged
merged 3 commits into from
Dec 2, 2022

Conversation

TylerHelmuth
Copy link
Member

Description:
Adds negation in the form of the not keyward to OTTL conditions. Allows for negation of constants, comparisons, and sub expressions:

true and not false
not name == "foo"
not (IsMatch(name, "http_.*") == true and kind > 0)

Link to tracking Issue:
Related to #16413

Testing:
Added unit tests

Documentation:
Updated grammar doc

@@ -136,7 +136,8 @@ Boolean Expressions allow a decision to be made about whether an Invocation shou

Boolean Expressions consist of the literal string `where` followed by one or more Booleans (see below).
Booleans can be joined with the literal strings `and` and `or`.
Note that `and` Boolean Expressions have higher precedence than `or`.
Booleans can be negated with the literal string `not`.
Note that `and` Boolean Expressions have higher precedence than `or` and `not` has the highest precedence.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor, but could we either word the sentence to talk about these in order of precedence, or put the keywords in an ordered list?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Attempted a rewording

@runforesight
Copy link

runforesight bot commented Dec 1, 2022

Foresight Summary

    
Major Impacts

build-and-test-windows duration(3 seconds) has decreased 33 minutes 21 seconds compared to main branch avg(33 minutes 24 seconds).
View More Details

✅  tracegen workflow has finished in 1 minute 24 seconds (1 minute less than main branch avg.) and finished at 1st Dec, 2022.


Job Failed Steps Tests
build-dev -     🔗  N/A See Details
publish-latest -     🔗  N/A See Details
publish-stable -     🔗  N/A See Details

✅  check-links workflow has finished in 1 minute 24 seconds (45 seconds less than main branch avg.) and finished at 1st Dec, 2022.


Job Failed Steps Tests
changed files -     🔗  N/A See Details
check-links -     🔗  N/A See Details

✅  prometheus-compliance-tests workflow has finished in 3 minutes 45 seconds (4 minutes 22 seconds less than main branch avg.) and finished at 1st Dec, 2022.


Job Failed Steps Tests
prometheus-compliance-tests -     🔗  ✅ 21  ❌ 0  ⏭ 0    🔗 See Details

✅  load-tests workflow has finished in 8 minutes 9 seconds (5 minutes 41 seconds less than main branch avg.) and finished at 1st Dec, 2022.


Job Failed Steps Tests
loadtest (TestIdleMode) -     🔗  ✅ 1  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestTraceAttributesProcessor) -     🔗  ✅ 3  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestMetric10kDPS TestMetricsFromFile) -     🔗  ✅ 6  ❌ 0  ⏭ 0    🔗
loadtest (TestTraceNoBackend10kSPS TestTrace1kSPSWithAttrs) -     🔗  ✅ 8  ❌ 0  ⏭ 0    🔗
loadtest (TestMetricResourceProcessor TestTrace10kSPS) -     🔗  ✅ 12  ❌ 0  ⏭ 0    🔗
loadtest (TestTraceBallast1kSPSWithAttrs TestTraceBallast1kSPSAddAttrs) -     🔗  ✅ 10  ❌ 0  ⏭ 0    🔗
loadtest (TestBallastMemory TestLog10kDPS) -     🔗  ✅ 19  ❌ 0  ⏭ 0    🔗
setup-environment -     🔗  N/A See Details

✅  build-and-test workflow has finished in 1 hour 6 minutes 3 seconds (⚠️ 11 minutes 22 seconds more than main branch avg.) and finished at 1st Dec, 2022.


Job Failed Steps Tests
unittest-matrix (1.19, internal) -     🔗  ✅ 591  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, processor) -     🔗  ✅ 1462  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, extension) -     🔗  ✅ 525  ❌ 0  ⏭ 0    🔗 See Details
correctness-metrics -     🔗  ✅ 0  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.18, extension) -     🔗  ✅ 525  ❌ 0  ⏭ 0    🔗 See Details
correctness-traces -     🔗  ✅ 0  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.18, processor) -     🔗  ✅ 1462  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.18, internal) -     🔗  ✅ 591  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.18, receiver-0) -     🔗  ✅ 2510  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, receiver-0) -     🔗  ✅ 2509  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, exporter) -     🔗  ✅ 2410  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.18, other) -     🔗  ✅ 4345  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.18, exporter) -     🔗  ✅ 2410  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, receiver-1) -     🔗  ✅ 1832  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, other) -     🔗  ✅ 4355  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.18, receiver-1) -     🔗  ✅ 1832  ❌ 0  ⏭ 0    🔗 See Details
integration-tests -     🔗  ✅ 59  ❌ 0  ⏭ 0    🔗 See Details
setup-environment -     🔗  N/A See Details
check-collector-module-version -     🔗  N/A See Details
checks -     🔗  N/A See Details
check-codeowners -     🔗  N/A See Details
build-examples -     🔗  N/A See Details
lint-matrix (receiver-0) -     🔗  N/A See Details
lint-matrix (receiver-1) -     🔗  N/A See Details
lint-matrix (processor) -     🔗  N/A See Details
lint-matrix (exporter) -     🔗  N/A See Details
lint-matrix (extension) -     🔗  N/A See Details
lint-matrix (internal) -     🔗  N/A See Details
lint-matrix (other) -     🔗  N/A See Details
lint -     🔗  N/A See Details
unittest (1.19) -     🔗  N/A See Details
unittest (1.18) -     🔗  N/A See Details
cross-compile (darwin, amd64) -     🔗  N/A See Details
cross-compile (darwin, arm64) -     🔗  N/A See Details
cross-compile (linux, 386) -     🔗  N/A See Details
cross-compile (linux, amd64) -     🔗  N/A See Details
cross-compile (linux, arm) -     🔗  N/A See Details
cross-compile (linux, arm64) -     🔗  N/A See Details
cross-compile (linux, ppc64le) -     🔗  N/A See Details
cross-compile (windows, 386) -     🔗  N/A See Details
cross-compile (windows, amd64) -     🔗  N/A See Details
build-package (deb) -     🔗  N/A See Details
build-package (rpm) -     🔗  N/A See Details
windows-msi -     🔗  N/A See Details
publish-check -     🔗  N/A See Details
publish-stable -     🔗  N/A See Details
publish-dev -     🔗  N/A See Details

⭕  build-and-test-windows workflow has finished in 3 seconds (33 minutes 21 seconds less than main branch avg.) and finished at 1st Dec, 2022.


Job Failed Steps Tests
windows-unittest-matrix -     🔗  N/A See Details
windows-unittest -     🔗  N/A See Details

✅  changelog workflow has finished in 2 minutes 2 seconds (3 minutes less than main branch avg.) and finished at 1st Dec, 2022.


Job Failed Steps Tests
changelog -     🔗  N/A See Details

🔎 See details on Foresight

*You can configure Foresight comments in your organization settings page.

@TylerHelmuth TylerHelmuth added the ready to merge Code review completed; ready to merge by maintainers label Dec 1, 2022
@bogdandrutu bogdandrutu merged commit 80f76c2 into open-telemetry:main Dec 2, 2022
@TylerHelmuth TylerHelmuth deleted the ottl-not branch December 2, 2022 16:40
shalper2 pushed a commit to shalper2/opentelemetry-collector-contrib that referenced this pull request Dec 6, 2022
* Add negation to the grammar

* changelog

* Reword
@plantfansam plantfansam mentioned this pull request Jul 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pkg/ottl ready to merge Code review completed; ready to merge by maintainers
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants