File tree Expand file tree Collapse file tree 4 files changed +46
-11
lines changed
tests/Unit/Extension/Core/Stage/Sampler Expand file tree Collapse file tree 4 files changed +46
-11
lines changed Original file line number Diff line number Diff line change @@ -21,7 +21,7 @@ public function __invoke(): Generator
21
21
$ samples [$ hash ] = [];
22
22
}
23
23
24
- foreach ($ config ['describe ' ] as $ field ) {
24
+ foreach (( array ) $ config ['describe ' ] as $ field ) {
25
25
if (false === isset ($ samples [$ hash ][$ field ])) {
26
26
$ samples [$ hash ][$ field ] = [];
27
27
}
@@ -44,7 +44,7 @@ public function configure(Schema $schema)
44
44
private function buildHash (array $ row , array $ config ): string
45
45
{
46
46
$ hash = [];
47
- foreach ($ config ['group_by ' ] as $ groupBy ) {
47
+ foreach (( array ) $ config ['group_by ' ] as $ groupBy ) {
48
48
if (!isset ($ row [$ groupBy ])) {
49
49
throw new InvalidArgumentException (sprintf (
50
50
'Group by field "%s" does not exist in input with fields "%s" ' ,
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace PhpBench \Pipeline \Extension \Core \Stage \Parameter ;
4
+
5
+ use PhpBench \Pipeline \Core \Stage ;
6
+ use Generator ;
7
+ use PhpBench \Pipeline \Core \Schema ;
8
+
9
+ class CounterParameter implements Stage
10
+ {
11
+ public function __invoke (): Generator
12
+ {
13
+ list ($ config , $ data ) = yield ;
14
+
15
+ $ count = 0 ;
16
+ while (true ) {
17
+ list ($ config , $ data ) = yield [ $ config ['name ' ] => $ count += $ config ['step ' ] ];
18
+ }
19
+ }
20
+
21
+ public function configure (Schema $ schema )
22
+ {
23
+ $ schema ->setDefaults ([
24
+ 'name ' => 'count ' ,
25
+ 'step ' => 1
26
+ ]);
27
+ }
28
+ }
Original file line number Diff line number Diff line change @@ -23,13 +23,10 @@ public function __invoke(): Generator
23
23
$ this ->activeRequests ++;
24
24
}
25
25
26
- $ status = curl_multi_exec ($ this ->multiHandle , $ active );
27
26
$ multiInfo = curl_multi_info_read ($ this ->multiHandle );
28
27
29
28
if (false !== $ multiInfo ) {
30
- $ info = curl_getinfo ($ multiInfo ['handle ' ]);
31
- curl_multi_remove_handle ($ this ->multiHandle , $ multiInfo ['handle ' ]);
32
- curl_close ($ multiInfo ['handle ' ]);
29
+ $ info = $ this ->closeHandle ($ multiInfo );
33
30
$ this ->activeRequests --;
34
31
list ($ config , $ data ) = yield $ info ;
35
32
}
@@ -63,5 +60,14 @@ private function sampleUrl(array $config): void
63
60
}
64
61
65
62
curl_multi_add_handle ($ this ->multiHandle , $ handle );
63
+ curl_multi_exec ($ this ->multiHandle , $ active );
64
+ }
65
+
66
+ private function closeHandle ($ multiInfo )
67
+ {
68
+ $ info = curl_getinfo ($ multiInfo ['handle ' ]);
69
+ curl_multi_remove_handle ($ this ->multiHandle , $ multiInfo ['handle ' ]);
70
+ curl_close ($ multiInfo ['handle ' ]);
71
+ return $ info ;
66
72
}
67
73
}
Original file line number Diff line number Diff line change @@ -87,14 +87,15 @@ public function testConcurrentRequests()
87
87
->stage ('sampler/curl ' , [
88
88
'url ' => self ::SAMPLE_URL ,
89
89
'concurrency ' => 4 ,
90
- 'headers ' => [
91
- 'X-Header1 ' => 'Yes ' ,
92
- 'X-Header2 ' => 'No ' ,
93
- ], ])
90
+ ])
91
+ ->stage ('aggregator/describe ' , [ 'group_by ' => 'url ' , 'describe ' => 'total_time ' ])
92
+ ->stage ('parameter/counter ' )
94
93
->run ();
95
94
96
95
$ requests = $ this ->requests ();
97
- $ this ->assertCount (4 , $ requests );
96
+
97
+ // although we specified a concurrency of 4, 6 requests were made?
98
+ $ this ->assertCount (6 , $ requests );
98
99
}
99
100
100
101
private function requests (): array
You can’t perform that action at this time.
0 commit comments