Skip to content

Commit 0bb64a5

Browse files
committed
fix
1 parent 3212b3f commit 0bb64a5

6 files changed

Lines changed: 82 additions & 5 deletions

File tree

src/ClientReport/ClientReportAggregator.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ public function add(DataCategory $category, Reason $reason, int $quantity): void
4343
'reason' => $reason,
4444
'quantity' => $quantity,
4545
]);
46-
47-
return;
4846
}
47+
48+
return;
4949
}
5050
$this->reports[$category][$reason] = ($this->reports[$category][$reason] ?? 0) + $quantity;
5151
}

src/Event.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ final class Event
214214
/**
215215
* @var ClientReport[]
216216
*/
217-
private $clientReports;
217+
private $clientReports = [];
218218

219219
private function __construct(?EventId $eventId, EventType $eventType)
220220
{

src/Logs/LogsAggregator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function add(
3939
array $attributes = []
4040
): void {
4141
if (\count($this->logs) > 5) {
42-
ClientReportAggregator::getInstance()->add(DataCategory::logBytes(), Reason::bufferOverflow(), 1);
42+
ClientReportAggregator::getInstance()->add(DataCategory::logItem(), Reason::bufferOverflow(), 1);
4343

4444
return;
4545
}

src/Transport/DataCategory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public static function logItem(): self
4444

4545
public static function logBytes(): self
4646
{
47-
return self::getInstance('log_bytes');
47+
return self::getInstance('log_byte');
4848
}
4949

5050
public static function profile(): self

tests/ClientReport/ClientReportAggregatorTest.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@
88
use Sentry\Client;
99
use Sentry\ClientReport\ClientReportAggregator;
1010
use Sentry\ClientReport\Reason;
11+
use Sentry\Logs\LogLevel;
12+
use Sentry\Logs\LogsAggregator;
1113
use Sentry\Options;
1214
use Sentry\SentrySdk;
15+
use Sentry\State\Hub;
1316
use Sentry\Tests\StubLogger;
1417
use Sentry\Tests\StubTransport;
1518
use Sentry\Transport\DataCategory;
@@ -84,4 +87,50 @@ public function testZeroQuantityDiscarded(): void
8487
$this->assertCount(1, StubLogger::$logs);
8588
$this->assertSame(['level' => 'debug', 'message' => 'Dropping Client report with category={category} and reason={} because quantity is zero or negative ({quantity})', 'context' => ['category' => 'profile', 'reason' => 'event_processor', 'quantity' => 0]], StubLogger::$logs[0]);
8689
}
90+
91+
public function testNegativeQuantityDiscardedWhenNoClientIsBound(): void
92+
{
93+
SentrySdk::setCurrentHub(new Hub());
94+
95+
ClientReportAggregator::getInstance()->add(DataCategory::profile(), Reason::eventProcessor(), -10);
96+
97+
SentrySdk::setCurrentHub(new Hub(new Client(new Options([
98+
'logger' => StubLogger::getInstance(),
99+
]), StubTransport::getInstance())));
100+
101+
ClientReportAggregator::getInstance()->flush();
102+
103+
$this->assertEmpty(StubTransport::$events);
104+
$this->assertEmpty(StubLogger::$logs);
105+
}
106+
107+
public function testLogCategoriesAreCanonical(): void
108+
{
109+
$this->assertSame('log_item', DataCategory::logItem()->getValue());
110+
$this->assertSame('log_byte', DataCategory::logBytes()->getValue());
111+
}
112+
113+
public function testLogOverflowReportsLogItemCount(): void
114+
{
115+
SentrySdk::init()->bindClient(new Client(new Options([
116+
'enable_logs' => true,
117+
]), StubTransport::getInstance()));
118+
119+
$logsAggregator = new LogsAggregator();
120+
121+
for ($i = 0; $i < 8; ++$i) {
122+
$logsAggregator->add(LogLevel::info(), 'Log %d', [$i]);
123+
}
124+
125+
ClientReportAggregator::getInstance()->flush();
126+
127+
$this->assertCount(1, StubTransport::$events);
128+
$reports = StubTransport::$events[0]->getClientReports();
129+
$this->assertCount(1, $reports);
130+
131+
$report = $reports[0];
132+
$this->assertSame(DataCategory::logItem()->getValue(), $report->getCategory());
133+
$this->assertSame(Reason::bufferOverflow()->getValue(), $report->getReason());
134+
$this->assertSame(2, $report->getQuantity());
135+
}
87136
}

tests/Serializer/PayloadSerializerTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,34 @@ public static function serializeAsEnvelopeDataProvider(): iterable
474474
TEXT
475475
];
476476

477+
$event = Event::createClientReport();
478+
479+
yield [
480+
$event,
481+
<<<TEXT
482+
{}
483+
{"type":"client_report"}
484+
{"timestamp":1597790835,"discarded_events":[]}
485+
TEXT
486+
,
487+
];
488+
489+
$event = Event::createClientReport();
490+
$event->setClientReports([
491+
new ClientReport('log_item', 'buffer_overflow', 1),
492+
new ClientReport('log_byte', 'buffer_overflow', 256),
493+
]);
494+
495+
yield [
496+
$event,
497+
<<<TEXT
498+
{}
499+
{"type":"client_report"}
500+
{"timestamp":1597790835,"discarded_events":[{"category":"log_item","reason":"buffer_overflow","quantity":1},{"category":"log_byte","reason":"buffer_overflow","quantity":256}]}
501+
TEXT
502+
,
503+
];
504+
477505
$event = Event::createClientReport();
478506
$event->setClientReports([
479507
new ClientReport('error', 'before_send', 10),

0 commit comments

Comments
 (0)