Skip to content

Commit cc8119a

Browse files
committed
Tested profiler
1 parent 37c8411 commit cc8119a

File tree

9 files changed

+115
-117
lines changed

9 files changed

+115
-117
lines changed

src/ScayTrase/SmsDeliveryBundle/DataCollector/MessageDeliveryDataCollector.php

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,25 @@
99
namespace ScayTrase\SmsDeliveryBundle\DataCollector;
1010

1111

12+
use ScayTrase\SmsDeliveryBundle\Service\MessageDeliveryService;
1213
use Symfony\Component\HttpFoundation\Request;
1314
use Symfony\Component\HttpFoundation\Response;
1415
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
1516

1617
class MessageDeliveryDataCollector extends DataCollector
1718
{
19+
/** @var MessageDeliveryService */
20+
private $sender;
21+
22+
/**
23+
* MessageDeliveryDataCollector constructor.
24+
* @param MessageDeliveryService $sender
25+
*/
26+
public function __construct(MessageDeliveryService $sender)
27+
{
28+
$this->sender = $sender;
29+
}
30+
1831
/**
1932
* Collects data for the given Request and Response.
2033
*
@@ -26,7 +39,7 @@ class MessageDeliveryDataCollector extends DataCollector
2639
*/
2740
public function collect(Request $request, Response $response, \Exception $exception = null)
2841
{
29-
return;
42+
return $this->data = $this->sender->getProfile();
3043
}
3144

3245
/**
@@ -41,11 +54,6 @@ public function getName()
4154
return 'sms_delivery.data_collector';
4255
}
4356

44-
public function putMessageInfo(array $data)
45-
{
46-
$this->data[] = $data;
47-
}
48-
4957
public function getData()
5058
{
5159
return $this->data;

src/ScayTrase/SmsDeliveryBundle/DependencyInjection/Compiler/DataCollectorCompilerPass.php

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/ScayTrase/SmsDeliveryBundle/DependencyInjection/Configuration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function getConfigTreeBuilder()
2424

2525
$disable_delivery = (new BooleanNodeDefinition('disable_delivery'));
2626
$delivery_recipient = (new ScalarNodeDefinition('delivery_recipient'));
27-
$sender = (new ScalarNodeDefinition('sender'));
27+
$sender = (new ScalarNodeDefinition('transport'));
2828

2929
$rootNode
3030
->children()

src/ScayTrase/SmsDeliveryBundle/Resources/config/services.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ parameters:
66
services:
77
sms_delivery.dummy_sender:
88
class: ScayTrase\SmsDeliveryBundle\Transport\DummyTransport
9-
arguments: [@service_container]
109

1110
sms_delivery.sender:
1211
class: ScayTrase\SmsDeliveryBundle\Service\MessageDeliveryService
@@ -17,6 +16,7 @@ services:
1716

1817
data_collector.sms_delivery.data_collector:
1918
class: ScayTrase\SmsDeliveryBundle\DataCollector\MessageDeliveryDataCollector
20-
arguments: ['@sms_delivery.sender']
19+
arguments:
20+
- @sms_delivery.sender
2121
tags:
22-
- { name: data_collector, template: "SMSDeliveryBundle:DataCollector:data_collector", id: "sms_delivery.data_collector" }
22+
- { name: data_collector, template: "SmsDeliveryBundle:DataCollector:data_collector", id: "sms_delivery.data_collector" }

src/ScayTrase/SmsDeliveryBundle/Resources/views/DataCollector/data_collector.html.twig

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,43 @@
11
{% extends 'WebProfilerBundle:Profiler:layout.html.twig' %}
22

3+
4+
35
{% block toolbar %}
6+
{% set success = true %}
7+
{% set good = 0 %}
8+
{% set bad = 0 %}
9+
{% for key,row in collector.data %}
10+
{% if row.status == 'fail' %}
11+
{% set success = false %}
12+
{% set bad = bad + 1 %}
13+
{% else %}
14+
{% set good = good + 1 %}
15+
{% endif %}
16+
{% endfor %}
417
{% set icon %}
518
<img width="23" height="28" alt="Short Messages"
619
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAeCAYAAABaKIzgAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsSAAALEgHS3X78AAAAGHRFWHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjOM5pdQAAABvElEQVRYR+3Xv0sCYRzHcU/vPMU7RAfbbYmmftAQtRRtDa39Ga0t/QENjdF/EEEQBFFruBbU6hYEDVkUZWVq9f5CBw/Hk5X6eBZ+4YXHfTU/Pr/oYv+pPIxjypAROOiosijhDe+GvGIDFtquCZgMGajARdslU6P7w912j0HQ7zTS6fRKMpnc0fTCoh3ReDx+lc1mJ3m90fUVZoMmEolrRkxOhWa4F0ilUmuu667regqzQQm5ncvlpi3LetT1BT/mnFGd57oe7inMBiVgnWm91fUCvKeSz+dHuX4K9xS9W6O2bR96njeLmUwmM0fAstxnRGuFQqHI60P4M4qebqYaZHQDDUjQKlNfbLU80NOgWiyNS4KOcf0c7inMBnUcZ/dzM1V1fcGIHrMclrj+8mSA2aCMVpmdvyWbStfnfpP1uszxtK/rK6Kdekaz5Pv+IoFfdH1FdEFlNBntI1mjun5I9Jvph/5M0Dt0FHQYrY6VbjmDjbYrjlXI1Oi+oBsusICulDzP/IY8rG1CfYyRxw25H35v5JXCHoKwErSj6TVZPg7Q90GlhnCCvg8qJafHKfo+qJT88yynyKD6oGKxD/dgDJY6o7ruAAAAAElFTkSuQmCC"/>
7-
<span class="sf-toolbar-status {% if collector.messageCount %}sf-toolbar-status-green{% endif %}">{{ collector.messageCount }}</span>
20+
<span
21+
class="sf-toolbar-status
22+
{% if collector.data | length %}
23+
{% if not success %}sf-toolbar-status-red{% else %}sf-toolbar-status-green{% endif %}
24+
{% endif %}">
25+
{{ collector.data | length }}
26+
</span>
827
{% endset %}
928

1029
{% set text %}
1130
<div class="sf-toolbar-info-piece">
12-
<b>Messages</b>
13-
<span>{{ collector.data | length }}</span>
31+
<b>Total</b> <span>{{ collector.data | length }}</span><br/>
1432
</div>
33+
{% if bad > 0 %}
34+
<div class="sf-toolbar-info-piece">
35+
<b>Succeeded</b> <span>{{ good }}</span>
36+
</div>
37+
<div class="sf-toolbar-info-piece">
38+
<b>Failed</b> <span>{{ bad }}</span>
39+
</div>
40+
{% endif %}
1541
{% endset %}
1642

1743
{% include 'WebProfilerBundle:Profiler:toolbar_item.html.twig' with {'link':profiler_url} %}
@@ -30,7 +56,8 @@
3056
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAeCAYAAABaKIzgAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsSAAALEgHS3X78AAAAGHRFWHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjOM5pdQAAABvElEQVRYR+3Xv0sCYRzHcU/vPMU7RAfbbYmmftAQtRRtDa39Ga0t/QENjdF/EEEQBFFruBbU6hYEDVkUZWVq9f5CBw/Hk5X6eBZ+4YXHfTU/Pr/oYv+pPIxjypAROOiosijhDe+GvGIDFtquCZgMGajARdslU6P7w912j0HQ7zTS6fRKMpnc0fTCoh3ReDx+lc1mJ3m90fUVZoMmEolrRkxOhWa4F0ilUmuu667regqzQQm5ncvlpi3LetT1BT/mnFGd57oe7inMBiVgnWm91fUCvKeSz+dHuX4K9xS9W6O2bR96njeLmUwmM0fAstxnRGuFQqHI60P4M4qebqYaZHQDDUjQKlNfbLU80NOgWiyNS4KOcf0c7inMBnUcZ/dzM1V1fcGIHrMclrj+8mSA2aCMVpmdvyWbStfnfpP1uszxtK/rK6Kdekaz5Pv+IoFfdH1FdEFlNBntI1mjun5I9Jvph/5M0Dt0FHQYrY6VbjmDjbYrjlXI1Oi+oBsusICulDzP/IY8rG1CfYyRxw25H35v5JXCHoKwErSj6TVZPg7Q90GlhnCCvg8qJafHKfo+qJT88yynyKD6oGKxD/dgDJY6o7ruAAAAAElFTkSuQmCC"/>
3157
</span>
3258
<strong>Short messages</strong>
33-
<span class="count">
59+
60+
<span class="count {% if not success %}sf-toolbar-status-red{% endif %}">
3461
<span>{{ collector.data | length }}</span>
3562
</span>
3663
</span>
@@ -50,22 +77,25 @@
5077
<table>
5178
<thead>
5279
<tr>
53-
<th scope="col">Status</th>
54-
<th scope="col">Messages</th>
55-
<th scope="col">Body</th>
56-
<th scope="col">Status</th>
57-
<th scope="col">Reason</th>
80+
<th scope="col">#</th>
81+
<th scope="col">Delivery Status</th>
82+
<th scope="col">Delivery Reason</th>
83+
<th scope="col">Delivery Transport</th>
84+
<th scope="col">Message Recipient</th>
85+
<th scope="col">Message Body</th>
86+
<th scope="col">Message Class</th>
5887
</tr>
5988
</thead>
6089
<tbody>
6190
{% for key,record in collector.data %}
6291
<tr>
6392
<td>{{ key }}</td>
64-
<td>{{ record.message.recipient }}</td>
65-
<td>{{ record.message.body }}</td>
6693
<td>{{ record.status }}</td>
6794
<td>{{ record.reason }}</td>
6895
<td>{{ record.transport }}</td>
96+
<td>{{ record.message.recipient }}</td>
97+
<td>{{ record.message.body }}</td>
98+
<td>{{ record.message_class }}</td>
6999
</tr>
70100
{% endfor %}
71101
</tbody>

src/ScayTrase/SmsDeliveryBundle/Service/MessageDeliveryService.php

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
namespace ScayTrase\SmsDeliveryBundle\Service;
1010

11-
use ScayTrase\SmsDeliveryBundle\DataCollector\MessageDeliveryDataCollector;
1211
use ScayTrase\SmsDeliveryBundle\Exception\DeliveryFailedException;
1312
use ScayTrase\SmsDeliveryBundle\Transport\TransportInterface;
1413

@@ -25,25 +24,23 @@ class MessageDeliveryService
2524
private $deliveryDisabled;
2625
/** @var string */
2726
private $recipientOverride;
28-
/** @var MessageDeliveryDataCollector|null */
29-
private $dataCollector;
27+
/** @var array[] */
28+
private $profile = array();
3029

3130
/**
3231
* @param TransportInterface $transport
3332
* @param bool $deliveryDisabled
3433
* @param null|string $recipientOverride
35-
* @param MessageDeliveryDataCollector $collector
3634
*/
3735
public function __construct(
3836
TransportInterface $transport,
3937
$deliveryDisabled = false,
40-
$recipientOverride = null,
41-
MessageDeliveryDataCollector $collector = null
42-
) {
38+
$recipientOverride = null
39+
)
40+
{
4341
$this->transport = $transport;
4442
$this->deliveryDisabled = $deliveryDisabled;
4543
$this->recipientOverride = $recipientOverride;
46-
$this->dataCollector = $collector;
4744
}
4845

4946
/**
@@ -53,14 +50,13 @@ public function __construct(
5350
public function send(ShortMessageInterface $message)
5451
{
5552
if ($this->deliveryDisabled === true) {
56-
if ($this->dataCollector) {
57-
$this->dataCollector->putMessageInfo(array(
58-
'transport' => null,
59-
'message' => $message,
60-
'status' => 'disabled',
61-
'reason' => 'sms_delivery.disable_delivery is true',
62-
));
63-
}
53+
$this->profile[] = array(
54+
'transport' => '/dev/null',
55+
'message_class' => get_class($message),
56+
'message' => $message,
57+
'status' => 'disabled',
58+
'reason' => 'sms_delivery.disable_delivery is true',
59+
);
6460

6561
return true;
6662
}
@@ -72,27 +68,33 @@ public function send(ShortMessageInterface $message)
7268
try {
7369
$result = $this->transport->send($message);
7470

75-
if ($this->dataCollector) {
76-
$this->dataCollector->putMessageInfo(array(
77-
'transport' => get_class($this->transport),
78-
'message' => $message,
79-
'status' => (true === $result) ? 'success' : 'fail',
80-
'reason' => (true === $result) ? 'OK' : $result
81-
));
82-
}
71+
$this->profile[] = array(
72+
'transport' => get_class($this->transport),
73+
'message_class' => get_class($message),
74+
'message' => $message,
75+
'status' => (true === $result) ? 'success' : 'fail',
76+
'reason' => (true === $result) ? 'OK' : $result
77+
);
8378

8479
return $result;
8580
} catch (DeliveryFailedException $e) {
86-
if ($this->dataCollector) {
87-
$this->dataCollector->putMessageInfo(array(
88-
'transport' => get_class($this->transport),
89-
'message' => $message,
90-
'status' => 'fail',
91-
'reason' => $e->getMessage(),
92-
));
93-
}
81+
$this->profile[] = array(
82+
'transport' => get_class($this->transport),
83+
'message_class' => get_class($message),
84+
'message' => $message,
85+
'status' => 'fail',
86+
'reason' => $e->getMessage(),
87+
);
9488

9589
return false;
9690
}
9791
}
92+
93+
/**
94+
* @return array[]
95+
*/
96+
public function getProfile()
97+
{
98+
return $this->profile;
99+
}
98100
}

