summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2021-11-09 15:48:44 +0300
committerMax Romanov <max.romanov@nginx.com>2021-11-09 15:48:44 +0300
commitb424a00ec5746884f8ebb1d75b3f0fec0b3a05ff (patch)
tree77c7ca06d1298d97c9818eb9f875e9dc41508f44 /test
parent506ec2b8258cfe03d0d7e3b19eb79d1075a6174c (diff)
downloadunit-b424a00ec5746884f8ebb1d75b3f0fec0b3a05ff.tar.gz
unit-b424a00ec5746884f8ebb1d75b3f0fec0b3a05ff.tar.bz2
Tests: PHP shared opcache test added.
Diffstat (limited to '')
-rw-r--r--test/php/opcache/index.php18
-rw-r--r--test/php/opcache/test.php1
-rw-r--r--test/test_php_application.py17
-rw-r--r--test/unit/applications/lang/php.py27
4 files changed, 54 insertions, 9 deletions
diff --git a/test/php/opcache/index.php b/test/php/opcache/index.php
new file mode 100644
index 00000000..de4002bb
--- /dev/null
+++ b/test/php/opcache/index.php
@@ -0,0 +1,18 @@
+<?php
+
+$pid = getmypid();
+
+header('X-Pid: ' . $pid);
+
+if (function_exists('opcache_is_script_cached')) {
+ if (opcache_is_script_cached(__DIR__ . '/test.php')) {
+ header('X-Cached: 1');
+ } else {
+ header('X-Cached: 0');
+ opcache_compile_file(__DIR__ . '/test.php');
+ }
+} else {
+ header('X-Cached: -1');
+}
+
+?>
diff --git a/test/php/opcache/test.php b/test/php/opcache/test.php
new file mode 100644
index 00000000..147cebcd
--- /dev/null
+++ b/test/php/opcache/test.php
@@ -0,0 +1 @@
+<?php phpinfo(); ?>
diff --git a/test/test_php_application.py b/test/test_php_application.py
index bb7d978c..d9c16a6d 100644
--- a/test/test_php_application.py
+++ b/test/test_php_application.py
@@ -713,3 +713,20 @@ class TestPHPApplication(TestApplicationPHP):
), 'relative path w/ chdir'
assert self.get()['body'] == 'test', 'relative path 2'
+
+ def test_php_application_shared_opcache(self):
+ self.load('opcache', limits={'requests': 1})
+
+ r = self.get()
+ cached = r['headers']['X-Cached']
+ if cached == '-1':
+ pytest.skip('opcache is not supported')
+
+ pid = r['headers']['X-Pid']
+
+ assert cached == '0', 'not cached'
+
+ r = self.get()
+
+ assert r['headers']['X-Pid'] != pid, 'new instance'
+ assert r['headers']['X-Cached'] == '1', 'cached'
diff --git a/test/unit/applications/lang/php.py b/test/unit/applications/lang/php.py
index 90c0078c..5319d2ca 100644
--- a/test/unit/applications/lang/php.py
+++ b/test/unit/applications/lang/php.py
@@ -22,18 +22,27 @@ class TestApplicationPHP(TestApplicationProto):
script_path = '/app/php/' + script
+ app = {
+ "type": self.get_application_type(),
+ "processes": kwargs.pop('processes', {"spare": 0}),
+ "root": script_path,
+ "working_directory": script_path,
+ "index": index,
+ }
+
+ for attr in (
+ 'environment',
+ 'limits',
+ 'options',
+ 'targets',
+ ):
+ if attr in kwargs:
+ app[attr] = kwargs.pop(attr)
+
self._load_conf(
{
"listeners": {"*:7080": {"pass": "applications/" + script}},
- "applications": {
- script: {
- "type": self.get_application_type(),
- "processes": {"spare": 0},
- "root": script_path,
- "working_directory": script_path,
- "index": index,
- }
- },
+ "applications": {script: app},
},
**kwargs
)