Skip to content
This repository was archived by the owner on Mar 5, 2025. It is now read-only.

Commit 3e80e46

Browse files
committed
Add tests
1 parent 7ad1641 commit 3e80e46

File tree

2 files changed

+134
-7
lines changed

2 files changed

+134
-7
lines changed

examples/fast_hello.php

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
header('Cache-Control: no-store'); // Very important role for Google Chrome
4+
header('Content-Type: text/event-stream; charset=UTF-8');
5+
6+
while (ob_get_level()) ob_end_clean();
7+
8+
var_dump(compact('_GET', '_POST'));
9+
var_dump($_SERVER['SERVER_PORT']);
10+
flush();
11+
12+
usleep(50000);
13+
14+
echo "Hello (1)\n";
15+
flush();
16+
17+
usleep(50000);
18+
19+
echo "Hello (2)\n";
20+
flush();
21+
22+
usleep(50000);
23+
24+
echo "Hello (3)\n";
25+
flush();

tests/unit/RemoteSimpleTest.php

+109-7
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,19 @@ class RemoteSimpleTest extends \Codeception\TestCase\Test
1111

1212
public function _before()
1313
{
14+
Co::setDefaultOptions(['concurrency' => 0]);
1415
}
1516

1617
public function _after()
1718
{
1819
}
1920

21+
private function assertInRange($min, $actual, $max)
22+
{
23+
$this->assertGreaterThanOrEqual($min, $actual);
24+
$this->assertLessThanOrEqual($max, $actual);
25+
}
26+
2027
private static function curlInitWith($url, array $params = [])
2128
{
2229
$ch = curl_init();
@@ -29,17 +36,112 @@ private static function curlInitWith($url, array $params = [])
2936
return $ch;
3037
}
3138

32-
public function testDownload()
39+
private function curlsInitWith($n, $url, array $params = [])
3340
{
34-
$ch = self::curlInitWith('http://localhost:8080/upload_form.php');
35-
Co::wait($ch);
36-
$this->assertEquals(200, curl_getinfo($ch, CURLINFO_HTTP_CODE));
41+
$curls = [];
42+
for ($i = 0; $i < $n; ++$i) {
43+
$curls[] = $this->curlInitWith($url, $params);
44+
}
45+
return $curls;
3746
}
3847

39-
public function testRunSecure()
48+
private function curlAssert200OK($ch)
4049
{
41-
$ch = self::curlInitWith('https://localhost:8081/upload_form.php');
42-
Co::wait($ch);
4350
$this->assertEquals(200, curl_getinfo($ch, CURLINFO_HTTP_CODE));
4451
}
52+
53+
private function curlsAssert200OK(array $curls)
54+
{
55+
foreach ($curls as $ch) {
56+
$this->assertEquals(200, curl_getinfo($ch, CURLINFO_HTTP_CODE));
57+
}
58+
}
59+
60+
public function testSimple()
61+
{
62+
Co::wait($ch = $this->curlInitWith('http://localhost:8080/upload_form.php'));
63+
$this->curlAssert200OK($ch);
64+
}
65+
66+
public function testSimpleSecure()
67+
{
68+
Co::wait($ch = $this->curlInitWith('https://localhost:8081/upload_form.php'));
69+
$this->curlAssert200OK($ch);
70+
}
71+
72+
public function testDelayed()
73+
{
74+
$start = microtime(true);
75+
Co::wait($ch = $this->curlInitWith('http://localhost:8080/fast_hello.php'));
76+
$end = microtime(true);
77+
$this->curlAssert200OK($ch);
78+
$this->assertInRange(0.1, $end - $start, 0.2);
79+
}
80+
81+
public function testDelayedSecure()
82+
{
83+
$start = microtime(true);
84+
Co::wait($ch = $this->curlInitWith('https://localhost:8081/fast_hello.php'));
85+
$end = microtime(true);
86+
$this->curlAssert200OK($ch);
87+
$this->assertInRange(0.11, $end - $start, 0.21);
88+
}
89+
90+
public function testDelayedGroupSingle()
91+
{
92+
$start = microtime(true);
93+
Co::wait($chs = $this->curlsInitWith(5, 'http://localhost:8080/fast_hello.php'));
94+
$end = microtime(true);
95+
$this->curlsAssert200OK($chs);
96+
$this->assertInRange(0.12, $end - $start, 0.22);
97+
}
98+
99+
public function testDelayedGroupSingleSecure()
100+
{
101+
$start = microtime(true);
102+
Co::wait($chs = $this->curlsInitWith(5, 'https://localhost:8081/fast_hello.php'));
103+
$end = microtime(true);
104+
$this->curlsAssert200OK($chs);
105+
$this->assertInRange(0.12, $end - $start, 0.22);
106+
}
107+
108+
public function testDelayedGroupDouble()
109+
{
110+
$start = microtime(true);
111+
Co::wait($chs = $this->curlsInitWith(10, 'http://localhost:8080/fast_hello.php'));
112+
$end = microtime(true);
113+
$this->curlsAssert200OK($chs);
114+
$this->assertInRange(0.28, $end - $start, 0.38);
115+
}
116+
117+
public function testDelayedGroupDoubleSecure()
118+
{
119+
$start = microtime(true);
120+
Co::wait($chs = $this->curlsInitWith(10, 'https://localhost:8081/fast_hello.php'));
121+
$end = microtime(true);
122+
$this->curlsAssert200OK($chs);
123+
$this->assertInRange(0.32, $end - $start, 0.42);
124+
}
125+
126+
public function testDelayedGroupDoubleAtOnce()
127+
{
128+
$start = microtime(true);
129+
Co::wait($chs = $this->curlsInitWith(10, 'http://localhost:8080/fast_hello.php'), [
130+
'concurrency' => 0,
131+
]);
132+
$end = microtime(true);
133+
$this->curlsAssert200OK($chs);
134+
$this->assertInRange(0.28, $end - $start, 0.38);
135+
}
136+
137+
public function testDelayedGroupDoubleAtOnceSecure()
138+
{
139+
$start = microtime(true);
140+
Co::wait($chs = $this->curlsInitWith(10, 'https://localhost:8081/fast_hello.php'), [
141+
'concurrency' => 0,
142+
]);
143+
$end = microtime(true);
144+
$this->curlsAssert200OK($chs);
145+
$this->assertInRange(0.32, $end - $start, 0.42);
146+
}
45147
}

0 commit comments

Comments
 (0)