Skip to content

Added OpenTelemetry support #269

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

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

he-is-harry
Copy link
Contributor

  • Added extension/OpenTelemetry.js to automatically wrap exec / execute /
    prepare / commit / rollback with OpenTelemetry tracing
    • Client will automatically wrap with OpenTelemetry tracing when
      isOpenTelemetryEnabled() is true
    • Most async functions will propagate context (except connect to match
      hana-client)
  • Added openTelemetry and openTelemetryTenant connect options
  • Added isOpenTelemetrySupported property to the driver (Hana class)
  • Added MockOpenTelemetrySDK and integration tests

Testing Notes
OpenTelemetry is only tested when the ENABLE_NODE_OPENTEL_TESTS environment
variable is set and not 0 or false. So the Makefile now has make test-opentelemetry
which will run the OpenTelemetry integration tests with this environment variable.

To install the MockOpenTelemetrySDK, copy the contents of the MockOpenTelemetrySDK
into node_modules/@opentelemetry/api

- Added extension/Dynatrace.js to wrap exec / execute / prepare functions with dynatrace tracing
    - Modified the Client to automatically wrap with dynatrace tracing when isDynatraceEnabled()
      is true (@dynatrace/oneagent-sdk is installed and HDB_NODEJS_SKIP_DYNATRACE is off) and
      the dynatrace connect option is true
- Added the dynatrace and dynatraceTenant connect options
- Modified ResultSet.js to have the getRowCount function
    - Added 2 unit tests for getRowCount
- Added the isDynatraceSupported field to the driver (Hana class)
- Added the MockDynatraceSDK for testing and added integration tests for dynatrace

Testing Notes
The Makefile was modified so that `make test-dynatrace` will test only the dynatrace integration tests

To install the MockDynatraceSDK, copy the contents of the MockDynatraceSDK folder into
node_modules/@dynatrace/oneagent-sdk

The integration tests were designed to be able to dynamically run on the mock dynatrace and the real
dynatrace depending on the node_modules import
- Updated the create table hook to allow the tests to be run without a config.json
- Modified Dynatrace.js result set callback to allow array results
  to indicate the rows returned not just result sets like before
- Added an integration test to check that an insert with execute
  would trace the number of rows affected
- Added an index check to ensure that the callback when preparing statements for
dynatrace exists and is a function
- Improved some test naming to better indicate client execute tests vs. client
exec and statement execute tests
- Added a comment to indicate when numbers are returned for rows affected
- Added extension/OpenTelemetry.js to automatically wrap exec / execute /
prepare / commit / rollback with OpenTelemetry tracing
    - Client will automatically wrap with OpenTelemetry tracing when
      isOpenTelemetryEnabled() is true
    - Most async functions will propagate context (except connect to match
      hana-client)
- Added openTelemetry and openTelemetryTenant connect options
- Added isOpenTelemetrySupported property to the driver (Hana class)
- Added MockOpenTelemetrySDK and integration tests

Testing Notes
OpenTelemetry is only tested when the ENABLE_NODE_OPENTEL_TESTS environment
variable is set and not 0 or false. So the Makefile now has `make test-opentelemetry`
which will run the OpenTelemetry integration tests with this environment variable.

To install the MockOpenTelemetrySDK, copy the contents of the MockOpenTelemetrySDK
into node_modules/@opentelemetry/api
- Added 10 seconds of delay before external traces tests are done
when testing with real tracing backends to give them time to log
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.

1 participant