use of io.dekorate.SessionWriter in project dekorate by dekorateio.
the class KubernetesConfigGeneratorTest method shouldGenerateKubernetesWithoutWritingToFileSystem.
@Test
public void shouldGenerateKubernetesWithoutWritingToFileSystem() throws IOException {
Path tempDir = Files.createTempDirectory("dekorate");
WithProject withProject = new WithProject() {
};
withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
SessionWriter writer = new SimpleFileWriter(withProject.getProject(), false);
Session session = Session.getSession();
session.setWriter(writer);
KubernetesConfigGenerator generator = new DefaultKubernetesConfigGenerator(session.getConfigurationRegistry());
Map<String, Object> map = new HashMap<String, Object>() {
{
put(KubernetesConfig.class.getName(), new HashMap<String, Object>() {
{
put("name", "generator-test");
put("partOf", "generator-test-group");
put("version", "latest");
put("replicas", 2);
put("ports", new Map[] { new HashMap<String, Object>() {
{
put("containerPort", 8080);
put("name", "HTTP");
}
} });
put("livenessProbe", new HashMap<String, Object>() {
{
put("httpActionPath", "/health");
}
});
}
});
}
};
generator.addPropertyConfiguration(map);
final Map<String, String> result = session.close();
KubernetesList list = session.getGeneratedResources().get("kubernetes");
assertThat(list).isNotNull();
assertThat(list.getItems()).filteredOn(i -> "Deployment".equals(i.getKind())).hasOnlyOneElementSatisfying(item -> {
assertThat(item).isInstanceOfSatisfying(Deployment.class, dep -> {
assertThat(dep.getSpec()).satisfies(spec -> {
assertThat(spec.getReplicas()).isEqualTo(2);
assertThat(spec.getTemplate().getSpec()).satisfies(podSpec -> {
assertThat(podSpec.getContainers()).hasOnlyOneElementSatisfying(container -> {
assertThat(container.getPorts()).hasOnlyOneElementSatisfying(port -> {
assertThat(port.getContainerPort()).isEqualTo(8080);
assertThat(port.getName()).isEqualTo("HTTP");
});
assertThat(container.getLivenessProbe().getHttpGet()).satisfies(httpGetAction -> {
assertThat(httpGetAction.getPath()).isEqualTo("/health");
assertThat(httpGetAction.getPort().getIntVal()).isEqualTo(8080);
});
});
});
});
});
});
assertThat(tempDir.resolve("kubernetes.json")).doesNotExist();
assertThat(tempDir.resolve("kubernetes.yml")).doesNotExist();
assertThat(result).hasSize(5);
}
use of io.dekorate.SessionWriter in project dekorate by dekorateio.
the class ServiceBindingConfigGeneratorTest method shouldGenerateServiceBindingWithoutWritingToFileSystem.
@Test
public void shouldGenerateServiceBindingWithoutWritingToFileSystem() throws IOException {
Path tempDir = Files.createTempDirectory("dekorate");
WithProject withProject = new WithProject() {
};
withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
SessionWriter writer = new SimpleFileWriter(withProject.getProject(), false);
Session session = Session.getSession();
session.setWriter(writer);
ServiceBindingConfigGenerator generator = new DefaultServiceBindingConfigGenerator(session.getConfigurationRegistry());
final HashMap<String, Object>[] services = new HashMap[1];
services[0] = new HashMap<String, Object>() {
{
put("group", "postgresql.dev");
put("kind", "Database");
put("name", "demo-database");
put("id", "postgresDB");
}
};
final HashMap<String, Object>[] customEnvVar = new HashMap[1];
customEnvVar[0] = new HashMap<String, Object>() {
{
put("name", "foo");
put("value", "bar");
put("configmap", "baz");
}
};
final HashMap<String, Object> bindingPath = new HashMap<String, Object>();
bindingPath.put("secretPath", "/var");
bindingPath.put("containerPath", ".spec");
final HashMap<String, Object> application = new HashMap<String, Object>();
application.put("group", "apps");
application.put("kind", "Deployment");
application.put("version", "v1");
application.put("name", "servicebinding-test");
Map<String, Object> map = new HashMap<String, Object>() {
{
put(ServiceBindingConfig.class.getName(), new HashMap<String, Object>() {
{
put("name", "servicebinding-test-binding");
put("application", application);
put("services", services);
put("envVarPrefix", "postgres");
put("bindingPath", bindingPath);
put("customEnvVar", customEnvVar);
}
});
}
};
generator.addPropertyConfiguration(map);
final Map<String, String> result = session.close();
KubernetesList list = session.getGeneratedResources().get("kubernetes");
assertThat(list).isNotNull();
assertThat(list.getItems()).filteredOn(i -> "ServiceBinding".equals(i.getKind())).hasOnlyOneElementSatisfying(item -> {
assertThat(item).isInstanceOfSatisfying(ServiceBinding.class, s -> {
assertThat(s.getSpec()).satisfies(spec -> {
assertThat(spec.getEnvVarPrefix()).isEqualTo("postgres");
assertThat(spec.getApplication().getKind()).isEqualTo("Deployment");
assertThat(spec.getApplication().getResource()).isEqualTo("deployments");
assertThat(spec.getApplication().getVersion()).isEqualTo("v1");
assertThat(spec.getApplication().getName()).isEqualTo("servicebinding-test");
assertThat(spec.getApplication().getGroup()).isEqualTo("apps");
assertThat(spec.getApplication().getBindingPath().getContainerPath()).isEqualTo(".spec");
assertThat(spec.getApplication().getBindingPath().getSecretPath()).isEqualTo("/var");
assertThat(spec.getServices()[0].getGroup()).isEqualTo("postgresql.dev");
assertThat(spec.getServices()[0].getName()).isEqualTo("demo-database");
assertThat(spec.getServices()[0].getId()).isEqualTo("postgresDB");
assertThat(spec.getServices()[0].getKind()).isEqualTo("Database");
assertThat(spec.getCustomEnvVar()[0].getName()).isEqualTo("foo");
assertThat(spec.getCustomEnvVar()[0].getValueFrom().getConfigMapKeyRef().getKey()).isEqualTo("bar");
assertThat(spec.getCustomEnvVar()[0].getValueFrom().getConfigMapKeyRef().getName()).isEqualTo("baz");
});
});
});
assertThat(tempDir.resolve("kubernetes.json")).doesNotExist();
assertThat(tempDir.resolve("kubernetes.yml")).doesNotExist();
assertThat(result).hasSize(6);
}
use of io.dekorate.SessionWriter in project dekorate by dekorateio.
the class KnativeConfigGeneratorTest method shouldGenerateKnativeAndWriteToTheFilesystem.
@Test
public void shouldGenerateKnativeAndWriteToTheFilesystem() {
WithProject withProject = new WithProject() {
};
withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
SessionWriter writer = new SimpleFileWriter(withProject.getProject());
Session session = Session.getSession();
session.setWriter(writer);
DefaultKnativeConfigGenerator generator = new DefaultKnativeConfigGenerator(session.getConfigurationRegistry());
generator.setProject(FileProjectFactory.create(new File(".")));
Map<String, Object> map = new HashMap<String, Object>() {
{
put(KnativeConfig.class.getName(), new HashMap<String, Object>() {
{
put("name", "generator-test");
put("version", "latest");
}
});
}
};
generator.addPropertyConfiguration(map);
final Map<String, String> result = session.close();
KubernetesList list = session.getGeneratedResources().get("knative");
assertThat(list).isNotNull();
assertThat(list.getItems()).filteredOn(i -> "Service".equals(i.getKind())).isNotEmpty();
assertThat(tempDir.resolve("knative.json")).exists();
assertThat(tempDir.resolve("knative.yml")).exists();
assertThat(result).hasSize(4);
}
use of io.dekorate.SessionWriter in project dekorate by dekorateio.
the class OpenshiftConfigGeneratorTest method shouldGenerateOpenshiftAndWriteToTheFilesystem.
@Test
public void shouldGenerateOpenshiftAndWriteToTheFilesystem() {
WithProject withProject = new WithProject() {
};
withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
SessionWriter writer = new SimpleFileWriter(withProject.getProject());
Session session = Session.getSession();
session.setWriter(writer);
OpenshiftConfigGenerator generator = new DefaultOpenshiftConfigGenerator(session.getConfigurationRegistry());
Map<String, Object> openshiftConfig = new HashMap<String, Object>() {
{
put(OpenshiftConfig.class.getName(), new HashMap<String, Object>() {
{
put("name", "generator-test");
put("version", "latest");
put("replicas", 2);
}
});
}
};
generator.addPropertyConfiguration(openshiftConfig);
final Map<String, String> result = session.close();
KubernetesList list = session.getGeneratedResources().get("openshift");
assertThat(list).isNotNull();
assertThat(list.getItems()).filteredOn(i -> "DeploymentConfig".equals(i.getKind())).filteredOn(i -> ((DeploymentConfig) i).getSpec().getReplicas() == 2).isNotEmpty();
assertThat(tempDir.resolve("openshift.json")).exists();
assertThat(tempDir.resolve("openshift.yml")).exists();
assertThat(result).hasSize(5);
}
use of io.dekorate.SessionWriter in project dekorate by dekorateio.
the class TektonConfigGeneratorTest method shouldGenerateTektonAndWriteToTheFilesystem.
@Test
public void shouldGenerateTektonAndWriteToTheFilesystem() {
WithProject withProject = new WithProject() {
};
withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
SessionWriter writer = new SimpleFileWriter(withProject.getProject(), false);
Session session = Session.getSession();
session.setWriter(writer);
DefaultTektonConfigGenerator generator = new DefaultTektonConfigGenerator(session.getConfigurationRegistry());
generator.setProject(FileProjectFactory.create(new File(".")));
System.out.println("Project root:" + generator.getProject());
Map<String, Object> map = new HashMap<String, Object>() {
{
put(TektonConfig.class.getName(), new HashMap<String, Object>() {
{
put("name", "generator-test");
put("version", "latest");
put("externalGitPipelineResource", "yagpr");
}
});
}
};
generator.addPropertyConfiguration(map);
final Map<String, String> result = session.close();
}
Aggregations