package org.cloudfoundry.runtime.service;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import org.springframework.util.FileCopyUtils;
public class CloudEnvironmentTestHelper {
public static String getRedisServicePayload(String serviceName,
String hostname, int port,
String password, String name) {
String payload = readTestDataFile("test-redis-info.json");
payload = payload.replace("$serviceName", serviceName);
payload = payload.replace("$hostname", hostname);
payload = payload.replace("$port", Integer.toString(port));
payload = payload.replace("$password", password);
payload = payload.replace("$name", name);
return payload;
}
public static String getMongoServicePayload(String serviceName,
String hostname,
int port, String password, String name) {
String payload = readTestDataFile("test-mongodb-info.json");
payload = payload.replace("$serviceName", serviceName);
payload = payload.replace("$hostname", hostname);
payload = payload.replace("$port", Integer.toString(port));
payload = payload.replace("$password", password);
payload = payload.replace("$name", name);
return payload;
}
public static String getMysqlServicePayload(String serviceName,
String hostname, int port,
String user, String password, String name) {
String payload = readTestDataFile("test-mysql-info.json");
payload = payload.replace("$serviceName", serviceName);
payload = payload.replace("$hostname", hostname);
payload = payload.replace("$port", Integer.toString(port));
payload = payload.replace("$user", user);
payload = payload.replace("$password", password);
payload = payload.replace("$name", name);
return payload;
}
public static String getRabbitServicePayload(String serviceName,
String hostname, int port,
String user, String password, String name,
String vHost) {
String payload = readTestDataFile("test-rabbit-info.json");
payload = payload.replace("$serviceName", serviceName);
payload = payload.replace("$hostname", hostname);
payload = payload.replace("$port", Integer.toString(port));
payload = payload.replace("$user", user);
payload = payload.replace("$pass", password);
payload = payload.replace("$name", name);
payload = payload.replace("$vhost", vHost);
return payload;
}
public static String getServicesPayload(String[] mysqlServicePayloads,
String[] redisServicePayloads,
String[] mongodbServicePayloads,
String[] rabbitServicePayloads) {
StringBuilder payload = new StringBuilder("{");
if (mysqlServicePayloads != null) {
payload.append("\"mysql-5.1\":");
payload.append(getServicePayload(mysqlServicePayloads));
}
if (redisServicePayloads != null) {
payload.append("\"redis-2.2\":");
payload.append(getServicePayload(redisServicePayloads));
}
if (mongodbServicePayloads != null) {
payload.append("\"mongodb-1.8\":");
payload.append(getServicePayload(mongodbServicePayloads));
}
if (rabbitServicePayloads != null) {
payload.append("\"rabbitmq-2.4\":");
payload.append(getServicePayload(rabbitServicePayloads));
}
payload.append("}");
return payload.toString();
}
public static String getApplicationInstanceInfo(String uris) {
String payload = readTestDataFile("test-application-info.json");
payload = payload.replace("$uris", uris);
return payload;
}
private static String getServicePayload(String[] servicePayloads) {
StringBuilder payload = new StringBuilder("[");
// In Scala, this would have been servicePayloads mkString "," :-)
for (int i = 0; i < servicePayloads.length; i++) {
payload.append(servicePayloads[i]);
if (i != servicePayloads.length - 1) {
payload.append(",");
}
}
payload.append("]");
return payload.toString();
}
private static String readTestDataFile(String fileName) {
try {
Reader fileReader = new InputStreamReader(CloudEnvironmentTestHelper.class.getResourceAsStream(fileName));
StringWriter writer = new StringWriter();
FileCopyUtils.copy(fileReader, writer);
return writer.toString();
} catch (IOException e) {
throw new IllegalArgumentException("Could read " + fileName);
}
}
}