Skip to content

Commit

Permalink
Merge pull request #642 from rollbar/added/telemetry-config-filter
Browse files Browse the repository at this point in the history
Added telemetry config filter to prevent invalid arguments.
  • Loading branch information
danielmorell authored Dec 13, 2024
2 parents ef708cd + e0dce28 commit 7cfdb3b
Showing 2 changed files with 40 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/Config.php
Original file line number Diff line number Diff line change
@@ -853,13 +853,23 @@ public function getRaiseOnError(): bool
*
* @since 4.1.0
*/
public function getTelemetry(?Telemeter $telemeter): ?Telemeter
public function getTelemetry(?Telemeter $telemeter = null): ?Telemeter
{
if (null === $this->telemetry) {
return null;
}

$config = $this->telemetry;
$config['filter'] = $this->initTelemetryFilter($config['filter']);

// Filter out any invalid config options.
$config = array_intersect_key($config, [
'maxTelemetryEvents' => Telemeter::MAX_EVENTS,
'filter' => null,
'includeItemsInTelemetry' => false,
'includeIgnoredItemsInTelemetry' => false,
]);

if (null === $telemeter) {
return new Telemeter(...$config);
}
29 changes: 29 additions & 0 deletions tests/ConfigTest.php
Original file line number Diff line number Diff line change
@@ -12,6 +12,7 @@
use Rollbar\RollbarLogger;
use Rollbar\Defaults;

use Rollbar\Telemetry\Telemeter;
use Rollbar\TestHelpers\CustomSerializable;
use Rollbar\TestHelpers\DeprecatedSerializable;
use Rollbar\TestHelpers\Exceptions\SilentExceptionSampleRate;
@@ -591,6 +592,34 @@ public function testRaiseOnError(): void
$this->assertTrue($config->getRaiseOnError());
}

public function testGetTelemetry(): void
{
$config = new Config(array(
"access_token" => $this->getTestAccessToken(),
"environment" => $this->env,
));

$this->assertInstanceOf(Telemeter::class, $config->getTelemetry());

$config = new Config(array(
"access_token" => $this->getTestAccessToken(),
"environment" => $this->env,
"telemetry" => false,
));

$this->assertNull($config->getTelemetry());

$config = new Config(array(
"access_token" => $this->getTestAccessToken(),
"environment" => $this->env,
"telemetry" => [
'invalidKey' => 'invalidValue'
],
));

$this->assertInstanceOf(Telemeter::class, $config->getTelemetry());
}

public function testSendMessageTrace(): void
{
$c = new Config(array(

0 comments on commit 7cfdb3b

Please sign in to comment.