feat: 完善多模型配置与运行切换
将模型连接统一持久化管理,并支持 Agent 运行中切换模型以及中断后选择模型继续。补充配置校验、事务与前后端交互测试。
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
package tech.easyflow.manuagent.config;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.env.YamlPropertySourceLoader;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.core.env.PropertySource;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* 验证应用主密钥沿用本地配置文件的读取方式。
|
||||
*/
|
||||
class AppPropertiesValidationTest {
|
||||
|
||||
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||
.withUserConfiguration(PropertiesConfiguration.class)
|
||||
.withPropertyValues(
|
||||
"app.data-root=file:../data",
|
||||
"app.dashscope-key-file=./dashscope_key.txt",
|
||||
"app.master-key=unit-test-master-key",
|
||||
"app.admin-username=admin",
|
||||
"app.admin-password=admin123",
|
||||
"app.sandbox-image=runtime:test",
|
||||
"app.sandbox-network=bridge",
|
||||
"app.run-timeout=1m");
|
||||
|
||||
/**
|
||||
* 默认应用配置必须直接提供主密钥,使本地启动不依赖额外环境变量。
|
||||
*
|
||||
* @throws IOException application.yml 无法读取时抛出
|
||||
*/
|
||||
@Test
|
||||
void shouldProvideMasterKeyInApplicationConfiguration() throws IOException {
|
||||
YamlPropertySourceLoader loader = new YamlPropertySourceLoader();
|
||||
List<PropertySource<?>> sources = loader.load(
|
||||
"application.yml",
|
||||
new ClassPathResource("application.yml"));
|
||||
|
||||
assertThat(sources)
|
||||
.extracting(source -> source.getProperty("app.master-key"))
|
||||
.singleElement()
|
||||
.isInstanceOf(String.class)
|
||||
.asString()
|
||||
.isNotBlank()
|
||||
.doesNotContain("APP_MASTER_KEY");
|
||||
}
|
||||
|
||||
/**
|
||||
* 提供非空加密主密钥后,配置属性应可以正常绑定并供密钥组件使用。
|
||||
*/
|
||||
@Test
|
||||
void shouldBindConfiguredMasterKey() {
|
||||
contextRunner.run(context -> {
|
||||
assertThat(context).hasNotFailed();
|
||||
assertThat(context.getBean(AppProperties.class).masterKey())
|
||||
.isEqualTo("unit-test-master-key");
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册应用配置属性,复用生产环境的 Spring Boot 配置绑定流程。
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableConfigurationProperties(AppProperties.class)
|
||||
static class PropertiesConfiguration {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user