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

test: Fix inverted exact match logic in IntegrationTcpClient::waitForData() #4134

Merged

Conversation

jrajahalme
Copy link
Contributor

The initial check in IntegrationTcpClient::waitForData() did exact
match check when 'exact_match' parameter was 'false', and an inexact
match when 'exact_match' parameter was 'true'. If the initial test
fails, the forthcoming test in WaitForPayloadReader::onData() was
using the logically correct interpretation of the 'exact_match'
parameter.

This resulted in wait never completing for inexact matches
that should have matched data that was already received. The correct
test in WaitForPayloadReader::onData() would always correctly match
data that is received after IntegrationTcpClient::waitForData() is
called.

Fix the incorrect logic by reuing the logical pattern of
WaitForPayloadReader::onData() also in
IntegrationTcpClient::waitForData(), except for not skipping the exact
match on an empty search string.

Testing: Added a iine in TCP proxy integration test that fails/hangs
without the fix.
Risk Level: Low
Signed-off-by: Jarno Rajahalme jarno@covalent.io

…Data()

The initial check in IntegrationTcpClient::waitForData() did exact
match check when 'exact_match' parameter was 'false', and an inexact
match when 'exact_match' parameter was 'true'. If the initial test
fails, the forthcoming test in WaitForPayloadReader::onData() was
using the logically correct interpretation of the 'exact_match'
parameter.

This resulted in wait never completing for inexact matches
that should have matched data that was already received. The correct
test in WaitForPayloadReader::onData() would always correctly match
data that is received after IntegrationTcpClient::waitForData() is
called.

Fix the incorrect logic by reuing the logical pattern of
WaitForPayloadReader::onData() also in
IntegrationTcpClient::waitForData(), except for not skipping the exact
match on an empty search string.

Testing: Added a iine in TCP proxy integration test that fails/hangs
without the fix.

Signed-off-by: Jarno Rajahalme <jarno@covalent.io>
Copy link
Member

@mattklein123 mattklein123 left a comment

Choose a reason for hiding this comment

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

Thanks! Logic much clearer now.

@mattklein123 mattklein123 merged commit fde3787 into envoyproxy:master Aug 13, 2018
snowp added a commit to snowp/envoy that referenced this pull request Aug 14, 2018
* origin/master: (38 commits)
  test: add tests for corner-cases around sending requests before run() starts or after run() ends. (envoyproxy#4114)
  perf: reduce the memory usage of LC Trie construction (envoyproxy#4117)
  test: moving redundant code in websocket_integration_test to utilities (envoyproxy#4127)
  test: make YamlLoadFromStringFail less picky about error msg. (envoyproxy#4141)
  rbac: add rbac network filter. (envoyproxy#4083)
  fuzz: route lookup and header finalization fuzzer. (envoyproxy#4116)
  Set content-type and content-length (envoyproxy#4113)
  fault: use FractionalPercent for percent (envoyproxy#3978)
  test: Fix inverted exact match logic in IntegrationTcpClient::waitForData() (envoyproxy#4134)
  Added cluster_name to load assignment config for static cluster (envoyproxy#4123)
  ssl: refactor ContextConfig to use TlsCertificateConfig (envoyproxy#4115)
  syscall: refactor OsSysCalls for deeper errno latching (envoyproxy#4111)
  thrift_proxy: fix oneway bugs (envoyproxy#4025)
  Do not crash when converting YAML to JSON fails (envoyproxy#4110)
  config: allow unknown fields flag (take 2) (envoyproxy#4096)
  Use a jittered backoff strategy for handling HdsDelegate stream/connection failures (envoyproxy#4108)
  bazel: use GCS remote cache (envoyproxy#4050)
  Add thread local cache of overload action states (envoyproxy#4090)
  Added TCP healthcheck capabilities to the HdsDelegate (envoyproxy#4079)
  secret: add secret provider interface and use it for TlsCertificates (envoyproxy#4086)
  ...

Signed-off-by: Snow Pettersen <snowp@squareup.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants