You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
789/ChallengeExample/ChallengeExampleTest.java

194 lines
8.9 KiB

/**
* 挑战题测试类
* 测试微服务治理框架和云原生应用生命周期管理系统
*/
public class ChallengeExampleTest {
public static void main(String[] args) {
System.out.println("========== 开始测试挑战题 ==========");
// 测试微服务治理框架
testMicroServiceGovernance();
// 测试云原生应用生命周期管理系统
testCloudNativeLifecycleManager();
System.out.println("========== 挑战题测试完成 ==========");
}
/**
* 测试微服务治理框架
*/
private static void testMicroServiceGovernance() {
System.out.println("\n1. 测试微服务治理框架:");
// 获取治理框架实例
MicroServiceGovernance governance = MicroServiceGovernance.getInstance();
// 注册服务
System.out.println("\n1.1 注册服务:");
governance.registerService("user-service", "192.168.1.101", 8080);
governance.registerService("user-service", "192.168.1.102", 8080);
governance.registerService("order-service", "192.168.1.201", 8081);
governance.registerService("payment-service", "192.168.1.301", 8082);
// 列出已注册的服务
System.out.println("\n1.2 已注册的服务:");
governance.listServices().forEach(service -> {
System.out.println(service);
});
// 测试服务调用(正常情况)
System.out.println("\n1.3 测试服务调用(正常情况):");
for (int i = 0; i < 5; i++) {
String result = governance.callService("user-service", "GET", "/api/users" + i);
System.out.println("调用结果:" + result);
}
// 模拟服务故障
System.out.println("\n1.4 模拟服务故障:");
governance.simulateServiceFailure("user-service", "192.168.1.101", 8080, true);
// 测试断路器功能
System.out.println("\n1.5 测试断路器功能:");
for (int i = 0; i < 10; i++) {
try {
String result = governance.callService("user-service", "GET", "/api/users/faulty" + i);
System.out.println("调用结果:" + result);
} catch (Exception e) {
System.out.println("调用异常:" + e.getMessage());
}
}
// 注销服务
System.out.println("\n1.6 注销服务:");
governance.deregisterService("order-service", "192.168.1.201", 8081);
System.out.println("注销后服务列表:");
governance.listServices().forEach(service -> {
System.out.println(service);
});
// 显示治理统计信息
System.out.println("\n1.7 治理统计信息:");
governance.printGovernanceStats();
System.out.println("\n微服务治理框架测试完成");
}
/**
* 测试云原生应用生命周期管理系统
*/
private static void testCloudNativeLifecycleManager() {
System.out.println("\n2. 测试云原生应用生命周期管理系统:");
// 获取生命周期管理器实例
CloudNativeLifecycleManager lifecycleManager = CloudNativeLifecycleManager.getInstance();
// 添加事件监听器
lifecycleManager.addEventListener(new CloudNativeLifecycleManager.LifecycleEventListener() {
@Override
public void onApplicationCreated(CloudNativeLifecycleManager.Application app) {
System.out.println("事件:应用已创建 - ID: " + app.getId() + ", 名称: " + app.getConfig().getName());
}
@Override
public void onApplicationDeployed(CloudNativeLifecycleManager.Application app) {
System.out.println("事件:应用已部署 - ID: " + app.getId() + ", 状态: " + app.getStatus());
}
@Override
public void onApplicationScaled(CloudNativeLifecycleManager.Application app, int oldReplicas, int newReplicas) {
System.out.println("事件:应用已扩展 - ID: " + app.getId() + ", 从 " + oldReplicas + " 到 " + newReplicas + " 副本");
}
@Override
public void onApplicationUpdated(CloudNativeLifecycleManager.Application app, CloudNativeLifecycleManager.ApplicationConfig oldConfig) {
System.out.println("事件:应用已更新 - ID: " + app.getId());
}
@Override
public void onApplicationDestroyed(String appId) {
System.out.println("事件:应用已销毁 - ID: " + appId);
}
});
// 显示初始资源状态
System.out.println("\n2.1 初始资源状态:");
lifecycleManager.getResourceStatus().forEach((resource, amount) -> {
System.out.println(resource + ": " + amount);
});
// 创建应用配置
System.out.println("\n2.2 创建应用:");
CloudNativeLifecycleManager.ApplicationConfig config1 = new CloudNativeLifecycleManager.ApplicationConfig("nginx-app", "nginx:latest");
config1.setReplicas(2);
config1.getEnvVars().put("ENV", "production");
config1.getResources().put("cpu", 1);
config1.getResources().put("memory", 1024);
config1.getPorts().add(new CloudNativeLifecycleManager.PortMapping(80, 8080, "TCP"));
CloudNativeLifecycleManager.Application app1 = lifecycleManager.createApplication(config1);
CloudNativeLifecycleManager.ApplicationConfig config2 = new CloudNativeLifecycleManager.ApplicationConfig("redis-app", "redis:latest");
config2.setReplicas(1);
config2.getResources().put("cpu", 1);
config2.getResources().put("memory", 2048);
config2.getPorts().add(new CloudNativeLifecycleManager.PortMapping(6379, 6379, "TCP"));
CloudNativeLifecycleManager.Application app2 = lifecycleManager.createApplication(config2);
// 部署应用
System.out.println("\n2.3 部署应用:");
lifecycleManager.deployApplication(app1.getId());
lifecycleManager.deployApplication(app2.getId());
// 显示应用列表
System.out.println("\n2.4 应用列表:");
for (CloudNativeLifecycleManager.Application app : lifecycleManager.getApplications()) {
System.out.println("ID: " + app.getId() + ", 名称: " + app.getConfig().getName() + ", 状态: " + app.getStatus() + ", 副本数: " + app.getPods().size());
}
// 扩展应用
System.out.println("\n2.5 扩展应用:");
lifecycleManager.scaleApplication(app1.getId(), 3);
// 更新应用配置
System.out.println("\n2.6 更新应用配置:");
CloudNativeLifecycleManager.ApplicationConfig updatedConfig = new CloudNativeLifecycleManager.ApplicationConfig("nginx-app-updated", "nginx:1.21");
updatedConfig.setReplicas(4);
updatedConfig.getEnvVars().put("ENV", "development");
updatedConfig.getResources().put("cpu", 1);
updatedConfig.getResources().put("memory", 1536);
updatedConfig.getPorts().add(new CloudNativeLifecycleManager.PortMapping(80, 8081, "TCP"));
lifecycleManager.updateApplication(app1.getId(), updatedConfig);
// 显示更新后的应用详情
System.out.println("\n2.7 更新后的应用详情:");
CloudNativeLifecycleManager.Application updatedApp = lifecycleManager.getApplication(app1.getId());
System.out.println("ID: " + updatedApp.getId());
System.out.println("名称: " + updatedApp.getConfig().getName());
System.out.println("镜像: " + updatedApp.getConfig().getImage());
System.out.println("副本数: " + updatedApp.getPods().size());
System.out.println("状态: " + updatedApp.getStatus());
System.out.println("环境变量: " + updatedApp.getConfig().getEnvVars());
System.out.println("端口: " + updatedApp.getConfig().getPorts());
// 销毁应用
System.out.println("\n2.8 销毁应用:");
lifecycleManager.destroyApplication(app1.getId());
// 显示最终应用列表和资源状态
System.out.println("\n2.9 最终应用列表:");
for (CloudNativeLifecycleManager.Application app : lifecycleManager.getApplications()) {
System.out.println("ID: " + app.getId() + ", 名称: " + app.getConfig().getName() + ", 状态: " + app.getStatus());
}
System.out.println("\n2.10 最终资源状态:");
lifecycleManager.getResourceStatus().forEach((resource, amount) -> {
System.out.println(resource + ": " + amount);
});
System.out.println("\n云原生应用生命周期管理系统测试完成");
}
}