public MaterialAgent createAgent(MaterialRevision revision) {
        Material material = revision.getMaterial();
        if (material instanceof DependencyMaterial) {
            return MaterialAgent.NO_OP;
        } else if (material instanceof PackageMaterial) {
            return MaterialAgent.NO_OP;
        } else if (material instanceof PluggableSCMMaterial) {
            return new PluggableSCMMaterialAgent(scmExtension, revision, workingDirectory, consumer);
        } else if (material instanceof ScmMaterial) {
            String destFolderPath = ((ScmMaterial) material).workingdir(workingDirectory).getAbsolutePath();
            return new AbstractMaterialAgent(revision, consumer, workingDirectory, new AgentSubprocessExecutionContext(agentIdentifier, destFolderPath));
        }
        throw new RuntimeException("Could not find MaterialChecker for material = " + material);
    }
@Test
    public void shouldCreateMaterialAgent_withAgentsUuidAsSubprocessExecutionContextNamespace() throws IOException {
        String agentUuid = "uuid-01783738";
        MaterialAgentFactory factory = new MaterialAgentFactory(new InMemoryStreamConsumer(), tempWorkingDirectory,
                new AgentIdentifier("host", "1.1.1.1", agentUuid), scmExtension);
        GitMaterial gitMaterial = new GitMaterial("http://foo", "master", "dest_folder");

        MaterialAgent agent = factory.createAgent(new MaterialRevision(gitMaterial));

        assertThat(agent, is(instanceOf(AbstractMaterialAgent.class)));

        SubprocessExecutionContext execCtx = ReflectionUtil.getField(agent, "execCtx");
        assertThat(execCtx.getProcessNamespace("fingerprint"), is(CachedDigestUtils.sha256Hex(String.format("%s%s%s", "fingerprint", agentUuid, gitMaterial.workingdir(tempWorkingDirectory)))));
    }