Skip to content

Commit bb8f209

Browse files
Create a test PHP project and test the roadrunner workflow
1 parent c8ae3c5 commit bb8f209

File tree

4 files changed

+72
-4
lines changed

4 files changed

+72
-4
lines changed

.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
.DS_Store
22
*.pyc
33
__pycache__
4-
files/

molecule/default/converge.yml

+5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
environment:
55
GITHUB_ACTIONS: "maybe"
66
vars:
7+
php:
8+
install_composer: yes
9+
roadrunner:
10+
config:
11+
main:
712
system:
813
features:
914
proserver_user: yes

molecule/default/verify.yml

+44-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,47 @@
55
hosts: all
66
gather_facts: false
77
tasks:
8-
- name: Example assertion
9-
ansible.builtin.assert:
10-
that: true
8+
- name: Create the current_release folder
9+
ansible.builtin.file:
10+
dest: "{{ item }}"
11+
state: "directory"
12+
owner: proserver
13+
mode: "0755"
14+
loop:
15+
- "{{ roadrunner.prefix.current_release }}"
16+
- "{{ roadrunner.prefix.current_release }}/public"
17+
18+
- name: Copy the example PHP script
19+
ansible.builtin.copy:
20+
src: "molecule/files/app.php"
21+
dest: "{{ roadrunner.prefix.current_release }}/app.php"
22+
23+
- name: Initialize the composer project
24+
community.general.composer:
25+
command: create-project
26+
arguments: "punktde/roadrunner-test {{ roadrunner.prefix.current_release }} ~1.0"
27+
working_dir: "{{ roadrunner.prefix.current_release }}"
28+
prefer_dist: true
29+
30+
- name: Install PHP dependencies
31+
community.general.composer:
32+
command: require
33+
arguments: "{{ item }}"
34+
working_dir: "{{ roadrunner.prefix.current_release }}"
35+
loop:
36+
- "nyholm/psr7"
37+
- "spiral/roadrunner"
38+
- "spiral/roadrunner-http"
39+
40+
- name: Enable and start the roadrunner-main service
41+
community.general.supervisorctl:
42+
name: "roadrunner-main"
43+
state: "present"
44+
stop_before_removing: yes
45+
46+
- name: Check that a page returns successfully but fail if the word AWESOME is not in the page contents
47+
ansible.builtin.uri:
48+
url: http://{{ roadrunner.defaults.http.address }}
49+
return_content: true
50+
register: this
51+
failed_when: this is failed or "'Hello world' not in this.content"

molecule/files/app.php

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
use Spiral\RoadRunner;
4+
use Nyholm\Psr7;
5+
6+
include "vendor/autoload.php";
7+
8+
$worker = RoadRunner\Worker::create();
9+
$psrFactory = new Psr7\Factory\Psr17Factory();
10+
11+
$worker = new RoadRunner\Http\PSR7Worker($worker, $psrFactory, $psrFactory, $psrFactory);
12+
13+
while ($req = $worker->waitRequest()) {
14+
try {
15+
$rsp = new Psr7\Response();
16+
$rsp->getBody()->write('Hello world!');
17+
18+
$worker->respond($rsp);
19+
} catch (\Throwable $e) {
20+
$worker->getWorker()->error((string)$e);
21+
}
22+
}
23+
?>

0 commit comments

Comments
 (0)