src/ScayTrase/SmsDeliveryBundle/SmsDeliveryBundle.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ public function build(ContainerBuilder $container)
2323
{
2424
parent::build($container);
2525
$container->addCompilerPass(new TransportCompilerPass());
26-
$container->addCompilerPass(new DataCollectorCompilerPass());
2726
}
2827

2928
}

src/ScayTrase/SmsDeliveryBundle/Tests/MessageDeliveryServiceTest.php

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,20 @@ public function testBundleConfiguration($config)
4949
$this->assertTrue($container->hasParameter('sms_delivery.delivery_recipient'));
5050
}
5151

52+
/**
53+
* @param array|null $config
54+
* @return ContainerBuilder
55+
*/
56+
private function buildContainer(array $config = null)
57+
{
58+
$extension = new SmsDeliveryExtension();
59+
$container = new ContainerBuilder();
60+
$container->addCompilerPass(new TransportCompilerPass());
61+
$extension->load(array((array)$config), $container);
62+
$container->compile();
63+
return $container;
64+
}
65+
5266
public function testBundleConfigurationValues()
5367
{
5468
$container = $this->buildContainer(array('disable_delivery' => true, 'delivery_recipient' => '1234567890'));
@@ -91,10 +105,10 @@ public function testDataCollector()
91105
{
92106
$transport = new DummyTransport();
93107

94-
$collector = new MessageDeliveryDataCollector();
95-
96108
/** @var MessageDeliveryService $sender */
97-
$sender = new MessageDeliveryService($transport, true, null, $collector);
109+
$sender = new MessageDeliveryService($transport, true, null);
110+
$collector = new MessageDeliveryDataCollector($sender);
111+
98112
/** @var ShortMessageInterface|\PHPUnit_Framework_MockObject_MockObject $message */
99113
$message = $this->getMock('ScayTrase\SmsDeliveryBundle\Service\ShortMessageInterface');
100114

@@ -120,31 +134,16 @@ public function testExceptionalSender()
120134
{
121135
/** @var ShortMessageInterface|\PHPUnit_Framework_MockObject_MockObject $message */
122136
$message = $this->getMock('ScayTrase\SmsDeliveryBundle\Service\ShortMessageInterface');
123-
$message->expects($this->once())->method('getRecipient')->willThrowException(new InvalidRecipientDeliveryException('Test exception'));
137+
124138
$transport = new DummyTransport();
125-
$collector = new MessageDeliveryDataCollector();
139+
$sender = new MessageDeliveryService($transport, false, null);
140+
$collector = new MessageDeliveryDataCollector($sender);
126141

127-
/** @var MessageDeliveryService|\PHPUnit_Framework_MockObject_MockObject $sender */
128-
$sender = new MessageDeliveryService($transport, false, null, $collector);
129142

130143
$this->assertFalse($sender->send($message));
131144
$collector->collect(new Request(), new Response());
132145
$this->assertEquals(1, count($collector->getData()));
133146

134-
$this->assertEquals('Test exception', $collector->getData()[0]['reason']);
135-
}
136-
137-
/**
138-
* @param array|null $config
139-
* @return ContainerBuilder
140-
*/
141-
private function buildContainer(array $config = null)
142-
{
143-
$extension = new SmsDeliveryExtension();
144-
$container = new ContainerBuilder();
145-
$container->addCompilerPass(new TransportCompilerPass());
146-
$extension->load(array((array)$config), $container);
147-
$container->compile();
148-
return $container;
147+
$this->assertEquals('Sending not configured', $collector->getData()[0]['reason']);
149148
}
150149
}

0 commit comments

Comments
 (0)