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.
194 lines
8.9 KiB
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云原生应用生命周期管理系统测试完成");
|
|
}
|
|
} |