Skip to content

Commit a6d03ee

Browse files
authored
Merge pull request #86 from flagship-io/fix/troubleshooting
fix: Prevent sending troubleshooting hits when not activated
2 parents b2ee597 + 012545c commit a6d03ee

3 files changed

Lines changed: 53 additions & 26 deletions

File tree

src/Api/NoBatchingContinuousCachingStrategy.php

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ protected function onError(HitAbstract $hit): void
5151
protected function sendHit(HitAbstract $hit): void
5252
{
5353
$header = [
54-
FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON,
55-
];
54+
FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON,
55+
];
5656

5757
$requestBody = $hit->toApiKeys();
5858
$now = $this->getNow();
@@ -68,8 +68,8 @@ protected function sendHit(HitAbstract $hit): void
6868
FlagshipConstant::TRACKING_MANAGER,
6969
FlagshipConstant::HIT_SENT_SUCCESS,
7070
[
71-
FlagshipConstant::SEND_HIT,
72-
$this->getLogFormat(null, $url, $requestBody, $header, $this->getNow() - $now),
71+
FlagshipConstant::SEND_HIT,
72+
$this->getLogFormat(null, $url, $requestBody, $header, $this->getNow() - $now),
7373
]
7474
);
7575
} catch (Exception $exception) {
@@ -79,12 +79,23 @@ protected function sendHit(HitAbstract $hit): void
7979
FlagshipConstant::TRACKING_MANAGER,
8080
FlagshipConstant::UNEXPECTED_ERROR_OCCURRED,
8181
[
82-
FlagshipConstant::SEND_HIT,
83-
$this->getLogFormat($exception->getMessage(), $url, $requestBody, $header, $this->getNow() - $now),
82+
FlagshipConstant::SEND_HIT,
83+
$this->getLogFormat($exception->getMessage(), $url, $requestBody, $header, $this->getNow() - $now),
8484
]
8585
);
8686
$troubleshooting = new Troubleshooting();
87-
$troubleshooting->setLabel(TroubleshootingLabel::SEND_HIT_ROUTE_ERROR)->setLogLevel(LogLevel::ERROR)->setVisitorId($this->flagshipInstanceId)->setFlagshipInstanceId($this->flagshipInstanceId)->setTraffic(100)->setConfig($this->config)->setHttpRequestBody($requestBody)->setHttpRequestHeaders($header)->setHttpRequestMethod("POST")->setHttpRequestUrl($url)->setHttpResponseBody($exception->getMessage())->setHttpResponseTime($this->getNow() - $now);
87+
$troubleshooting->setLabel(TroubleshootingLabel::SEND_HIT_ROUTE_ERROR)
88+
->setLogLevel(LogLevel::ERROR)
89+
->setFlagshipInstanceId($this->flagshipInstanceId)
90+
->setHttpRequestBody($requestBody)
91+
->setHttpRequestHeaders($header)
92+
->setHttpRequestMethod("POST")
93+
->setHttpRequestUrl($url)
94+
->setHttpResponseBody($exception->getMessage())
95+
->setHttpResponseTime($this->getNow() - $now)
96+
->setTraffic(100)->setConfig($this->config)
97+
->setVisitorId($this->flagshipInstanceId)
98+
;
8899
$this->addTroubleshootingHit($troubleshooting);
89100
$this->sendTroubleshootingQueue();
90101
}
@@ -117,8 +128,8 @@ public function activateFlag(Activate $hit): void
117128
FlagshipConstant::TRACKING_MANAGER,
118129
FlagshipConstant::HIT_SENT_SUCCESS,
119130
[
120-
FlagshipConstant::SEND_ACTIVATE,
121-
$this->getLogFormat(null, $url, $requestBody, $headers, $this->getNow() - $now),
131+
FlagshipConstant::SEND_ACTIVATE,
132+
$this->getLogFormat(null, $url, $requestBody, $headers, $this->getNow() - $now),
122133
]
123134
);
124135
} catch (Exception $exception) {
@@ -128,22 +139,29 @@ public function activateFlag(Activate $hit): void
128139
FlagshipConstant::TRACKING_MANAGER,
129140
FlagshipConstant::UNEXPECTED_ERROR_OCCURRED,
130141
[
131-
FlagshipConstant::SEND_ACTIVATE,
132-
$this->getLogFormat($exception->getMessage(), $url, $requestBody, $headers, $this->getNow() - $now),
142+
FlagshipConstant::SEND_ACTIVATE,
143+
$this->getLogFormat($exception->getMessage(), $url, $requestBody, $headers, $this->getNow() - $now),
133144
]
134145
);
135146

