Skip to content

Extended span compression support to spans without service target#944

Merged
SergeyKleyman merged 54 commits intoelastic:mainfrom
SergeyKleyman:5__Span_compression
May 9, 2023
Merged

Extended span compression support to spans without service target#944
SergeyKleyman merged 54 commits intoelastic:mainfrom
SergeyKleyman:5__Span_compression

Conversation

@SergeyKleyman
Copy link
Contributor

@SergeyKleyman SergeyKleyman commented May 4, 2023

Closes #645
Closes #672

…yStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR
…yStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR
@SergeyKleyman SergeyKleyman self-assigned this May 4, 2023
@SergeyKleyman SergeyKleyman marked this pull request as ready for review May 8, 2023 08:11
@SergeyKleyman SergeyKleyman requested a review from intuibase May 8, 2023 08:13
@SergeyKleyman SergeyKleyman merged commit 5cc4ae2 into elastic:main May 9, 2023
@SergeyKleyman SergeyKleyman deleted the 5__Span_compression branch May 9, 2023 13:43
SergeyKleyman added a commit that referenced this pull request May 18, 2023
* Fixed a few formatting issues (#925)

* Improved formatting in AllOptionsMetadata.php

* Improved formatting in Logger_tests.c

* Improved formatting in src/ext/log.c

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/AllComponentTestsOptionsMetadata.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/RawDataFromAgent.php

* Improved formatting in tests.ElasticApmTests.ComponentTests.ConfigSettingTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/PDOTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php (part 2)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed a few naming issues (#926)

* Improved formatting in AllOptionsMetadata.php

* Improved formatting in Logger_tests.c

* Improved formatting in src/ext/log.c

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/AllComponentTestsOptionsMetadata.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/RawDataFromAgent.php

* Improved formatting in tests.ElasticApmTests.ComponentTests.ConfigSettingTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/PDOTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php (part 2)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Renamed BootstrapStageLogger::logLevel to logWithLevel

* Renamed ELASTIC_APM_LOG_WRITE_TO_SYSLOG to ELASTIC_APM_LOG_TO_BACKGROUND_SINK

* Fixed typo in local variable name

* Added clarification in the online documentation that log_* configuration is for supportability only (#939)

* Clarified that log_* is for supportability only

* Apply suggestions from code review

Co-authored-by: Brandon Morelli <bmorelli25@gmail.com>

---------

Co-authored-by: Brandon Morelli <bmorelli25@gmail.com>

* Refactored some code (#927)

* Improved formatting in AllOptionsMetadata.php

* Improved formatting in Logger_tests.c

* Improved formatting in src/ext/log.c

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/AllComponentTestsOptionsMetadata.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/RawDataFromAgent.php

* Improved formatting in tests.ElasticApmTests.ComponentTests.ConfigSettingTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/PDOTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php (part 2)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Renamed BootstrapStageLogger::logLevel to logWithLevel

* Renamed ELASTIC_APM_LOG_WRITE_TO_SYSLOG to ELASTIC_APM_LOG_TO_BACKGROUND_SINK

* Fixed typo in local variable name

* Added Logger::if*LevelEnabledNoLine for all the remaining log levels

* Added ability to inherit context from LoggerFactory

* Make ArrayUtil::getValueIfKeyExists a template instead of mixed

* Added ArrayUtil::append

* Marked captureInClassicFormatExcludeElasticApm $loggerFactory as nullable

StackTraceUtil::captureInClassicFormatExcludeElasticApm

* Removed redundant type-hint

* Added ELASTIC_APM_BUILD_PHP_VERSION_ID

* Removed declaration of unused makeDynamicArray()

* Added src/ext/ArrayView.h

* Added string related utility functions

* Added string related utility functions (part 2)

* Split ConfigManager.h into multiple more manageable headers

* Split ConfigManager.h into multiple more manageable headers (part 2)

* Split ConfigManager.h into multiple more manageable headers (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 4)

* Added string related utility functions (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 5)

* Split big header files into multiple more manageable headers (part 6)

* Split big header files into multiple more manageable headers (part 7)

* enum LogLevel to a separate header (LogLevel.h)

* Added maxEnabledLogLevel()

* Added ELASTIC_APM_LOG_DIRECT_INFO

* Added missing include

* Added // NOLINT for ELASTIC_APM_FOR_EACH_INDEX_START_END

* Clarified structure of a header added to each allocation for track it

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h

* Extracted OptionalBool to its own header (OptionalBool.h)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 2)

* Made implicit casts explcit

* Added openFile to have "safe fopen" similar to fopen_s available on Windows

* Added openFile to have "safe fopen" similar to fopen_s available on Windows (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 3)

* Added resultBufferIsTooSmall to ResultCode

* Renamed ELASTIC_APM_CALL_EARLY_GOTO_FINALLY_WITH_SUCCESS to ELASTIC_APM_SET_RESULT_CODE_TO_SUCCESS_AND_GOTO_FINALLY

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 4)

* Split ConfigManager.h into multiple more manageable headers (part 6)

* Split ConfigManager.h into multiple more manageable headers (part 7)

* Removed unused ELASTIC_APM_PHP_PART_ON_PHP_ERROR_FUNC and ELASTIC_APM_PHP_PART_SET_LAST_THROWN_FUNC

* Split ConfigManager.h into multiple more manageable headers (part 8)

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 5)

* Added zend_string related utility functions

* Added missing include-s

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part

* Removed unused import (tests/ElasticApmTests/ComponentTests/Util/ResourcesClient.php)

* Replaced ComponentTestCaseBase::getMandatoryAppCodeArg + assertIs<expected type> by get<expected type>FromMap

* Removed unused import (tests/ElasticApmTests/Util/Deserialization/ServerApiSchemaValidator.php)

* Added /* in,out */ to ArrayUtilForTests::append

* Added AssertMessageBuilder::buildString

* Removed unused import (tests/ElasticApmTests/Util/TestCaseBase.php)

* DataProviderForTestBuilder: Have keys included in logged data-set

* Added MixedMap

* Made IterableUtilForTests::iterableToGenerator a function template

instead of being based on mixed type-hint

* Added comments to calls of ArrayUtilForTests::append

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part (part 2)

* Fixed imports in ComponentTestCaseBase.php

* Fixed incorrect merge

* Added missing include

* Added retries on "composer install" has an intermittent failure

* Log PhpUnitExtensionBase::$timestampBeforeTest when setting it

* Use TimeUtilForTests::timestampToLoggable in assertLessThanOrEqualTimestamp

* Applied runAndEscalateLogLevelOnFailure to testAllWaysToSetConfig

from ConfigSettingTest class

* Improved supportability (#941)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Added INTERNAL_CHECKS_LEVEL to OptionNames.php

* Added maxNumberOfStackFrames as parameter to 

LoggableStackTrace::buildForCurrent instead having hardcoded

* Removed static from constructConfigManagerMetadata to have on stack trace

* Log stack trace on failed ASSERT in native part

* Set g_elasticApmDirectLogLevel* to default values so that they can be used even before configuration is parsed

* Documented that agent uses PHP's error_reporting (#938)

* Documented that agent uses PHP's error_reporting

* Reworded part of "PHP errors as APM error events" section

* Made sure all the supported configuration options are documented (#940)

* Documented that agent uses PHP's error_reporting

* Clarified that log_* is for supportability only

* Documented capture_errors

* Fixed incorrect quotes placement

* Improved description for disable_instrumentations

* Apply suggestions from code review

Co-authored-by: Brandon Morelli <bmorelli25@gmail.com>

* Fixed merge

---------

Co-authored-by: Brandon Morelli <bmorelli25@gmail.com>

* Update supported-technologies.asciidoc (#952)

Added Laravel 10 to the list of versions of Laravel

* Update supported-technologies.asciidoc (#952)

Added Laravel 10 to the list of versions of Laravel

* Update supported-technologies.asciidoc (#952)

Added Laravel 10 to the list of versions of Laravel

* Fixed addDelayToAbsTimeSpec for the case when (#953)

when delayInNanoseconds >= NANOSECONDS_IN_SECOND

* Extended span compression support to spans without service target (#944)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Removed unused imports

* Extended span compression to spans without service target

* Removed redundant comment

* Clarified docs

* Added workaround for false positives from static analysis

* Simplified parallel-lint invocation

* Fixed unit tests failing on PHP 7.2

* Fixed issue found by static analysis

* Fixed formatting

* Fixed formatting

* Added --exclude ./tests/polyfills/

* Removed TestCaseBaseShim

* Fixed failing unit test

* Added ELASTIC_APM_PHP_TESTS_IS_LONG_RUN_MODE

* Reduced number of datasets from dataProviderForTestReasonsCompressionStops

* Run testOneCompressedSequence only in isLongRunMode

* Added check for isLongRunMode dataProviderForTestReasonsCompressionStops

* Fixed static analysis issue

* Fixed failing unit tests

* Temporarily hide TransactionMaxSpansUnitTest behind isLongRunMode

* Fixed unit tests

* Added diagnostics

* Fixed failing unit tests

* Added re-run with escalated log level to HttpTransactionTest::testHttpStatus

* Fixed failing component test

* Re-enabled SpanCompressionUnitTest::testReasonsCompressionStops

* chore: Updated the content of the file "/tmp/updatecli/github/elastic... (#942)

... /apm-agent-php/tests/APM_Agents_shared/gherkin-specs/otel_bridge.feature"

Made with ❤️️ by updatecli

Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>

* Prepare for additional instrumentation kind (#946)

* Improved formatting in AllOptionsMetadata.php

* Improved formatting in Logger_tests.c

* Improved formatting in src/ext/log.c

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/AllComponentTestsOptionsMetadata.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/RawDataFromAgent.php

* Improved formatting in tests.ElasticApmTests.ComponentTests.ConfigSettingTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/PDOTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php (part 2)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Renamed BootstrapStageLogger::logLevel to logWithLevel

* Renamed ELASTIC_APM_LOG_WRITE_TO_SYSLOG to ELASTIC_APM_LOG_TO_BACKGROUND_SINK

* Fixed typo in local variable name

* Added Logger::if*LevelEnabledNoLine for all the remaining log levels

* Added ability to inherit context from LoggerFactory

* Make ArrayUtil::getValueIfKeyExists a template instead of mixed

* Added ArrayUtil::append

* Marked captureInClassicFormatExcludeElasticApm $loggerFactory as nullable

StackTraceUtil::captureInClassicFormatExcludeElasticApm

* Removed redundant type-hint

* Added ELASTIC_APM_BUILD_PHP_VERSION_ID

* Removed declaration of unused makeDynamicArray()

* Added src/ext/ArrayView.h

* Added string related utility functions

* Added string related utility functions (part 2)

* Split ConfigManager.h into multiple more manageable headers

* Split ConfigManager.h into multiple more manageable headers (part 2)

* Split ConfigManager.h into multiple more manageable headers (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 4)

* Added string related utility functions (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 5)

* Split big header files into multiple more manageable headers (part 6)

* Split big header files into multiple more manageable headers (part 7)

* enum LogLevel to a separate header (LogLevel.h)

* Added maxEnabledLogLevel()

* Added ELASTIC_APM_LOG_DIRECT_INFO

* Added missing include

* Added // NOLINT for ELASTIC_APM_FOR_EACH_INDEX_START_END

* Clarified structure of a header added to each allocation for track it

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h

* Extracted OptionalBool to its own header (OptionalBool.h)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 2)

* Made implicit casts explcit

* Added openFile to have "safe fopen" similar to fopen_s available on Windows

* Added openFile to have "safe fopen" similar to fopen_s available on Windows (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 3)

* Added resultBufferIsTooSmall to ResultCode

* Renamed ELASTIC_APM_CALL_EARLY_GOTO_FINALLY_WITH_SUCCESS to ELASTIC_APM_SET_RESULT_CODE_TO_SUCCESS_AND_GOTO_FINALLY

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 4)

* Split ConfigManager.h into multiple more manageable headers (part 6)

* Split ConfigManager.h into multiple more manageable headers (part 7)

* Removed unused ELASTIC_APM_PHP_PART_ON_PHP_ERROR_FUNC and ELASTIC_APM_PHP_PART_SET_LAST_THROWN_FUNC

* Split ConfigManager.h into multiple more manageable headers (part 8)

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 5)

* Added zend_string related utility functions

* Added missing include-s

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part

* Removed unused import (tests/ElasticApmTests/ComponentTests/Util/ResourcesClient.php)

* Replaced ComponentTestCaseBase::getMandatoryAppCodeArg + assertIs<expected type> by get<expected type>FromMap

* Removed unused import (tests/ElasticApmTests/Util/Deserialization/ServerApiSchemaValidator.php)

* Added /* in,out */ to ArrayUtilForTests::append

* Added AssertMessageBuilder::buildString

* Removed unused import (tests/ElasticApmTests/Util/TestCaseBase.php)

* DataProviderForTestBuilder: Have keys included in logged data-set

* Added MixedMap

* Made IterableUtilForTests::iterableToGenerator a function template

instead of being based on mixed type-hint

* Added comments to calls of ArrayUtilForTests::append

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part (part 2)

* Fixed imports in ComponentTestCaseBase.php

* Fixed incorrect merge

* Added missing include

* Added retries on "composer install" has an intermittent failure

* Log PhpUnitExtensionBase::$timestampBeforeTest when setting it

* Use TimeUtilForTests::timestampToLoggable in assertLessThanOrEqualTimestamp

* Applied runAndEscalateLogLevelOnFailure to testAllWaysToSetConfig

from ConfigSettingTest class

* Added INTERNAL_CHECKS_LEVEL to OptionNames.php

* Added maxNumberOfStackFrames as parameter to 

LoggableStackTrace::buildForCurrent instead having hardcoded

* Removed static from constructConfigManagerMetadata to have on stack trace

* Log stack trace on failed ASSERT in native part

* Set g_elasticApmDirectLogLevel* to default values so that they can be used even before configuration is parsed

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Added optional dbgParamName for better diagnostics

* Distinguish between plugin name and keywords

Both name and keywords can be used to disable a plugin

* Removed unused imports

* Added 'internal-func' to names related to existing instrumentation (part 2)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added 'internal-func' to names related to existing instrumentation (part 3)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Removed unused imports

* Extended span compression to spans without service target

* Removed redundant comment

* Clarified docs

* Added workaround for false positives from static analysis

* Simplified parallel-lint invocation

* Fixed unit tests failing on PHP 7.2

* Fixed issue found by static analysis

* Fixed formatting

* Fixed formatting

* Added --exclude ./tests/polyfills/

* Removed TestCaseBaseShim

* Fixed failing unit test

* Added ELASTIC_APM_PHP_TESTS_IS_LONG_RUN_MODE

* Reduced number of datasets from dataProviderForTestReasonsCompressionStops

* Run testOneCompressedSequence only in isLongRunMode

* Added check for isLongRunMode dataProviderForTestReasonsCompressionStops

* Fixed static analysis issue

* Fixed failing unit tests

* Removed unused import

* Fixed merge

* Fixed merge

* Fixed merge

* Fixed merge

* Temporarily hide TransactionMaxSpansUnitTest behind isLongRunMode

* Fixed unit tests

* Added diagnostics

* Fixed failing unit tests

* Added re-run with escalated log level to HttpTransactionTest::testHttpStatus

* Fixed failing component test

* Re-enabled SpanCompressionUnitTest::testReasonsCompressionStops

* Fixed merge

* Fixed line endings

* Fixed line endings (CRLF -> LF) (#956)

* Fixed not joining background sender thread if there was fork after module init (#959)

* Fixed line endings (CRLF -> LF)

* Fixed not joining background sender thread if there was fork

Fixed not joining background sender thread if there was fork after module init

* Fixed not cleaning up connection data in sync backend comm. mode (#957)

* Fixed line endings (CRLF -> LF)

* Fixed not cleaning up connection data in sync backend comm. mode

* Fixed registration of pthread_atfork handlers (876) (#964)

* Fixed verify_server_cert=false not disabling all the checks related to HTTPS certificate (#965)

* Fixed verify_server_cert=false not disabling all the checks

* Removed setting CURLOPT_SSL_VERIFYSTATUS to 0 since 0 is the default

* Prevent deadloop in exception and error handlers (#955)

* added logging in case of potential deadloop
 * moved hook registration into MINIT/MSHUTDOWN

* Prepared for 1.8.4 release (#967)

---------

Co-authored-by: Brandon Morelli <bmorelli25@gmail.com>
Co-authored-by: Peter Steenbergen <psteenbergen@gmail.com>
Co-authored-by: apmmachine <58790750+apmmachine@users.noreply.github.com>
Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>
Co-authored-by: Pawel Filipczak <pawel.filipczak@elastic.co>
@SergeyKleyman SergeyKleyman added this to the 8.9 milestone May 22, 2023
SergeyKleyman added a commit that referenced this pull request Jun 22, 2023
* Fixed a few formatting issues (#925)

* Improved formatting in AllOptionsMetadata.php

* Improved formatting in Logger_tests.c

* Improved formatting in src/ext/log.c

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/AllComponentTestsOptionsMetadata.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/RawDataFromAgent.php

* Improved formatting in tests.ElasticApmTests.ComponentTests.ConfigSettingTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/PDOTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php (part 2)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed a few naming issues (#926)

* Improved formatting in AllOptionsMetadata.php

* Improved formatting in Logger_tests.c

* Improved formatting in src/ext/log.c

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/AllComponentTestsOptionsMetadata.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/RawDataFromAgent.php

* Improved formatting in tests.ElasticApmTests.ComponentTests.ConfigSettingTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/PDOTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php (part 2)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Renamed BootstrapStageLogger::logLevel to logWithLevel

* Renamed ELASTIC_APM_LOG_WRITE_TO_SYSLOG to ELASTIC_APM_LOG_TO_BACKGROUND_SINK

* Fixed typo in local variable name

* Added clarification in the online documentation that log_* configuration is for supportability only (#939)

* Clarified that log_* is for supportability only

* Apply suggestions from code review

Co-authored-by: Brandon Morelli <bmorelli25@gmail.com>

---------

Co-authored-by: Brandon Morelli <bmorelli25@gmail.com>

* Refactored some code (#927)

* Improved formatting in AllOptionsMetadata.php

* Improved formatting in Logger_tests.c

* Improved formatting in src/ext/log.c

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/AllComponentTestsOptionsMetadata.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/RawDataFromAgent.php

* Improved formatting in tests.ElasticApmTests.ComponentTests.ConfigSettingTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/PDOTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php (part 2)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Renamed BootstrapStageLogger::logLevel to logWithLevel

* Renamed ELASTIC_APM_LOG_WRITE_TO_SYSLOG to ELASTIC_APM_LOG_TO_BACKGROUND_SINK

* Fixed typo in local variable name

* Added Logger::if*LevelEnabledNoLine for all the remaining log levels

* Added ability to inherit context from LoggerFactory

* Make ArrayUtil::getValueIfKeyExists a template instead of mixed

* Added ArrayUtil::append

* Marked captureInClassicFormatExcludeElasticApm $loggerFactory as nullable

StackTraceUtil::captureInClassicFormatExcludeElasticApm

* Removed redundant type-hint

* Added ELASTIC_APM_BUILD_PHP_VERSION_ID

* Removed declaration of unused makeDynamicArray()

* Added src/ext/ArrayView.h

* Added string related utility functions

* Added string related utility functions (part 2)

* Split ConfigManager.h into multiple more manageable headers

* Split ConfigManager.h into multiple more manageable headers (part 2)

* Split ConfigManager.h into multiple more manageable headers (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 4)

* Added string related utility functions (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 5)

* Split big header files into multiple more manageable headers (part 6)

* Split big header files into multiple more manageable headers (part 7)

* enum LogLevel to a separate header (LogLevel.h)

* Added maxEnabledLogLevel()

* Added ELASTIC_APM_LOG_DIRECT_INFO

* Added missing include

* Added // NOLINT for ELASTIC_APM_FOR_EACH_INDEX_START_END

* Clarified structure of a header added to each allocation for track it

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h

* Extracted OptionalBool to its own header (OptionalBool.h)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 2)

* Made implicit casts explcit

* Added openFile to have "safe fopen" similar to fopen_s available on Windows

* Added openFile to have "safe fopen" similar to fopen_s available on Windows (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 3)

* Added resultBufferIsTooSmall to ResultCode

* Renamed ELASTIC_APM_CALL_EARLY_GOTO_FINALLY_WITH_SUCCESS to ELASTIC_APM_SET_RESULT_CODE_TO_SUCCESS_AND_GOTO_FINALLY

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 4)

* Split ConfigManager.h into multiple more manageable headers (part 6)

* Split ConfigManager.h into multiple more manageable headers (part 7)

* Removed unused ELASTIC_APM_PHP_PART_ON_PHP_ERROR_FUNC and ELASTIC_APM_PHP_PART_SET_LAST_THROWN_FUNC

* Split ConfigManager.h into multiple more manageable headers (part 8)

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 5)

* Added zend_string related utility functions

* Added missing include-s

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part

* Removed unused import (tests/ElasticApmTests/ComponentTests/Util/ResourcesClient.php)

* Replaced ComponentTestCaseBase::getMandatoryAppCodeArg + assertIs<expected type> by get<expected type>FromMap

* Removed unused import (tests/ElasticApmTests/Util/Deserialization/ServerApiSchemaValidator.php)

* Added /* in,out */ to ArrayUtilForTests::append

* Added AssertMessageBuilder::buildString

* Removed unused import (tests/ElasticApmTests/Util/TestCaseBase.php)

* DataProviderForTestBuilder: Have keys included in logged data-set

* Added MixedMap

* Made IterableUtilForTests::iterableToGenerator a function template

instead of being based on mixed type-hint

* Added comments to calls of ArrayUtilForTests::append

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part (part 2)

* Fixed imports in ComponentTestCaseBase.php

* Fixed incorrect merge

* Added missing include

* Added retries on "composer install" has an intermittent failure

* Log PhpUnitExtensionBase::$timestampBeforeTest when setting it

* Use TimeUtilForTests::timestampToLoggable in assertLessThanOrEqualTimestamp

* Applied runAndEscalateLogLevelOnFailure to testAllWaysToSetConfig

from ConfigSettingTest class

* Improved supportability (#941)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Added INTERNAL_CHECKS_LEVEL to OptionNames.php

* Added maxNumberOfStackFrames as parameter to 

LoggableStackTrace::buildForCurrent instead having hardcoded

* Removed static from constructConfigManagerMetadata to have on stack trace

* Log stack trace on failed ASSERT in native part

* Set g_elasticApmDirectLogLevel* to default values so that they can be used even before configuration is parsed

* Documented that agent uses PHP's error_reporting (#938)

* Documented that agent uses PHP's error_reporting

* Reworded part of "PHP errors as APM error events" section

* Made sure all the supported configuration options are documented (#940)

* Documented that agent uses PHP's error_reporting

* Clarified that log_* is for supportability only

* Documented capture_errors

* Fixed incorrect quotes placement

* Improved description for disable_instrumentations

* Apply suggestions from code review

Co-authored-by: Brandon Morelli <bmorelli25@gmail.com>

* Fixed merge

---------

Co-authored-by: Brandon Morelli <bmorelli25@gmail.com>

* Update supported-technologies.asciidoc (#952)

Added Laravel 10 to the list of versions of Laravel

* Update supported-technologies.asciidoc (#952)

Added Laravel 10 to the list of versions of Laravel

* Update supported-technologies.asciidoc (#952)

Added Laravel 10 to the list of versions of Laravel

* Fixed addDelayToAbsTimeSpec for the case when (#953)

when delayInNanoseconds >= NANOSECONDS_IN_SECOND

* Extended span compression support to spans without service target (#944)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Removed unused imports

* Extended span compression to spans without service target

* Removed redundant comment

* Clarified docs

* Added workaround for false positives from static analysis

* Simplified parallel-lint invocation

* Fixed unit tests failing on PHP 7.2

* Fixed issue found by static analysis

* Fixed formatting

* Fixed formatting

* Added --exclude ./tests/polyfills/

* Removed TestCaseBaseShim

* Fixed failing unit test

* Added ELASTIC_APM_PHP_TESTS_IS_LONG_RUN_MODE

* Reduced number of datasets from dataProviderForTestReasonsCompressionStops

* Run testOneCompressedSequence only in isLongRunMode

* Added check for isLongRunMode dataProviderForTestReasonsCompressionStops

* Fixed static analysis issue

* Fixed failing unit tests

* Temporarily hide TransactionMaxSpansUnitTest behind isLongRunMode

* Fixed unit tests

* Added diagnostics

* Fixed failing unit tests

* Added re-run with escalated log level to HttpTransactionTest::testHttpStatus

* Fixed failing component test

* Re-enabled SpanCompressionUnitTest::testReasonsCompressionStops

* chore: Updated the content of the file "/tmp/updatecli/github/elastic... (#942)

... /apm-agent-php/tests/APM_Agents_shared/gherkin-specs/otel_bridge.feature"

Made with ❤️️ by updatecli

Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>

* Prepare for additional instrumentation kind (#946)

* Improved formatting in AllOptionsMetadata.php

* Improved formatting in Logger_tests.c

* Improved formatting in src/ext/log.c

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/AllComponentTestsOptionsMetadata.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/Util/RawDataFromAgent.php

* Improved formatting in tests.ElasticApmTests.ComponentTests.ConfigSettingTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/PDOTest.php

* Improved formatting in tests/ElasticApmTests/ComponentTests/MySQLiTest.php (part 2)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Renamed BootstrapStageLogger::logLevel to logWithLevel

* Renamed ELASTIC_APM_LOG_WRITE_TO_SYSLOG to ELASTIC_APM_LOG_TO_BACKGROUND_SINK

* Fixed typo in local variable name

* Added Logger::if*LevelEnabledNoLine for all the remaining log levels

* Added ability to inherit context from LoggerFactory

* Make ArrayUtil::getValueIfKeyExists a template instead of mixed

* Added ArrayUtil::append

* Marked captureInClassicFormatExcludeElasticApm $loggerFactory as nullable

StackTraceUtil::captureInClassicFormatExcludeElasticApm

* Removed redundant type-hint

* Added ELASTIC_APM_BUILD_PHP_VERSION_ID

* Removed declaration of unused makeDynamicArray()

* Added src/ext/ArrayView.h

* Added string related utility functions

* Added string related utility functions (part 2)

* Split ConfigManager.h into multiple more manageable headers

* Split ConfigManager.h into multiple more manageable headers (part 2)

* Split ConfigManager.h into multiple more manageable headers (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 4)

* Added string related utility functions (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 5)

* Split big header files into multiple more manageable headers (part 6)

* Split big header files into multiple more manageable headers (part 7)

* enum LogLevel to a separate header (LogLevel.h)

* Added maxEnabledLogLevel()

* Added ELASTIC_APM_LOG_DIRECT_INFO

* Added missing include

* Added // NOLINT for ELASTIC_APM_FOR_EACH_INDEX_START_END

* Clarified structure of a header added to each allocation for track it

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h

* Extracted OptionalBool to its own header (OptionalBool.h)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 2)

* Made implicit casts explcit

* Added openFile to have "safe fopen" similar to fopen_s available on Windows

* Added openFile to have "safe fopen" similar to fopen_s available on Windows (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 3)

* Added resultBufferIsTooSmall to ResultCode

* Renamed ELASTIC_APM_CALL_EARLY_GOTO_FINALLY_WITH_SUCCESS to ELASTIC_APM_SET_RESULT_CODE_TO_SUCCESS_AND_GOTO_FINALLY

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 4)

* Split ConfigManager.h into multiple more manageable headers (part 6)

* Split ConfigManager.h into multiple more manageable headers (part 7)

* Removed unused ELASTIC_APM_PHP_PART_ON_PHP_ERROR_FUNC and ELASTIC_APM_PHP_PART_SET_LAST_THROWN_FUNC

* Split ConfigManager.h into multiple more manageable headers (part 8)

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 5)

* Added zend_string related utility functions

* Added missing include-s

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part

* Removed unused import (tests/ElasticApmTests/ComponentTests/Util/ResourcesClient.php)

* Replaced ComponentTestCaseBase::getMandatoryAppCodeArg + assertIs<expected type> by get<expected type>FromMap

* Removed unused import (tests/ElasticApmTests/Util/Deserialization/ServerApiSchemaValidator.php)

* Added /* in,out */ to ArrayUtilForTests::append

* Added AssertMessageBuilder::buildString

* Removed unused import (tests/ElasticApmTests/Util/TestCaseBase.php)

* DataProviderForTestBuilder: Have keys included in logged data-set

* Added MixedMap

* Made IterableUtilForTests::iterableToGenerator a function template

instead of being based on mixed type-hint

* Added comments to calls of ArrayUtilForTests::append

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part (part 2)

* Fixed imports in ComponentTestCaseBase.php

* Fixed incorrect merge

* Added missing include

* Added retries on "composer install" has an intermittent failure

* Log PhpUnitExtensionBase::$timestampBeforeTest when setting it

* Use TimeUtilForTests::timestampToLoggable in assertLessThanOrEqualTimestamp

* Applied runAndEscalateLogLevelOnFailure to testAllWaysToSetConfig

from ConfigSettingTest class

* Added INTERNAL_CHECKS_LEVEL to OptionNames.php

* Added maxNumberOfStackFrames as parameter to 

LoggableStackTrace::buildForCurrent instead having hardcoded

* Removed static from constructConfigManagerMetadata to have on stack trace

* Log stack trace on failed ASSERT in native part

* Set g_elasticApmDirectLogLevel* to default values so that they can be used even before configuration is parsed

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Added optional dbgParamName for better diagnostics

* Distinguish between plugin name and keywords

Both name and keywords can be used to disable a plugin

* Removed unused imports

* Added 'internal-func' to names related to existing instrumentation (part 2)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added 'internal-func' to names related to existing instrumentation (part 3)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Removed unused imports

* Extended span compression to spans without service target

* Removed redundant comment

* Clarified docs

* Added workaround for false positives from static analysis

* Simplified parallel-lint invocation

* Fixed unit tests failing on PHP 7.2

* Fixed issue found by static analysis

* Fixed formatting

* Fixed formatting

* Added --exclude ./tests/polyfills/

* Removed TestCaseBaseShim

* Fixed failing unit test

* Added ELASTIC_APM_PHP_TESTS_IS_LONG_RUN_MODE

* Reduced number of datasets from dataProviderForTestReasonsCompressionStops

* Run testOneCompressedSequence only in isLongRunMode

* Added check for isLongRunMode dataProviderForTestReasonsCompressionStops

* Fixed static analysis issue

* Fixed failing unit tests

* Removed unused import

* Fixed merge

* Fixed merge

* Fixed merge

* Fixed merge

* Temporarily hide TransactionMaxSpansUnitTest behind isLongRunMode

* Fixed unit tests

* Added diagnostics

* Fixed failing unit tests

* Added re-run with escalated log level to HttpTransactionTest::testHttpStatus

* Fixed failing component test

* Re-enabled SpanCompressionUnitTest::testReasonsCompressionStops

* Fixed merge

* Fixed line endings

* Fixed line endings (CRLF -> LF) (#956)

* Fixed not joining background sender thread if there was fork after module init (#959)

* Fixed line endings (CRLF -> LF)

* Fixed not joining background sender thread if there was fork

Fixed not joining background sender thread if there was fork after module init

* Fixed not cleaning up connection data in sync backend comm. mode (#957)

* Fixed line endings (CRLF -> LF)

* Fixed not cleaning up connection data in sync backend comm. mode

* Fixed registration of pthread_atfork handlers (876) (#964)

* Fixed verify_server_cert=false not disabling all the checks related to HTTPS certificate (#965)

* Fixed verify_server_cert=false not disabling all the checks

* Removed setting CURLOPT_SSL_VERIFYSTATUS to 0 since 0 is the default

* Prevent deadloop in exception and error handlers (#955)

* added logging in case of potential deadloop
 * moved hook registration into MINIT/MSHUTDOWN

* Prepared for 1.8.4 release (#967)

* fix: add docker container id discovery for SystemData (#966)

* fix: add docker container id discovery for SystemData

* Refactor to handle possible false from file_get_contents

* fix semantic error and change priority from cgroups to mountinfo

* Fix tests to know about container.id in SystemData

* Fixed issue found by static analysis

* Refactored MetadataDiscoverer::detectContainerId to make it testable

* Added unit test for MetadataDiscoverer::detectContainerId

---------

Co-authored-by: Sergey Kleyman <SergeyKleyman@users.noreply.github.com>

* Added dev_internal_backend_comm_log_verbose to use CURLOPT_VERBOSE on demand (#407)

* Added CURLOPT_VERBOSE

* Added CURLOPT_VERBOSE

* Redirected libcurl's verbose output to file and then syslog

* Fixed merge

* Added dev_internal_backend_comm_log_verbose

* Fixed default in documentation for dev_internal_backend_comm_log_verbose (#972)

* Added ELASTIC_APM_PHP_TESTS_ESCALATED_RERUNS_PROD_CODE_LOG_LEVEL_OPTION_NAME option (#971)

* Added ELASTIC_APM_PHP_TESTS_ESCALATED_RERUNS_PROD_CODE_LOG_LEVEL_OPTION_NAME

* Fixed option name in metadata

* On after failure re-run escalate all log levels on CentOS

* Fixed $escalatedRerunsProdCodeLogLevelOptionName declared type

* Fixed not unregistering signal handler on module shutdown (#960)

* Simplified logging of the current process command line (#973)

* Added logging curl info (#974)

* Added curl info when logging curl related errors

* Log curlOptionId also as used constant

* Made logged curl info have JSON-like structure

* Log curl info on initConnectionData entry

* Simplified logging of the current process command line

* Fixed metadata container ID detected but not stored (#975)

* Fixed system.container.id being detected but not stored in metadata

* Added component test for metadata's system.container.id detection

* Updated docs for service_node_name configuration option

* WordPress instrumentation (capturing plugins, hooks and theme) (#948)

* Renamed BootstrapStageLogger::logLevel to logWithLevel

* Renamed ELASTIC_APM_LOG_WRITE_TO_SYSLOG to ELASTIC_APM_LOG_TO_BACKGROUND_SINK

* Fixed typo in local variable name

* Added Logger::if*LevelEnabledNoLine for all the remaining log levels

* Added ability to inherit context from LoggerFactory

* Make ArrayUtil::getValueIfKeyExists a template instead of mixed

* Added ArrayUtil::append

* Marked captureInClassicFormatExcludeElasticApm $loggerFactory as nullable

StackTraceUtil::captureInClassicFormatExcludeElasticApm

* Removed redundant type-hint

* Added ELASTIC_APM_BUILD_PHP_VERSION_ID

* Removed declaration of unused makeDynamicArray()

* Added src/ext/ArrayView.h

* Added string related utility functions

* Added string related utility functions (part 2)

* Split ConfigManager.h into multiple more manageable headers

* Split ConfigManager.h into multiple more manageable headers (part 2)

* Split ConfigManager.h into multiple more manageable headers (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 4)

* Added string related utility functions (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 5)

* Split big header files into multiple more manageable headers (part 6)

* Split big header files into multiple more manageable headers (part 7)

* enum LogLevel to a separate header (LogLevel.h)

* Added maxEnabledLogLevel()

* Added ELASTIC_APM_LOG_DIRECT_INFO

* Added missing include

* Added // NOLINT for ELASTIC_APM_FOR_EACH_INDEX_START_END

* Clarified structure of a header added to each allocation for track it

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h

* Extracted OptionalBool to its own header (OptionalBool.h)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 2)

* Made implicit casts explcit

* Added openFile to have "safe fopen" similar to fopen_s available on Windows

* Added openFile to have "safe fopen" similar to fopen_s available on Windows (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 3)

* Added resultBufferIsTooSmall to ResultCode

* Renamed ELASTIC_APM_CALL_EARLY_GOTO_FINALLY_WITH_SUCCESS to ELASTIC_APM_SET_RESULT_CODE_TO_SUCCESS_AND_GOTO_FINALLY

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 4)

* Split ConfigManager.h into multiple more manageable headers (part 6)

* Split ConfigManager.h into multiple more manageable headers (part 7)

* Removed unused ELASTIC_APM_PHP_PART_ON_PHP_ERROR_FUNC and ELASTIC_APM_PHP_PART_SET_LAST_THROWN_FUNC

* Split ConfigManager.h into multiple more manageable headers (part 8)

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 5)

* Added zend_string related utility functions

* Added missing include-s

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part

* Removed unused import (tests/ElasticApmTests/ComponentTests/Util/ResourcesClient.php)

* Replaced ComponentTestCaseBase::getMandatoryAppCodeArg + assertIs<expected type> by get<expected type>FromMap

* Removed unused import (tests/ElasticApmTests/Util/Deserialization/ServerApiSchemaValidator.php)

* Added /* in,out */ to ArrayUtilForTests::append

* Added AssertMessageBuilder::buildString

* Removed unused import (tests/ElasticApmTests/Util/TestCaseBase.php)

* DataProviderForTestBuilder: Have keys included in logged data-set

* Added MixedMap

* Made IterableUtilForTests::iterableToGenerator a function template

instead of being based on mixed type-hint

* Added comments to calls of ArrayUtilForTests::append

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part (part 2)

* Fixed imports in ComponentTestCaseBase.php

* Fixed incorrect merge

* Added missing include

* Added retries on "composer install" has an intermittent failure

* Log PhpUnitExtensionBase::$timestampBeforeTest when setting it

* Use TimeUtilForTests::timestampToLoggable in assertLessThanOrEqualTimestamp

* Applied runAndEscalateLogLevelOnFailure to testAllWaysToSetConfig

from ConfigSettingTest class

* Added INTERNAL_CHECKS_LEVEL to OptionNames.php

* Added maxNumberOfStackFrames as parameter to 

LoggableStackTrace::buildForCurrent instead having hardcoded

* Removed static from constructConfigManagerMetadata to have on stack trace

* Log stack trace on failed ASSERT in native part

* Set g_elasticApmDirectLogLevel* to default values so that they can be used even before configuration is parsed

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Added optional dbgParamName for better diagnostics

* Distinguish between plugin name and keywords

Both name and keywords can be used to disable a plugin

* Removed unused imports

* Added 'internal-func' to names related to existing instrumentation (part 2)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added 'internal-func' to names related to existing instrumentation (part 3)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added 'internal-func' to names related to existing instrumentation (part 3)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added verifyExactArgsCount

* Implemented WordPress instrumentation - part 1

* Added AST_PROCESS_* options to AllOptionsMetadata.php

* Added option names to OptionNames.php

* Added AST processing options to Config/Snapshot.php

* Switch to span types wordpress_plugin and wordpress_theme

* Fixed issue with assertDirectoryDoesNotExist

assertDirectoryDoesNotExist that was added only in PHPUnit 9 and it does not exist in PHPUnit 8.5 that we still use when testing under older PHP versions

* Removed unused imports

* Added isStringViewSuffix

* Added new .c files to src/ext/config.m4

* Added AST processing related options to src/ext/ConfigManager.c

* Added AST processing related options to src/ext/ConfigManager.h

* Added ELASTIC_APM_WORDPRESS_DIRECT_CALL_METHOD_SET_READY_TO_WRAP_FILTER_CALLBACKS* constants

* Added AST processing related options to src/ext/elastic_apm.c

* Added AST processing related API from extension (native part) to PHP part of the agent

* Added AST processing related APIs to src/ext/elastic_apm_API.h

* Added calls for AST processing from lifecycle stages

* Instrumentation using AST processing (files src/ext/tracer_PHP_part.c|h)

files src/ext/tracer_PHP_part.h and src/ext/tracer_PHP_part.c)

* Removed duplicate isStringViewSuffix

* Added streamZVal

* Added ELASTIC_APM_PHP_TESTS_COMPARE_AST_CONVERTED_BACK_TO_SOURCE

* Added AppCodeHostParams::setAgentOptionIfNotDefaultValue

* Added AppCodeHostParams::setAgentOptions

* Excluded WordPress mock source from static analysis

* Instrumentation using AST processing (file tests/ElasticApmTests/ComponentTests/Util/ComponentTestCaseBase.php)

* Added ELASTIC_APM_PHP_TESTS_COMPARE_AST_CONVERTED_BACK_TO_SOURCE (part 2)

* Added AppCodeHostParams::setAgentOptionIfNotDefaultValue (part 2)

* Moved ArrayUtil::append back to ArrayUtilForTests::append

* Removed unused imports

* Added AST processing related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* Added testReferencesInArray

* Added FileUtilForTests::createTempSubDir

* Added missing import

* Removed redundant local variable

* Added clarifying comments

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Removed unused imports

* Extended span compression to spans without service target

* Removed redundant comment

* Clarified docs

* Added workaround for false positives from static analysis

* Simplified parallel-lint invocation

* Fixed unit tests failing on PHP 7.2

* Fixed issue found by static analysis

* Fixed formatting

* Fixed formatting

* Added --exclude ./tests/polyfills/

* Removed TestCaseBaseShim

* Fixed failing unit test

* Added ELASTIC_APM_PHP_TESTS_IS_LONG_RUN_MODE

* Reduced number of datasets from dataProviderForTestReasonsCompressionStops

* Run testOneCompressedSequence only in isLongRunMode

* Added check for isLongRunMode dataProviderForTestReasonsCompressionStops

* Fixed static analysis issue

* Fixed failing unit tests

* Removed unused import

* Fixed merge

* Fixed merge

* Fixed merge

* Fixed merge

* Temporarily hide TransactionMaxSpansUnitTest behind isLongRunMode

* Temporarily disable unit tests

* Fixed unit tests

* Added diagnostics

* Fixed failing unit tests

* Added re-run with escalated log level to HttpTransactionTest::testHttpStatus

* Fixed failing component test

* Revert "Temporarily disable unit tests"

This reverts commit 3c26cc5095d8eb53631e1300da054e3c7437f208.

* Re-enabled SpanCompressionUnitTest::testReasonsCompressionStops

* Fixed merge

* Temporarily disabled component tests

* Fixed bad merge

* Temporarily run only PDOAutoInstrumentationTest

* Fixed merge

* Re-enabled component tests

* Fixed line endings

* Fixed line endings (CRLF -> LF)

* Fixed not cleaning up connection data in sync backend comm. mode

* Fixed not joining background sender thread if there was fork

Fixed not joining background sender thread if there was fork after module init

* Fixed system.container.id being detected but not stored in metadata

* Added component test for metadata's system.container.id detection

* Updated docs for service_node_name configuration option

* Set metadata's service.framework to WordPress/<version>

* Added check for stack trace to WordPressAutoInstrumentationTest

* Fixed ErrorComponentTest

* Fixed ErrorComponentTest

* Added WordPress and MySQLi to supported technologies

* Converted file path to Linux directory separators

* Added count for number of calls to WordPressFilterCallbackWrapper ctor/dtor

For supportability and component tests

* Replaced emalloc in cloneAstDecl with an array on stack

* Run composer install with retries for unit tests as well (#979)

* Documented TransactionInterface->ensureParentId() API (#981)

* Refactored call stack trace capturing code (#992)

* Marked captureInClassicFormatExcludeElasticApm $loggerFactory as nullable

StackTraceUtil::captureInClassicFormatExcludeElasticApm

* Removed redundant type-hint

* Added ELASTIC_APM_BUILD_PHP_VERSION_ID

* Removed declaration of unused makeDynamicArray()

* Added src/ext/ArrayView.h

* Added string related utility functions

* Added string related utility functions (part 2)

* Split ConfigManager.h into multiple more manageable headers

* Split ConfigManager.h into multiple more manageable headers (part 2)

* Split ConfigManager.h into multiple more manageable headers (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 4)

* Added string related utility functions (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 5)

* Split big header files into multiple more manageable headers (part 6)

* Split big header files into multiple more manageable headers (part 7)

* enum LogLevel to a separate header (LogLevel.h)

* Added maxEnabledLogLevel()

* Added ELASTIC_APM_LOG_DIRECT_INFO

* Added missing include

* Added // NOLINT for ELASTIC_APM_FOR_EACH_INDEX_START_END

* Clarified structure of a header added to each allocation for track it

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h

* Extracted OptionalBool to its own header (OptionalBool.h)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 2)

* Made implicit casts explcit

* Added openFile to have "safe fopen" similar to fopen_s available on Windows

* Added openFile to have "safe fopen" similar to fopen_s available on Windows (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 3)

* Added resultBufferIsTooSmall to ResultCode

* Renamed ELASTIC_APM_CALL_EARLY_GOTO_FINALLY_WITH_SUCCESS to ELASTIC_APM_SET_RESULT_CODE_TO_SUCCESS_AND_GOTO_FINALLY

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 4)

* Split ConfigManager.h into multiple more manageable headers (part 6)

* Split ConfigManager.h into multiple more manageable headers (part 7)

* Removed unused ELASTIC_APM_PHP_PART_ON_PHP_ERROR_FUNC and ELASTIC_APM_PHP_PART_SET_LAST_THROWN_FUNC

* Split ConfigManager.h into multiple more manageable headers (part 8)

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 5)

* Added zend_string related utility functions

* Added missing include-s

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part

* Removed unused import (tests/ElasticApmTests/ComponentTests/Util/ResourcesClient.php)

* Replaced ComponentTestCaseBase::getMandatoryAppCodeArg + assertIs<expected type> by get<expected type>FromMap

* Removed unused import (tests/ElasticApmTests/Util/Deserialization/ServerApiSchemaValidator.php)

* Added /* in,out */ to ArrayUtilForTests::append

* Added AssertMessageBuilder::buildString

* Removed unused import (tests/ElasticApmTests/Util/TestCaseBase.php)

* DataProviderForTestBuilder: Have keys included in logged data-set

* Added MixedMap

* Made IterableUtilForTests::iterableToGenerator a function template

instead of being based on mixed type-hint

* Added comments to calls of ArrayUtilForTests::append

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part (part 2)

* Fixed imports in ComponentTestCaseBase.php

* Fixed incorrect merge

* Added missing include

* Added retries on "composer install" has an intermittent failure

* Log PhpUnitExtensionBase::$timestampBeforeTest when setting it

* Use TimeUtilForTests::timestampToLoggable in assertLessThanOrEqualTimestamp

* Applied runAndEscalateLogLevelOnFailure to testAllWaysToSetConfig

from ConfigSettingTest class

* Added INTERNAL_CHECKS_LEVEL to OptionNames.php

* Added maxNumberOfStackFrames as parameter to 

LoggableStackTrace::buildForCurrent instead having hardcoded

* Removed static from constructConfigManagerMetadata to have on stack trace

* Log stack trace on failed ASSERT in native part

* Set g_elasticApmDirectLogLevel* to default values so that they can be used even before configuration is parsed

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Added optional dbgParamName for better diagnostics

* Distinguish between plugin name and keywords

Both name and keywords can be used to disable a plugin

* Removed unused imports

* Added 'internal-func' to names related to existing instrumentation (part 2)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added 'internal-func' to names related to existing instrumentation (part 3)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added 'internal-func' to names related to existing instrumentation (part 3)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added verifyExactArgsCount

* Implemented WordPress instrumentation - part 1

* Added AST_PROCESS_* options to AllOptionsMetadata.php

* Added option names to OptionNames.php

* Added AST processing options to Config/Snapshot.php

* Switch to span types wordpress_plugin and wordpress_theme

* Fixed issue with assertDirectoryDoesNotExist

assertDirectoryDoesNotExist that was added only in PHPUnit 9 and it does not exist in PHPUnit 8.5 that we still use when testing under older PHP versions

* Removed unused imports

* Added isStringViewSuffix

* Added new .c files to src/ext/config.m4

* Added AST processing related options to src/ext/ConfigManager.c

* Added AST processing related options to src/ext/ConfigManager.h

* Added ELASTIC_APM_WORDPRESS_DIRECT_CALL_METHOD_SET_READY_TO_WRAP_FILTER_CALLBACKS* constants

* Added AST processing related options to src/ext/elastic_apm.c

* Added AST processing related API from extension (native part) to PHP part of the agent

* Added AST processing related APIs to src/ext/elastic_apm_API.h

* Added calls for AST processing from lifecycle stages

* Instrumentation using AST processing (files src/ext/tracer_PHP_part.c|h)

files src/ext/tracer_PHP_part.h and src/ext/tracer_PHP_part.c)

* Removed duplicate isStringViewSuffix

* Added streamZVal

* Added ELASTIC_APM_PHP_TESTS_COMPARE_AST_CONVERTED_BACK_TO_SOURCE

* Added AppCodeHostParams::setAgentOptionIfNotDefaultValue

* Added AppCodeHostParams::setAgentOptions

* Excluded WordPress mock source from static analysis

* Instrumentation using AST processing (file tests/ElasticApmTests/ComponentTests/Util/ComponentTestCaseBase.php)

* Added ELASTIC_APM_PHP_TESTS_COMPARE_AST_CONVERTED_BACK_TO_SOURCE (part 2)

* Added AppCodeHostParams::setAgentOptionIfNotDefaultValue (part 2)

* Moved ArrayUtil::append back to ArrayUtilForTests::append

* Removed unused imports

* Added AST processing related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* Added testReferencesInArray

* Added FileUtilForTests::createTempSubDir

* Added missing import

* Removed redundant local variable

* Added clarifying comments

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Removed unused imports

* Extended span compression to spans without service target

* Removed redundant comment

* Clarified docs

* Added workaround for false positives from static analysis

* Simplified parallel-lint invocation

* Fixed unit tests failing on PHP 7.2

* Fixed issue found by static analysis

* Fixed formatting

* Fixed formatting

* Added --exclude ./tests/polyfills/

* Removed TestCaseBaseShim

* Fixed failing unit test

* Added ELASTIC_APM_PHP_TESTS_IS_LONG_RUN_MODE

* Reduced number of datasets from dataProviderForTestReasonsCompressionStops

* Run testOneCompressedSequence only in isLongRunMode

* Added check for isLongRunMode dataProviderForTestReasonsCompressionStops

* Fixed static analysis issue

* Fixed failing unit tests

* Removed unused import

* Fixed merge

* Fixed merge

* Fixed merge

* Fixed merge

* Temporarily hide TransactionMaxSpansUnitTest behind isLongRunMode

* Temporarily disable unit tests

* Fixed unit tests

* Added diagnostics

* Fixed failing unit tests

* Added re-run with escalated log level to HttpTransactionTest::testHttpStatus

* Fixed failing component test

* Revert "Temporarily disable unit tests"

This reverts commit 3c26cc5095d8eb53631e1300da054e3c7437f208.

* Re-enabled SpanCompressionUnitTest::testReasonsCompressionStops

* Fixed merge

* Temporarily disabled component tests

* Fixed bad merge

* Temporarily run only PDOAutoInstrumentationTest

* Fixed merge

* Re-enabled component tests

* Fixed line endings

* Fixed line endings (CRLF -> LF)

* Fixed not cleaning up connection data in sync backend comm. mode

* Fixed not joining background sender thread if there was fork

Fixed not joining background sender thread if there was fork after module init

* Fixed system.container.id being detected but not stored in metadata

* Added component test for metadata's system.container.id detection

* Updated docs for service_node_name configuration option

* Set metadata's service.framework to WordPress/<version>

* Added check for stack trace to WordPressAutoInstrumentationTest

* Fixed ErrorComponentTest

* Fixed ErrorComponentTest

* Added WordPress and MySQLi to supported technologies

* Converted file path to Linux directory separators

* Added count for number of calls to WordPressFilterCallbackWrapper ctor/dtor

For supportability and component tests

* Replaced emalloc in cloneAstDecl with an array on stack

* Make all properties of StackTraceFrameExpectations be Optional

* Made StackTraceUtil instance class

* Refactored call stack trace capturing code

* Refactor AutoInstrumentationUtil->captureCurrentSpan

* Fixed static analysis failure

* Improved testing of stack trace capture part of WordPress auto instrumentation (#994)

* Added string related utility functions (part 2)

* Split ConfigManager.h into multiple more manageable headers

* Split ConfigManager.h into multiple more manageable headers (part 2)

* Split ConfigManager.h into multiple more manageable headers (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 4)

* Added string related utility functions (part 3)

* Split ConfigManager.h into multiple more manageable headers (part 5)

* Split big header files into multiple more manageable headers (part 6)

* Split big header files into multiple more manageable headers (part 7)

* enum LogLevel to a separate header (LogLevel.h)

* Added maxEnabledLogLevel()

* Added ELASTIC_APM_LOG_DIRECT_INFO

* Added missing include

* Added // NOLINT for ELASTIC_APM_FOR_EACH_INDEX_START_END

* Clarified structure of a header added to each allocation for track it

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h

* Extracted OptionalBool to its own header (OptionalBool.h)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 2)

* Made implicit casts explcit

* Added openFile to have "safe fopen" similar to fopen_s available on Windows

* Added openFile to have "safe fopen" similar to fopen_s available on Windows (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 3)

* Added resultBufferIsTooSmall to ResultCode

* Renamed ELASTIC_APM_CALL_EARLY_GOTO_FINALLY_WITH_SUCCESS to ELASTIC_APM_SET_RESULT_CODE_TO_SUCCESS_AND_GOTO_FINALLY

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 4)

* Split ConfigManager.h into multiple more manageable headers (part 6)

* Split ConfigManager.h into multiple more manageable headers (part 7)

* Removed unused ELASTIC_APM_PHP_PART_ON_PHP_ERROR_FUNC and ELASTIC_APM_PHP_PART_SET_LAST_THROWN_FUNC

* Split ConfigManager.h into multiple more manageable headers (part 8)

* Added ELASTIC_APM_EMPTY_STRING_VIEW instead of makeEmptyStringView so it can be used to init static (part 2)

* Extracted TextOutputStream_forward_decl.h from TextOutputStream.h (part 5)

* Added zend_string related utility functions

* Added missing include-s

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part

* Removed unused import (tests/ElasticApmTests/ComponentTests/Util/ResourcesClient.php)

* Replaced ComponentTestCaseBase::getMandatoryAppCodeArg + assertIs<expected type> by get<expected type>FromMap

* Removed unused import (tests/ElasticApmTests/Util/Deserialization/ServerApiSchemaValidator.php)

* Added /* in,out */ to ArrayUtilForTests::append

* Added AssertMessageBuilder::buildString

* Removed unused import (tests/ElasticApmTests/Util/TestCaseBase.php)

* DataProviderForTestBuilder: Have keys included in logged data-set

* Added MixedMap

* Made IterableUtilForTests::iterableToGenerator a function template

instead of being based on mixed type-hint

* Added comments to calls of ArrayUtilForTests::append

* Refactored TextUtilForTests::iterateLines to allow finer control over end-of-line part (part 2)

* Fixed imports in ComponentTestCaseBase.php

* Fixed incorrect merge

* Added missing include

* Added retries on "composer install" has an intermittent failure

* Log PhpUnitExtensionBase::$timestampBeforeTest when setting it

* Use TimeUtilForTests::timestampToLoggable in assertLessThanOrEqualTimestamp

* Applied runAndEscalateLogLevelOnFailure to testAllWaysToSetConfig

from ConfigSettingTest class

* Added INTERNAL_CHECKS_LEVEL to OptionNames.php

* Added maxNumberOfStackFrames as parameter to 

LoggableStackTrace::buildForCurrent instead having hardcoded

* Removed static from constructConfigManagerMetadata to have on stack trace

* Log stack trace on failed ASSERT in native part

* Set g_elasticApmDirectLogLevel* to default values so that they can be used even before configuration is parsed

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Added optional dbgParamName for better diagnostics

* Distinguish between plugin name and keywords

Both name and keywords can be used to disable a plugin

* Removed unused imports

* Added 'internal-func' to names related to existing instrumentation (part 2)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added 'internal-func' to names related to existing instrumentation (part 3)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added 'internal-func' to names related to existing instrumentation (part 3)

to distinguish from other instrumentation mechanisms (for example the upcoming AST processing based)

* Added verifyExactArgsCount

* Implemented WordPress instrumentation - part 1

* Added AST_PROCESS_* options to AllOptionsMetadata.php

* Added option names to OptionNames.php

* Added AST processing options to Config/Snapshot.php

* Switch to span types wordpress_plugin and wordpress_theme

* Fixed issue with assertDirectoryDoesNotExist

assertDirectoryDoesNotExist that was added only in PHPUnit 9 and it does not exist in PHPUnit 8.5 that we still use when testing under older PHP versions

* Removed unused imports

* Added isStringViewSuffix

* Added new .c files to src/ext/config.m4

* Added AST processing related options to src/ext/ConfigManager.c

* Added AST processing related options to src/ext/ConfigManager.h

* Added ELASTIC_APM_WORDPRESS_DIRECT_CALL_METHOD_SET_READY_TO_WRAP_FILTER_CALLBACKS* constants

* Added AST processing related options to src/ext/elastic_apm.c

* Added AST processing related API from extension (native part) to PHP part of the agent

* Added AST processing related APIs to src/ext/elastic_apm_API.h

* Added calls for AST processing from lifecycle stages

* Instrumentation using AST processing (files src/ext/tracer_PHP_part.c|h)

files src/ext/tracer_PHP_part.h and src/ext/tracer_PHP_part.c)

* Removed duplicate isStringViewSuffix

* Added streamZVal

* Added ELASTIC_APM_PHP_TESTS_COMPARE_AST_CONVERTED_BACK_TO_SOURCE

* Added AppCodeHostParams::setAgentOptionIfNotDefaultValue

* Added AppCodeHostParams::setAgentOptions

* Excluded WordPress mock source from static analysis

* Instrumentation using AST processing (file tests/ElasticApmTests/ComponentTests/Util/ComponentTestCaseBase.php)

* Added ELASTIC_APM_PHP_TESTS_COMPARE_AST_CONVERTED_BACK_TO_SOURCE (part 2)

* Added AppCodeHostParams::setAgentOptionIfNotDefaultValue (part 2)

* Moved ArrayUtil::append back to ArrayUtilForTests::append

* Removed unused imports

* Added AST processing related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* Added testReferencesInArray

* Added FileUtilForTests::createTempSubDir

* Added missing import

* Removed redundant local variable

* Added clarifying comments

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Reverted references of ELASTIC_APM_EMPTY_STRING_VIEW back to makeEmptyStringView()

since ELASTIC_APM_EMPTY_STRING_VIEW is added in a later PR

* Fixed incorrect merge

* Added documentation for configuration options

* Added options to AllOptionsMetadata.php

* Added SPAN_COMPRESSION_* option names to OptionNames.php

* Added Span Compression options to Config/Snapshot.php

* Added COMPRESSION_STRATEGY_* constants

* Added implementation

* Added Span Compression related options to src/ext/ConfigManager.c

* Added Span Compression related options to src/ext/ConfigManager.h

* Added Span Compression related options to src/ext/elastic_apm.c

* Added Span Compression related options to tests/ElasticApmTests/ComponentTests/ConfigSettingTest.php

* MySQLiTest: Disable Span Compression feature to have all the expected spans individually

* PDOTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/ComponentTests/SpanCompressionComponentTest.php

* Clarified comment about "Disable Span Compression"

* StackTraceComponentTest: Disable Span Compression feature to have all the expected spans individually

* Added TracerUnitTestCaseBase::isCompatibleWithSpanCompression

* InferredSpansBuilderTest: Disable Span Compression feature to have all the expected spans individually

* StackTraceUnitTest: Disable Span Compression feature to have all the expected spans individually

* Added tests/ElasticApmTests/UnitTests/SpanCompressionUnitTest.php

* Added tests\ElasticApmTests\Util\AssertValidTrait::assertValidNonNullableString

* Updated ElasticApmTests\Util\SpanDto

* Updated SpanExpectations

* Removed unused imports

* Extended span compression to spans without service target

* Removed redundant comment

* Clarified docs

* Added workaround for false positives from static analysis

* Simplified parallel-lint invocation

* Fixed unit tests failing on PHP 7.2

* Fixed issue found by static analysis

* Fixed formatting

* Fixed formatting

* Added --exclude ./tests/polyfills/

* Removed TestCaseBaseShim

* Fixed failing unit test

* Added ELASTIC_APM_PHP_TESTS_IS_LONG_…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

2 participants