Skip to content

Commit c3b07fe

Browse files
MDA2AVclaude
andcommitted
Add standalone test servers from Glyph11
Moves AspNetMinimal, CaddyServer, ExpressServer, FlaskServer, JettyServer, NancyServer, NginxServer, PingoraServer, QuarkusServer, and SpringBootServer into src/Servers/. Updates probe workflow to reference servers locally; Glyph11 checkout now only needed for GlyphServer. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 7a0d5e0 commit c3b07fe

20 files changed

Lines changed: 414 additions & 16 deletions

File tree

.github/workflows/probe.yml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ jobs:
5959
- name: Build Http11Probe
6060
run: dotnet build Http11Probe.slnx -c Release
6161

62-
- name: Build Glyph11
62+
- name: Build Glyph11 (GlyphServer only)
6363
run: dotnet build Glyph11/src/Glyph11.sln -c Release
6464

6565
- name: Install Flask
6666
run: pip install flask
6767

6868
- name: Install Express
69-
run: npm install --prefix Glyph11/src/Servers/ExpressServer
69+
run: npm install --prefix src/Servers/ExpressServer
7070

7171
- name: Install Nginx, Apache, and system dependencies
7272
run: sudo apt-get update && sudo apt-get install -y nginx apache2 pkg-config libssl-dev
@@ -78,12 +78,12 @@ jobs:
7878
7979
- name: Build Java servers
8080
run: |
81-
mvn package -q -DskipTests -f Glyph11/src/Servers/SpringBootServer/pom.xml
82-
mvn package -q -DskipTests -f Glyph11/src/Servers/QuarkusServer/pom.xml
83-
mvn package -q -DskipTests -f Glyph11/src/Servers/JettyServer/pom.xml
81+
mvn package -q -DskipTests -f src/Servers/SpringBootServer/pom.xml
82+
mvn package -q -DskipTests -f src/Servers/QuarkusServer/pom.xml
83+
mvn package -q -DskipTests -f src/Servers/JettyServer/pom.xml
8484
8585
- name: Build Pingora
86-
run: cargo build --release --manifest-path Glyph11/src/Servers/PingoraServer/Cargo.toml
86+
run: cargo build --release --manifest-path src/Servers/PingoraServer/Cargo.toml
8787

8888
# ── Start all servers ──────────────────────────────────────────────
8989

