vectordotdev/vector · error
unknown integration
Error message
unknown integration: {integration} What it means
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.
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
Example fix
// before cargo vdev int run aws_cloudwatch # no such directory // after cargo vdev int run aws # matches tests/integration/aws/
Defensive patterns
Strategy: validation
Validate before calling
use std::path::PathBuf;
fn integration_exists(name: &str) -> bool {
let dir: PathBuf = ["tests", "integration", name].iter().collect();
dir.is_dir()
}
assert!(integration_exists("aws"), "unknown integration: aws"); Type guard
fn valid_integration(name: &str) -> Option<std::path::PathBuf> {
let dir: std::path::PathBuf = ["tests", "integration", name].iter().collect();
dir.is_dir().then_some(dir)
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- Failed to find validation configuration from given test…
- test name is required
- Bad fragment filename
- Could not find environment named
- environment is already up
AI-assisted analysis of vectordotdev/vector@bdb87aeaa4 (2026-09-16).
Data as JSON: /api/errors/02b8188ed313740e.
Report an issue: GitHub.
Appendix: source
Thrown at vdev/src/testing/config.rs:225
.matrix
.keys()
.zip(product)
.map(|(variable, value)| (variable.clone(), Some(value.clone())))
.collect();
(key, config)
})
.collect()
}
pub fn load(root_dir: &str, integration: &str) -> Result<(PathBuf, Self)> {
let (base_dir, use_config_subdir) = test_dir_config(root_dir);
let test_dir: PathBuf = [app::path(), base_dir, root_dir, integration]
.iter()
.collect();
if !test_dir.is_dir() {
bail!("unknown integration: {integration}");
}
let config_dir = if use_config_subdir {
test_dir.join(CONFIG_SUBDIR)
} else {
test_dir
};
let config = Self::parse_file(&config_dir.join(FILE_NAME))?;
Ok((config_dir, config))
}
fn collect_all_dir(
tests_dir: &Path,
configs: &mut BTreeMap<String, Self>,
use_config_subdir: bool,
) -> Result<()> {
for entry in tests_dir.read_dir()? {
let entry = entry?;View on GitHub (pinned to bdb87aeaa4)