Skip to content

Commit 2f53c01

Browse files
authored
Merge pull request #141 from splitio/develop
Develop
2 parents 3f8ce45 + 8f2bdfa commit 2f53c01

14 files changed

+132
-44
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
*.phar
22
.idea
3-
*.sh
43
*~
54
ci
65
composer.lock
@@ -23,3 +22,6 @@ test.php
2322

2423
# phpenv
2524
.php-version
25+
26+
# Sonarqube
27+
.scannerwork

.travis.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
language: php
22

3+
git:
4+
depth: false
5+
36
env:
47
global:
58
- COMPOSER_DISABLE_XDEBUG_WARN=1
69

710
matrix:
811
include:
912
- dist: precise
10-
php: '5.3'
13+
php: '5.4'
1114
- dist: xenial
1215
php: '7.2'
16+
after_success:
17+
- bash sonar-scanner.sh
1318

1419
services:
1520
- redis-server

CHANGES.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
6.2.3 (Nov 1, 2019)
2+
- Added flag `IPAddressesEnabled` into options to enable/disable sending MachineName and MachineIP when data is posted in headers.
3+
14
6.2.2 (Sep 18, 2019)
25
- Fetch multiple splits at once on getTreatments/getTreatmentsWithConfig
36
- Removed MatcherClient (DependencyMatcher now uses Evaluator directly)

