测试验收:补充一期后端业务场景测试
This commit is contained in:
1 parent
4d9601a4f1
commit
126dddfa7b
24 files changed
+2313
No files matched your search
@@ -0,0 +1,94 @@
|
||||
package scripts.qa;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.ruoyi.train.integration.dms.mock.MockDmsServer;
|
||||
import com.sun.net.httpserver.HttpExchange;
|
||||
import com.sun.net.httpserver.HttpServer;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
public class MockDmsRunner {
|
||||
private static MockDmsServer mockDmsServer;
|
||||
private static HttpServer controlServer;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
int dmsPort = 18099;
|
||||
int controlPort = 18098;
|
||||
|
||||
mockDmsServer = new MockDmsServer();
|
||||
// Use reflection or custom wrapper to bind exact port
|
||||
java.lang.reflect.Field serverField = MockDmsServer.class.getDeclaredField("server");
|
||||
serverField.setAccessible(true);
|
||||
HttpServer s = HttpServer.create(new InetSocketAddress("127.0.0.1", dmsPort), 0);
|
||||
s.setExecutor(Executors.newCachedThreadPool());
|
||||
serverField.set(mockDmsServer, s);
|
||||
|
||||
java.lang.reflect.Field portField = MockDmsServer.class.getDeclaredField("port");
|
||||
portField.setAccessible(true);
|
||||
portField.setInt(mockDmsServer, dmsPort);
|
||||
|
||||
java.lang.reflect.Method regMethod = MockDmsServer.class.getDeclaredMethod("registerEndpoints");
|
||||
regMethod.setAccessible(true);
|
||||
regMethod.invoke(mockDmsServer);
|
||||
|
||||
s.start();
|
||||
System.out.println("MockDmsServer started on port: " + dmsPort);
|
||||
|
||||
// Control server on 18098 for test orchestration
|
||||
controlServer = HttpServer.create(new InetSocketAddress("127.0.0.1", controlPort), 0);
|
||||
controlServer.createContext("/mock/control/set-operation-status", exchange -> {
|
||||
String body = readBody(exchange);
|
||||
JSONObject req = JSON.parseObject(body);
|
||||
Long opId = req.getLong("operationId");
|
||||
String status = req.getString("status");
|
||||
String msg = req.getString("message");
|
||||
mockDmsServer.setOperationStatus(opId, status, msg);
|
||||
sendResponse(exchange, 200, "{\"success\":true}");
|
||||
});
|
||||
|
||||
controlServer.createContext("/mock/control/timeout", exchange -> {
|
||||
String body = readBody(exchange);
|
||||
JSONObject req = JSON.parseObject(body);
|
||||
boolean sim = req.getBooleanValue("simulate");
|
||||
mockDmsServer.setSimulateReadTimeout(sim);
|
||||
sendResponse(exchange, 200, "{\"success\":true}");
|
||||
});
|
||||
|
||||
controlServer.createContext("/mock/control/stats", exchange -> {
|
||||
JSONObject resp = new JSONObject();
|
||||
resp.put("loginCount", mockDmsServer.getLoginCounter());
|
||||
resp.put("createCount", mockDmsServer.getPasswordCreatePostCounter());
|
||||
resp.put("deleteCount", mockDmsServer.getPasswordDeletePostCounter());
|
||||
resp.put("activeToken", mockDmsServer.getActiveToken());
|
||||
sendResponse(exchange, 200, resp.toJSONString());
|
||||
});
|
||||
|
||||
controlServer.start();
|
||||
System.out.println("MockDms Control Server started on port: " + controlPort);
|
||||
|
||||
// Keep process alive
|
||||
Thread.currentThread().join();
|
||||
}
|
||||
|
||||
private static String readBody(HttpExchange exchange) throws IOException {
|
||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(exchange.getRequestBody(), StandardCharsets.UTF_8))) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) sb.append(line);
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
||||
private static void sendResponse(HttpExchange exchange, int code, String body) throws IOException {
|
||||
byte[] bytes = body.getBytes(StandardCharsets.UTF_8);
|
||||
exchange.getResponseHeaders().set("Content-Type", "application/json");
|
||||
exchange.sendResponseHeaders(code, bytes.length);
|
||||
try (OutputStream os = exchange.getResponseBody()) {
|
||||
os.write(bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user