@@ -94,42 +94,42 @@ jobs:
9494
9595
- name: Start Kestrel (AspNetMinimal)
9696
run: |
97-
dotnet run --no-build -c Release --project Glyph11/src/Servers/AspNetMinimal &
97+
dotnet run --no-build -c Release --project src/Servers/AspNetMinimal &
9898
echo $! > kestrel.pid
9999
100100
- name: Start Flask
101101
run: |
102-
python3 Glyph11/src/Servers/FlaskServer/app.py 9002 &
102+
python3 src/Servers/FlaskServer/app.py 9002 &
103103
echo $! > flask.pid
104104
105105
- name: Start Express
106106
run: |
107-
node Glyph11/src/Servers/ExpressServer/server.js 9003 &
107+
node src/Servers/ExpressServer/server.js 9003 &
108108
echo $! > express.pid
109109
110110
- name: Start Spring Boot
111111
run: |
112-
java -jar Glyph11/src/Servers/SpringBootServer/target/*.jar --server.port=9004 --server.address=127.0.0.1 &
112+
java -jar src/Servers/SpringBootServer/target/*.jar --server.port=9004 --server.address=127.0.0.1 &
113113
echo $! > spring.pid
114114
115115
- name: Start Quarkus
116116
run: |
117-
java -Dquarkus.http.port=9005 -jar Glyph11/src/Servers/QuarkusServer/target/quarkus-app/quarkus-run.jar &
117+
java -Dquarkus.http.port=9005 -jar src/Servers/QuarkusServer/target/quarkus-app/quarkus-run.jar &
118118
echo $! > quarkus.pid
119119
120120
- name: Start Nancy
121121
run: |
122-
dotnet run --no-build -c Release --project Glyph11/src/Servers/NancyServer -- 9006 &
122+
dotnet run --no-build -c Release --project src/Servers/NancyServer -- 9006 &
123123
echo $! > nancy.pid
124124
125125
- name: Start Jetty
126126
run: |
127-
java -jar Glyph11/src/Servers/JettyServer/target/jetty-server-1.0.0.jar 9007 &
127+
java -jar src/Servers/JettyServer/target/jetty-server-1.0.0.jar 9007 &
128128
echo $! > jetty.pid
129129
130130
- name: Start Nginx
131131
run: |
132-
nginx -c $GITHUB_WORKSPACE/Glyph11/src/Servers/NginxServer/nginx.conf &
132+
nginx -c $GITHUB_WORKSPACE/src/Servers/NginxServer/nginx.conf &
133133
echo $! > nginx.pid
134134
135135
- name: Start Apache
@@ -141,12 +141,12 @@ jobs:
141141
142142
- name: Start Caddy
143143
run: |
144-
./caddy run --config Glyph11/src/Servers/CaddyServer/Caddyfile --adapter caddyfile &
144+
./caddy run --config src/Servers/CaddyServer/Caddyfile --adapter caddyfile &
145145
echo $! > caddy.pid
146146
147147
- name: Start Pingora
148148
run: |
149-
Glyph11/src/Servers/PingoraServer/target/release/pingora-server 9011 &
149+
src/Servers/PingoraServer/target/release/pingora-server 9011 &
150150
echo $! > pingora.pid
151151
152152
- name: Wait for servers

Http11Probe.slnx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,8 @@
33
<Project Path="src/Http11Probe.Cli/Http11Probe.Cli.csproj" />
44
<Project Path="src/Http11Probe/Http11Probe.csproj" />
55
</Folder>
6+
<Folder Name="/src/Servers/">
7+
<Project Path="src/Servers/AspNetMinimal/AspNetMinimal.csproj" />
8+
<Project Path="src/Servers/NancyServer/NancyServer.csproj" />
9+
</Folder>
610
</Solution>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<Project Sdk="Microsoft.NET.Sdk.Web">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net10.0</TargetFramework>
5+
<Nullable>enable</Nullable>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<IsPackable>false</IsPackable>
8+
</PropertyGroup>
9+
10+
</Project>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
var builder = WebApplication.CreateBuilder(args);
2+
3+
builder.WebHost.UseUrls("http://localhost:5099");
4+
5+
var app = builder.Build();
6+
7+
app.MapGet("/", () => "Hello from ASP.NET Minimal API");
8+
9+
app.Run();

src/Servers/CaddyServer/Caddyfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
:9010 {
2+
respond "OK" 200
3+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"name": "express-server",
3+
"private": true,
4+
"dependencies": {
5+
"express": "^4.21.0"
6+
}
7+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const express = require("express");
2+
3+
const app = express();
4+
const port = parseInt(process.argv[2] || "9003", 10);
5+
6+
app.get("*", (_req, res) => {
7+
res.send("OK");
8+
});
9+
10+
app.listen(port, "127.0.0.1", () => {
11+
console.log(`Express listening on 127.0.0.1:${port}`);
12+
});

src/Servers/FlaskServer/app.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import sys
2+
from flask import Flask
3+
4+
app = Flask(__name__)
5+
6+
@app.route("/", defaults={"path": ""})
7+
@app.route("/<path:path>")
8+
def catch_all(path):
9+
return "OK"
10+
11+
if __name__ == "__main__":
12+
port = int(sys.argv[1]) if len(sys.argv) > 1 else 9002
13+
app.run(host="127.0.0.1", port=port)

src/Servers/JettyServer/pom.xml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.glyph11</groupId>
8+
<artifactId>jetty-server</artifactId>
9+
<version>1.0.0</version>
10+
<packaging>jar</packaging>
11+
12+
<properties>
13+
<maven.compiler.release>21</maven.compiler.release>
14+
<jetty.version>12.0.16</jetty.version>
15+
</properties>
16+
17+
<dependencies>
18+
<dependency>
19+
<groupId>org.eclipse.jetty</groupId>
20+
<artifactId>jetty-server</artifactId>
21+
<version>${jetty.version}</version>
22+
</dependency>
23+
</dependencies>
24+
25+
<build>
26+
<plugins>
27+
<plugin>
28+
<groupId>org.apache.maven.plugins</groupId>
29+
<artifactId>maven-shade-plugin</artifactId>
30+
<version>3.6.0</version>
31+
<executions>
32+
<execution>
33+
<phase>package</phase>
34+
<goals>
35+
<goal>shade</goal>
36+
</goals>
37+
<configuration>
38+
<transformers>
39+
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
40+
<mainClass>server.Application</mainClass>
41+
</transformer>
42+
</transformers>
43+
</configuration>
44+
</execution>
45+
</executions>
46+
</plugin>
47+
</plugins>
48+
</build>
49+
</project>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package server;
2+
3+
import java.nio.ByteBuffer;
4+
import java.nio.charset.StandardCharsets;
5+
6+
import org.eclipse.jetty.server.Server;
7+
import org.eclipse.jetty.server.ServerConnector;
8+
import org.eclipse.jetty.server.Request;
9+
import org.eclipse.jetty.server.Response;
10+
import org.eclipse.jetty.server.Handler;
11+
import org.eclipse.jetty.util.Callback;
12+
13+
public class Application extends Handler.Abstract {
14+
15+
private static final ByteBuffer OK_BODY =
16+
ByteBuffer.wrap("OK".getBytes(StandardCharsets.UTF_8)).asReadOnlyBuffer();
17+
18+
@Override
19+
public boolean handle(Request request, Response response, Callback callback) {
20+
response.setStatus(200);
21+
response.getHeaders().put("Content-Type", "text/plain");
22+
response.write(true, OK_BODY.slice(), callback);
23+
return true;
24+
}
25+
26+
public static void main(String[] args) throws Exception {
27+
int port = args.length > 0 ? Integer.parseInt(args[0]) : 9007;
28+
29+
Server server = new Server();
30+
ServerConnector connector = new ServerConnector(server);
31+
connector.setHost("127.0.0.1");
32+
connector.setPort(port);
33+
server.addConnector(connector);
34+
server.setHandler(new Application());
35+
server.start();
36+
server.join();
37+
}
38+
}

0 commit comments

Comments
 (0)