{"record":{"id":"02b8188ed313740e","repo":"vectordotdev/vector","slug":"unknown-integration-integration","errorCode":null,"errorMessage":"unknown integration: {integration}","messagePattern":"unknown integration: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"vdev/src/testing/config.rs","lineNumber":225,"sourceCode":"                    .matrix\n                    .keys()\n                    .zip(product)\n                    .map(|(variable, value)| (variable.clone(), Some(value.clone())))\n                    .collect();\n                (key, config)\n            })\n            .collect()\n    }\n\n    pub fn load(root_dir: &str, integration: &str) -> Result<(PathBuf, Self)> {\n        let (base_dir, use_config_subdir) = test_dir_config(root_dir);\n\n        let test_dir: PathBuf = [app::path(), base_dir, root_dir, integration]\n            .iter()\n            .collect();\n\n        if !test_dir.is_dir() {\n            bail!(\"unknown integration: {integration}\");\n        }\n\n        let config_dir = if use_config_subdir {\n            test_dir.join(CONFIG_SUBDIR)\n        } else {\n            test_dir\n        };\n        let config = Self::parse_file(&config_dir.join(FILE_NAME))?;\n        Ok((config_dir, config))\n    }\n\n    fn collect_all_dir(\n        tests_dir: &Path,\n        configs: &mut BTreeMap<String, Self>,\n        use_config_subdir: bool,\n    ) -> Result<()> {\n        for entry in tests_dir.read_dir()? {\n            let entry = entry?;","sourceCodeStart":207,"sourceCodeEnd":243,"githubUrl":"https://github.com/vectordotdev/vector/blob/bdb87aeaa4c4ff27c0ba643c1c77b21bf2ef4013/vdev/src/testing/config.rs#L207-L243","documentation":"Composing an integration test directory path fails because the named integration directory does not exist under the base test directory. `ComposeTestConfig::load` requires that each integration (e.g. \"aws\") correspond to a real directory before it will build a config. This guards against typos and stale integration names passed on the CLI.","triggerScenarios":"Calling `cargo vdev int run/show/test <name>` (which routes into `ComposeTestConfig::load`) with an integration name whose directory `[app::path()]/<base_dir>/<root_dir>/<integration>` is not a directory.","commonSituations":"Typo in the integration name on the command line; renaming or deleting an integration directory (tests/integration/...) without updating scripts or docs; running an integration test that was removed upstream.","solutions":["Run `cargo vdev int show` to list valid integrations and use the exact name","Check the directory exists under tests/integration (the base/root dir used by vdev)","If the integration was renamed, update the name in your script/CI config","Create the missing directory if you intended to add a new integration"],"exampleFix":"// before\ncargo vdev int run aws_cloudwatch  # no such directory\n// after\ncargo vdev int run aws             # matches tests/integration/aws/","handlingStrategy":"validation","validationCode":"use std::path::PathBuf;\nfn integration_exists(name: &str) -> bool {\n    let dir: PathBuf = [\"tests\", \"integration\", name].iter().collect();\n    dir.is_dir()\n}\nassert!(integration_exists(\"aws\"), \"unknown integration: aws\");","typeGuard":"fn valid_integration(name: &str) -> Option<std::path::PathBuf> {\n    let dir: std::path::PathBuf = [\"tests\", \"integration\", name].iter().collect();\n    dir.is_dir().then_some(dir)\n}","tryCatchPattern":null,"preventionTips":["Always list integrations with `cargo vdev int show` instead of typing names from memory","Keep integration names in CI config in sync with tests/integration directories","When renaming an integration directory, grep scripts and docs for the old name"],"tags":["rust","cli","integration-tests","path"],"backgroundTag":"directory-not-found","analyzedSha":"bdb87aeaa4c4ff27c0ba643c1c77b21bf2ef4013","analyzedAt":"2026-09-16T02:53:35.741Z","contentChangedAt":"2026-09-16T02:53:35.741Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}