diff --git a/src/Adapters/InMemory/InMemoryClientAdapter.php b/src/Adapters/InMemory/InMemoryClientAdapter.php index bd567e2..e11ba9a 100644 --- a/src/Adapters/InMemory/InMemoryClientAdapter.php +++ b/src/Adapters/InMemory/InMemoryClientAdapter.php @@ -6,6 +6,7 @@ use Cosmastech\StatsDClientAdapter\Adapters\Concerns\TagNormalizerAwareTrait; use Cosmastech\StatsDClientAdapter\Adapters\Concerns\TimeClosureTrait; use Cosmastech\StatsDClientAdapter\Adapters\Contracts\TagNormalizerAware; +use Cosmastech\StatsDClientAdapter\Adapters\InMemory\Models\Contracts\InMemoryStatsRecordInterface; use Cosmastech\StatsDClientAdapter\Adapters\InMemory\Models\InMemoryCountRecord; use Cosmastech\StatsDClientAdapter\Adapters\InMemory\Models\InMemoryDistributionRecord; use Cosmastech\StatsDClientAdapter\Adapters\InMemory\Models\InMemoryGaugeRecord; @@ -31,13 +32,13 @@ class InMemoryClientAdapter implements StatsDClientAdapter, TagNormalizerAware /** * @param array $defaultTags - * @param InMemoryStatsRecord $inMemoryStatsRecord + * @param InMemoryStatsRecordInterface $inMemoryStatsRecord * @param TagNormalizer $tagNormalizer * @param ClockInterface $clock */ public function __construct( array $defaultTags = [], - InMemoryStatsRecord $inMemoryStatsRecord = new InMemoryStatsRecord(), + InMemoryStatsRecordInterface $inMemoryStatsRecord = new InMemoryStatsRecord(), TagNormalizer $tagNormalizer = new NoopTagNormalizer(), ClockInterface $clock = new Clock() ) { @@ -179,7 +180,7 @@ public function updateStats(array|string $stats, int $delta = 1, float $sampleRa /** * Get all recorded stats. */ - public function getStats(): InMemoryStatsRecord + public function getStats(): InMemoryStatsRecordInterface { return $this->stats; } diff --git a/src/Adapters/InMemory/Models/Contracts/InMemoryStatsRecordInterface.php b/src/Adapters/InMemory/Models/Contracts/InMemoryStatsRecordInterface.php new file mode 100644 index 0000000..97a6bbd --- /dev/null +++ b/src/Adapters/InMemory/Models/Contracts/InMemoryStatsRecordInterface.php @@ -0,0 +1,58 @@ +|iterable + */ + public function getTimings(); + + public function recordCount(InMemoryCountRecord $inMemoryCountRecord): void; + + /** + * @return array|iterable + */ + public function getCounts(); + + public function recordGauge(InMemoryGaugeRecord $inMemoryGaugeRecord): void; + + /** + * @return array|iterable + */ + public function getGauges(); + + + public function recordSet(InMemorySetRecord $inMemorySetRecord): void; + + /** + * @return array|iterable + */ + public function getSets(); + + public function recordHistogram(InMemoryHistogramRecord $inMemoryHistogramRecord): void; + + /** + * @return array|iterable + */ + public function getHistograms(); + + public function recordDistribution(InMemoryDistributionRecord $inMemoryDistributionRecord): void; + + /** + * @return array|iterable + */ + public function getDistributions(); + + public function flush(): void; +} diff --git a/src/Adapters/InMemory/Models/InMemoryStatsRecord.php b/src/Adapters/InMemory/Models/InMemoryStatsRecord.php index 192fcf6..fada777 100644 --- a/src/Adapters/InMemory/Models/InMemoryStatsRecord.php +++ b/src/Adapters/InMemory/Models/InMemoryStatsRecord.php @@ -3,12 +3,13 @@ namespace Cosmastech\StatsDClientAdapter\Adapters\InMemory\Models; use Cosmastech\StatsDClientAdapter\Adapters\InMemory\Models\Concerns\GetAndSetRecordsTrait; +use Cosmastech\StatsDClientAdapter\Adapters\InMemory\Models\Contracts\InMemoryStatsRecordInterface; use Cosmastech\StatsDClientAdapter\Adapters\InMemory\Models\Contracts\RecordInterface; /** * Container class for storing all stats. */ -class InMemoryStatsRecord implements RecordInterface +class InMemoryStatsRecord implements RecordInterface, InMemoryStatsRecordInterface { use GetAndSetRecordsTrait; diff --git a/tests/Adapters/InMemory/InMemoryTimingTest.php b/tests/Adapters/InMemory/InMemoryTimingTest.php index ac187ca..b6b3ac9 100644 --- a/tests/Adapters/InMemory/InMemoryTimingTest.php +++ b/tests/Adapters/InMemory/InMemoryTimingTest.php @@ -29,6 +29,7 @@ public function storesTimingRecord(): void $inMemoryClient->timing("timing-stat", 199, 0.2, ["timing" => "some-value"]); // Then + /** @var InMemoryStatsRecord $statsRecord */ $statsRecord = $inMemoryClient->getStats(); self::assertCount(1, $statsRecord->getTimings());