composer.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@
2727
"require-dev": {
2828
"phpunit/phpunit": "~4.0",
2929
"phpdocumentor/phpdocumentor": "2.*",
30-
"squizlabs/php_codesniffer": "2.*"
30+
"squizlabs/php_codesniffer": "2.*",
31+
"rogervila/php-sonarqube-scanner": "0.4.0"
3132
},
32-
33+
3334
"autoload": {
3435
"psr-4": {
3536
"SplitIO\\": "src/SplitIO/",

sonar-scanner.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#/bin/bash -e
2+
3+
sonar_scanner() {
4+
local params="$@"
5+
6+
vendor/bin/sonar-scanner \
7+
-Dsonar.host.url='https://sonarqube.split-internal.com' \
8+
-Dsonar.login="$SONAR_TOKEN" \
9+
-Dsonar.ws.timeout='300' \
10+
-Dsonar.sources='./src' \
11+
-Dsonar.projectName='php-client' \
12+
-Dsonar.exclusions='**/tests/**/*.*' \
13+
-Dsonar.links.ci='https://travis-ci.com/splitio/php-client' \
14+
-Dsonar.links.scm='https://github.com/splitio/php-client' \
15+
"${params}"
16+
17+
return $?
18+
}
19+
20+
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
21+
sonar_scanner \
22+
-Dsonar.pullrequest.provider='GitHub' \
23+
-Dsonar.pullrequest.github.repository='splitio/php-client' \
24+
-Dsonar.pullrequest.key=$TRAVIS_PULL_REQUEST \
25+
-Dsonar.pullrequest.branch=$TRAVIS_PULL_REQUEST_BRANCH \
26+
-Dsonar.pullrequest.base=$TRAVIS_BRANCH
27+
else
28+
if [ "$TRAVIS_BRANCH" == 'master' ]; then
29+
sonar_scanner \
30+
-Dsonar.branch.name=$TRAVIS_BRANCH
31+
else
32+
if [ "$TRAVIS_BRANCH" == 'develop' ]; then
33+
TARGET_BRANCH='master'
34+
else
35+
TARGET_BRANCH='develop'
36+
fi
37+
sonar_scanner \
38+
-Dsonar.branch.name=$TRAVIS_BRANCH \
39+
-Dsonar.branch.target=$TARGET_BRANCH
40+
fi
41+
fi

src/SplitIO/Component/Cache/ImpressionCache.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,19 @@
33

44
use SplitIO\Component\Common\Di;
55
use SplitIO\Component\Cache\KeyFactory;
6+
use SplitIO\Sdk\QueueMetadataMessage;
67

78
class ImpressionCache
89
{
910
const IMPRESSIONS_QUEUE_KEY = "SPLITIO.impressions";
1011
const IMPRESSION_KEY_DEFAULT_TTL = 3600;
1112

12-
public function logImpressions($impressions, $metadata)
13+
public function logImpressions($impressions, QueueMetadataMessage $metadata)
1314
{
1415
$toStore = array_map(
1516
function ($imp) use ($metadata) {
1617
return json_encode(array(
17-
"m" => array(
18-
"s" => $metadata['sdkVersion'],
19-
"i" => $metadata['machineIp'],
20-
"n" => $metadata['machineName'],
21-
),
18+
'm' => $metadata->toArray(),
2219
"i" => array(
2320
"k" => $imp->getId(),
2421
"b" => $imp->getBucketingKey(),

src/SplitIO/Sdk/Client.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use SplitIO\Component\Cache\MetricsCache;
88
use SplitIO\Sdk\Events\EventDTO;
99
use SplitIO\Sdk\Events\EventQueueMessage;
10-
use SplitIO\Sdk\Events\EventQueueMetadataMessage;
10+
use SplitIO\Sdk\QueueMetadataMessage;
1111
use SplitIO\Sdk\Impressions\Impression;
1212
use SplitIO\TreatmentImpression;
1313
use SplitIO\Sdk\Impressions\ImpressionLabel;
@@ -38,6 +38,9 @@ public function __construct($options = array())
3838
if (isset($options['impressionListener'])) {
3939
$this->impressionListener = new \SplitIO\Sdk\ImpressionListenerWrapper($options['impressionListener']);
4040
}
41+
$this->queueMetadata = new QueueMetadataMessage(
42+
isset($options['IPAddressesEnabled']) ? $options['IPAddressesEnabled'] : true
43+
);
4144
}
4245

4346
/**
@@ -305,7 +308,7 @@ private function doInputValidationForTreatments($key, $featureNames, array $attr
305308
private function registerData($impressions, $attributes, $metricName, $latency = null)
306309
{
307310
try {
308-
TreatmentImpression::log($impressions);
311+
TreatmentImpression::log($impressions, $this->queueMetadata);
309312
if (isset($this->impressionListener)) {
310313
$this->impressionListener->sendDataToClient($impressions, $attributes);
311314
}
@@ -541,8 +544,7 @@ public function track($key, $trafficType, $eventType, $value = null, $properties
541544

542545
try {
543546
$eventDTO = new EventDTO($key, $trafficType, $eventType, $value, $properties);
544-
$eventMessageMetadata = new EventQueueMetadataMessage();
545-
$eventQueueMessage = new EventQueueMessage($eventMessageMetadata, $eventDTO);
547+
$eventQueueMessage = new EventQueueMessage($this->queueMetadata, $eventDTO);
546548
return EventsCache::addEvent($eventQueueMessage);
547549
} catch (\Exception $exception) {
548550
// @codeCoverageIgnoreStart

src/SplitIO/Sdk/Events/EventQueueMessage.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<?php
22
namespace SplitIO\Sdk\Events;
33

4+
use SplitIO\Sdk\QueueMetadataMessage;
5+
46
class EventQueueMessage
57
{
68
/**
@@ -18,15 +20,15 @@ class EventQueueMessage
1820
* @param $metadata
1921
* @param $event
2022
*/
21-
public function __construct(EventQueueMetadataMessage $metadata, EventDTO $event)
23+
public function __construct(QueueMetadataMessage $metadata, EventDTO $event)
2224
{
2325
$this->metadata = $metadata;
2426
$this->event = $event;
2527
}
2628

2729

2830
/**
29-
* @return EventQueueMetadataMessage
31+
* @return QueueMetadataMessage
3032
*/
3133
public function getMetadata()
3234
{
@@ -36,7 +38,7 @@ public function getMetadata()
3638
/**
3739
* @param mixed $metadata
3840
*/
39-
public function setMetadata(EventQueueMetadataMessage $metadata)
41+
public function setMetadata(QueueMetadataMessage $metadata)
4042
{
4143
$this->metadata = $metadata;
4244
}

src/SplitIO/Sdk/Events/EventQueueMetadataMessage.php renamed to src/SplitIO/Sdk/QueueMetadataMessage.php

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
2-
namespace SplitIO\Sdk\Events;
2+
namespace SplitIO\Sdk;
33

4-
class EventQueueMetadataMessage
4+
class QueueMetadataMessage
55
{
66
private $sdkVersion;
77

@@ -10,16 +10,23 @@ class EventQueueMetadataMessage
1010
private $machineName;
1111

1212
/**
13-
* EventQueueMetadataMessage constructor.
13+
* QueueMetadataMessage constructor.
1414
*/
15-
public function __construct()
15+
public function __construct($IPAddressesEnabled = true)
1616
{
1717
$this->sdkVersion = 'php-' . \SplitIO\version();
18-
$this->machineIP = \SplitIO\getHostIpAddress();
19-
$this->machineName = 'unknown';
18+
$this->machineIP = 'NA';
19+
$this->machineName = 'NA';
20+
if ($IPAddressesEnabled) {
21+
$this->machineIP = \SplitIO\getHostIpAddress();
22+
if ($this->machineIP != 'unknown') {
23+
$this->machineName = 'ip-' . str_replace('.', '-', $this->machineIP);
24+
} else {
25+
$this->machineName = 'unknown';
26+
}
27+
}
2028
}
2129

22-
2330
/**
2431
* @return mixed
2532
*/

src/SplitIO/TreatmentImpression.php

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,26 @@
44
use SplitIO\Component\Cache\ImpressionCache;
55
use SplitIO\Sdk\Impressions\Impression;
66
use SplitIO\Component\Common\Di;
7+
use SplitIO\Sdk\QueueMetadataMessage;
78

89
class TreatmentImpression
910
{
1011
/**
1112
* @param \SplitIO\Sdk\Impressions\Impression $impressions
1213
* @return bool
1314
*/
14-
public static function log($impressions)
15+
public static function log($impressions, QueueMetadataMessage $metadata)
1516
{
1617
try {
1718
Di::getLogger()->debug($impressions);
1819
if (is_null($impressions) || (is_array($impressions) && 0 == count($impressions))) {
19-
return;
20+
return null;
2021
}
2122
$impressionCache = new ImpressionCache();
2223
$toStore = (is_array($impressions)) ? $impressions : array($impressions);
2324
return $impressionCache->logImpressions(
2425
$toStore,
25-
array(
26-
'sdkVersion' => 'php-' . \SplitIO\version(),
27-
'machineIp' => \SplitIO\getHostIpAddress(),
28-
'machineName' => null, // TODO
29-
)
26+
$metadata
3027
);
3128
} catch (\Exception $e) {
3229
Di::getLogger()->warning('Unable to write impression back to redis.');

0 commit comments

Comments
 (0)