136147
$troubleshooting = new Troubleshooting();
137-
$troubleshooting->setLabel(TroubleshootingLabel::SEND_ACTIVATE_HIT_ROUTE_ERROR)->setLogLevel(LogLevel::ERROR)->setVisitorId($this->flagshipInstanceId)->setFlagshipInstanceId($this->flagshipInstanceId)->setTraffic(100)->setConfig($this->config)->setHttpRequestBody($requestBody)->setHttpRequestHeaders($headers)->setHttpRequestMethod("POST")->setHttpRequestUrl($url)->setHttpResponseBody($exception->getMessage())->setHttpResponseTime($this->getNow() - $now);
148+
$troubleshooting->setLabel(TroubleshootingLabel::SEND_ACTIVATE_HIT_ROUTE_ERROR)
149+
->setFlagshipInstanceId($this->flagshipInstanceId)
150+
->setHttpRequestBody($requestBody)
151+
->setHttpRequestHeaders($headers)
152+
->setHttpRequestMethod("POST")
153+
->setHttpRequestUrl($url)
154+
->setHttpResponseBody($exception->getMessage())
155+
->setHttpResponseTime($this->getNow() - $now)
156+
->setLogLevel(LogLevel::ERROR)
157+
->setTraffic(100)->setConfig($this->config)
158+
->setVisitorId($this->flagshipInstanceId);
138159
$this->addTroubleshootingHit($troubleshooting);
139160
$this->sendTroubleshootingQueue();
140161
}
141162
}
142163

143-
/**
144-
* @param string $visitorId
145-
* @return void
146-
*/
164+
147165
protected function notConsent(string $visitorId): void
148166
{
149167
$keysToFlush = $this->commonNotConsent($visitorId);
@@ -157,7 +175,10 @@ protected function notConsent(string $visitorId): void
157175

158176
public function addTroubleshootingHit(Troubleshooting $hit): void
159177
{
160-
$this->sendTroubleshooting($hit);
178+
if (!$this->isTroubleshootingActivated()) {
179+
return;
180+
}
181+
$this->sendTroubleshooting($hit);
161182
}
162183

163184
public function addUsageHit(UsageHit $hit): void

src/Enum/FlagshipConstant.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class FlagshipConstant
5454
/**
5555
* SDK version
5656
*/
57-
public const SDK_VERSION = "4.1.0";
57+
public const SDK_VERSION = "4.1.1";
5858

5959
public const GET_FLAG = 'GET_FLAG';
6060

tests/Api/NoBatchingContinuousCachingStrategyTest.php

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@
33
namespace Flagship\Api;
44

55
use Exception;
6-
use Flagship\Config\DecisionApiConfig;
7-
use Flagship\Enum\EventCategory;
8-
use Flagship\Enum\FlagshipConstant;
6+
use Flagship\Hit\Page;
7+
use Flagship\Hit\Event;
98
use Flagship\Hit\Activate;
10-
use Flagship\Hit\ActivateBatch;
119
use Flagship\Hit\UsageHit;
12-
use Flagship\Hit\Event;
1310
use Flagship\Hit\HitAbstract;
14-
use Flagship\Hit\Page;
15-
use Flagship\Hit\Troubleshooting;
1611
use Flagship\Traits\LogTrait;
12+
use Flagship\Hit\ActivateBatch;
1713
use PHPUnit\Framework\TestCase;
14+
use Flagship\Enum\EventCategory;
15+
use Flagship\Hit\Troubleshooting;
16+
use Flagship\Enum\FlagshipConstant;
17+
use Flagship\Config\DecisionApiConfig;
18+
use PHPUnit\Framework\MockObject\MockObject;
1819

1920
class NoBatchingContinuousCachingStrategyTest extends TestCase
2021
{
@@ -527,6 +528,9 @@ public function testAddTroubleshootingHit()
527528

528529
$httpClientMock = $this->getMockForAbstractClass('Flagship\Utils\HttpClientInterface');
529530

531+
/**
532+
* @var NoBatchingContinuousCachingStrategy| MockObject
533+
*/
530534
$strategy = $this->getMockForAbstractClass(
531535
"Flagship\Api\NoBatchingContinuousCachingStrategy",
532536
[
@@ -537,12 +541,14 @@ public function testAddTroubleshootingHit()
537541
true,
538542
false,
539543
true,
540-
["sendTroubleshooting"]
544+
["sendTroubleshooting", 'isTroubleshootingActivated']
541545
);
542546

543547
$troubleshooting = new Troubleshooting();
544548
$troubleshooting->setConfig($config);
545549

550+
$strategy->expects($this->once())->method('isTroubleshootingActivated')->willReturn(true);
551+
546552
$strategy->expects($this->once())->method('sendTroubleshooting')->with($troubleshooting);
547553

548554
$strategy->addTroubleshootingHit($troubleshooting);

0 commit comments

Comments
 (0)