fix(agentapi): update tests and scripts for module_dir_name → module_directory rename
- Replace all stale $module_path references in main.sh with
${MODULE_DIRECTORY}.
- Update main.test.ts: moduleDirName → moduleDirectory, pass
module_directory instead of module_dir_name, fix shutdown test
to use ARG_MODULE_DIRECTORY.
- Remove start_script from agentapi.tftest.hcl (deleted variable).
- Rename module_path → module_directory in testdata/agentapi-start.sh.
This commit is contained in:
parent
3d778472e7
commit
4517a0c4e0
@ -7,7 +7,6 @@ variables {
|
|||||||
web_app_slug = "test"
|
web_app_slug = "test"
|
||||||
cli_app_display_name = "Test CLI"
|
cli_app_display_name = "Test CLI"
|
||||||
cli_app_slug = "test-cli"
|
cli_app_slug = "test-cli"
|
||||||
start_script = "echo test"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
run "default_values" {
|
run "default_values" {
|
||||||
|
|||||||
@ -44,7 +44,7 @@ interface SetupProps {
|
|||||||
moduleVariables?: Record<string, string>;
|
moduleVariables?: Record<string, string>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleDirName = ".agentapi-module";
|
const moduleDirectory = "/home/coder/.agentapi-module";
|
||||||
|
|
||||||
const setup = async (props?: SetupProps): Promise<{ id: string }> => {
|
const setup = async (props?: SetupProps): Promise<{ id: string }> => {
|
||||||
const projectDir = "/home/coder/project";
|
const projectDir = "/home/coder/project";
|
||||||
@ -58,7 +58,7 @@ const setup = async (props?: SetupProps): Promise<{ id: string }> => {
|
|||||||
cli_app_display_name: "AgentAPI CLI",
|
cli_app_display_name: "AgentAPI CLI",
|
||||||
cli_app_slug: "agentapi-cli",
|
cli_app_slug: "agentapi-cli",
|
||||||
agentapi_version: "latest",
|
agentapi_version: "latest",
|
||||||
module_dir_name: moduleDirName,
|
module_directory: moduleDirectory,
|
||||||
folder: projectDir,
|
folder: projectDir,
|
||||||
...props?.moduleVariables,
|
...props?.moduleVariables,
|
||||||
},
|
},
|
||||||
@ -78,11 +78,11 @@ const setup = async (props?: SetupProps): Promise<{ id: string }> => {
|
|||||||
await execContainer(id, [
|
await execContainer(id, [
|
||||||
"bash",
|
"bash",
|
||||||
"-c",
|
"-c",
|
||||||
`mkdir -p /home/coder/${moduleDirName}/scripts`,
|
`mkdir -p ${moduleDirectory}/scripts`,
|
||||||
]);
|
]);
|
||||||
await writeExecutable({
|
await writeExecutable({
|
||||||
containerId: id,
|
containerId: id,
|
||||||
filePath: `/home/coder/${moduleDirName}/scripts/agentapi-start.sh`,
|
filePath: `${moduleDirectory}/scripts/agentapi-start.sh`,
|
||||||
content: startScript,
|
content: startScript,
|
||||||
});
|
});
|
||||||
return { id };
|
return { id };
|
||||||
@ -295,10 +295,10 @@ describe("agentapi", async () => {
|
|||||||
"/home/coder/agentapi-mock.log",
|
"/home/coder/agentapi-mock.log",
|
||||||
);
|
);
|
||||||
expect(mockLog).toContain(
|
expect(mockLog).toContain(
|
||||||
`AGENTAPI_STATE_FILE: /home/coder/${moduleDirName}/agentapi-state.json`,
|
`AGENTAPI_STATE_FILE: ${moduleDirectory}/agentapi-state.json`,
|
||||||
);
|
);
|
||||||
expect(mockLog).toContain(
|
expect(mockLog).toContain(
|
||||||
`AGENTAPI_PID_FILE: /home/coder/${moduleDirName}/agentapi.pid`,
|
`AGENTAPI_PID_FILE: ${moduleDirectory}/agentapi.pid`,
|
||||||
);
|
);
|
||||||
expect(mockLog).toContain("AGENTAPI_SAVE_STATE: true");
|
expect(mockLog).toContain("AGENTAPI_SAVE_STATE: true");
|
||||||
expect(mockLog).toContain("AGENTAPI_LOAD_STATE: true");
|
expect(mockLog).toContain("AGENTAPI_LOAD_STATE: true");
|
||||||
@ -524,15 +524,15 @@ describe("agentapi", async () => {
|
|||||||
expect(result.stdout).toContain("Sending SIGTERM to AgentAPI");
|
expect(result.stdout).toContain("Sending SIGTERM to AgentAPI");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("resolves default PID path from MODULE_DIR_NAME", async () => {
|
test("resolves default PID path from MODULE_DIRECTORY", async () => {
|
||||||
const { id } = await setup({
|
const { id } = await setup({
|
||||||
moduleVariables: {},
|
moduleVariables: {},
|
||||||
skipAgentAPIMock: true,
|
skipAgentAPIMock: true,
|
||||||
});
|
});
|
||||||
// Start mock with PID file at the module_dir_name default location.
|
// Start mock with PID file at the module_directory default location.
|
||||||
const defaultPidPath = `/home/coder/${moduleDirName}/agentapi.pid`;
|
const defaultPidPath = `${moduleDirectory}/agentapi.pid`;
|
||||||
await setupMocks(id, "normal", 204, defaultPidPath);
|
await setupMocks(id, "normal", 204, defaultPidPath);
|
||||||
// Don't pass pidFilePath - let shutdown script compute it from MODULE_DIR_NAME.
|
// Don't pass pidFilePath - let shutdown script compute it from MODULE_DIRECTORY.
|
||||||
const shutdownScript = await loadTestFile(
|
const shutdownScript = await loadTestFile(
|
||||||
import.meta.dir,
|
import.meta.dir,
|
||||||
"../scripts/agentapi-shutdown.sh",
|
"../scripts/agentapi-shutdown.sh",
|
||||||
@ -554,7 +554,7 @@ describe("agentapi", async () => {
|
|||||||
const result = await execContainer(id, [
|
const result = await execContainer(id, [
|
||||||
"bash",
|
"bash",
|
||||||
"-c",
|
"-c",
|
||||||
`ARG_TASK_ID=test-task ARG_AGENTAPI_PORT=3284 ARG_MODULE_DIR_NAME=${moduleDirName} ARG_ENABLE_STATE_PERSISTENCE=true ARG_LIB_SCRIPT_PATH=/tmp/agentapi-lib.sh CODER_AGENT_URL=http://localhost:18080 CODER_AGENT_TOKEN=test-token /tmp/shutdown.sh`,
|
`ARG_TASK_ID=test-task ARG_AGENTAPI_PORT=3284 ARG_MODULE_DIRECTORY=${moduleDirectory} ARG_ENABLE_STATE_PERSISTENCE=true ARG_LIB_SCRIPT_PATH=/tmp/agentapi-lib.sh CODER_AGENT_URL=http://localhost:18080 CODER_AGENT_TOKEN=test-token /tmp/shutdown.sh`,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
expect(result.exitCode).toBe(0);
|
expect(result.exitCode).toBe(0);
|
||||||
@ -568,7 +568,7 @@ describe("agentapi", async () => {
|
|||||||
skipAgentAPIMock: true,
|
skipAgentAPIMock: true,
|
||||||
});
|
});
|
||||||
await setupMocks(id, "normal", 204);
|
await setupMocks(id, "normal", 204);
|
||||||
// No pidFilePath and no MODULE_DIR_NAME, so no PID file can be resolved.
|
// No pidFilePath and no MODULE_DIRECTORY, so no PID file can be resolved.
|
||||||
const result = await runShutdownScript(id, "test-task", "", "false");
|
const result = await runShutdownScript(id, "test-task", "", "false");
|
||||||
|
|
||||||
expect(result.exitCode).toBe(0);
|
expect(result.exitCode).toBe(0);
|
||||||
|
|||||||
@ -76,8 +76,8 @@ if ! command_exists agentapi; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -n "${WAIT_FOR_START_SCRIPT}" > "$module_path/scripts/agentapi-wait-for-start.sh"
|
echo -n "${WAIT_FOR_START_SCRIPT}" > "${MODULE_DIRECTORY}/scripts/agentapi-wait-for-start.sh"
|
||||||
chmod +x "$module_path/scripts/agentapi-wait-for-start.sh"
|
chmod +x "${MODULE_DIRECTORY}/scripts/agentapi-wait-for-start.sh"
|
||||||
|
|
||||||
export LANG=en_US.UTF-8
|
export LANG=en_US.UTF-8
|
||||||
export LC_ALL=en_US.UTF-8
|
export LC_ALL=en_US.UTF-8
|
||||||
@ -88,18 +88,18 @@ export AGENTAPI_CHAT_BASE_PATH="${AGENTAPI_CHAT_BASE_PATH:-}"
|
|||||||
# Disable host header check since AgentAPI is proxied by Coder (which does its own validation)
|
# Disable host header check since AgentAPI is proxied by Coder (which does its own validation)
|
||||||
export AGENTAPI_ALLOWED_HOSTS="*"
|
export AGENTAPI_ALLOWED_HOSTS="*"
|
||||||
|
|
||||||
export AGENTAPI_PID_FILE="${PID_FILE_PATH:-$module_path/agentapi.pid}"
|
export AGENTAPI_PID_FILE="${PID_FILE_PATH:-${MODULE_DIRECTORY}/agentapi.pid}"
|
||||||
# Only set state env vars when persistence is enabled and the binary supports
|
# Only set state env vars when persistence is enabled and the binary supports
|
||||||
# it. State persistence requires agentapi >= v0.12.0.
|
# it. State persistence requires agentapi >= v0.12.0.
|
||||||
if [ "${ENABLE_STATE_PERSISTENCE}" = "true" ]; then
|
if [ "${ENABLE_STATE_PERSISTENCE}" = "true" ]; then
|
||||||
actual_version=$(agentapi_version)
|
actual_version=$(agentapi_version)
|
||||||
if version_at_least 0.12.0 "$actual_version"; then
|
if version_at_least 0.12.0 "$actual_version"; then
|
||||||
export AGENTAPI_STATE_FILE="${STATE_FILE_PATH:-$module_path/agentapi-state.json}"
|
export AGENTAPI_STATE_FILE="${STATE_FILE_PATH:-${MODULE_DIRECTORY}/agentapi-state.json}"
|
||||||
export AGENTAPI_SAVE_STATE="true"
|
export AGENTAPI_SAVE_STATE="true"
|
||||||
export AGENTAPI_LOAD_STATE="true"
|
export AGENTAPI_LOAD_STATE="true"
|
||||||
else
|
else
|
||||||
echo "Warning: State persistence requires agentapi >= v0.12.0 (current: ${actual_version:-unknown}), skipping."
|
echo "Warning: State persistence requires agentapi >= v0.12.0 (current: ${actual_version:-unknown}), skipping."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
nohup "$module_path/scripts/agentapi-start.sh" true "${AGENTAPI_PORT}" &> "$module_path/agentapi-start.log" &
|
nohup "${MODULE_DIRECTORY}/scripts/agentapi-start.sh" true "${AGENTAPI_PORT}" &> "${MODULE_DIRECTORY}/agentapi-start.log" &
|
||||||
"$module_path/scripts/agentapi-wait-for-start.sh" "${AGENTAPI_PORT}"
|
"${MODULE_DIRECTORY}/scripts/agentapi-wait-for-start.sh" "${AGENTAPI_PORT}"
|
||||||
|
|||||||
@ -5,8 +5,8 @@ set -o pipefail
|
|||||||
use_prompt=${1:-false}
|
use_prompt=${1:-false}
|
||||||
port=${2:-3284}
|
port=${2:-3284}
|
||||||
|
|
||||||
module_path="$HOME/.agentapi-module"
|
module_directory="$HOME/.agentapi-module"
|
||||||
log_file_path="$module_path/agentapi.log"
|
log_file_path="$module_directory/agentapi.log"
|
||||||
|
|
||||||
echo "using prompt: $use_prompt" >> /home/coder/test-agentapi-start.log
|
echo "using prompt: $use_prompt" >> /home/coder/test-agentapi-start.log
|
||||||
echo "using port: $port" >> /home/coder/test-agentapi-start.log
|
echo "using port: $port" >> /home/coder/test-agentapi-start.log
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user