use of org.apache.geode.internal.ClassBuilder in project geode by apache.
the class QueueCommandsDUnitTest method testCreateUpdatesSharedConfig.
/**
* Asserts that creating async event queues correctly updates the shared configuration.
*/
// GEODE-1976
@Category(FlakyTest.class)
@Test
public void testCreateUpdatesSharedConfig() throws IOException {
disconnectAllFromDS();
final int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(2);
jmxPort = ports[0];
httpPort = ports[1];
try {
jmxHost = InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException ignore) {
jmxHost = "localhost";
}
final String queueName = "testAsyncEventQueueQueue";
final String groupName = "testAsyncEventQueueSharedConfigGroup";
final Properties locatorProps = new Properties();
locatorProps.setProperty(NAME, "Locator");
locatorProps.setProperty(MCAST_PORT, "0");
locatorProps.setProperty(LOG_LEVEL, "fine");
locatorProps.setProperty(ENABLE_CLUSTER_CONFIGURATION, "true");
locatorProps.setProperty(JMX_MANAGER, "true");
locatorProps.setProperty(JMX_MANAGER_START, "true");
locatorProps.setProperty(JMX_MANAGER_BIND_ADDRESS, String.valueOf(jmxHost));
locatorProps.setProperty(JMX_MANAGER_PORT, String.valueOf(jmxPort));
locatorProps.setProperty(HTTP_SERVICE_PORT, String.valueOf(httpPort));
// Start the Locator and wait for shared configuration to be available
final int locatorPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
Host.getHost(0).getVM(0).invoke(new SerializableRunnable() {
@Override
public void run() {
final File locatorLogFile = new File("locator-" + locatorPort + ".log");
try {
final InternalLocator locator = (InternalLocator) Locator.startLocatorAndDS(locatorPort, locatorLogFile, null, locatorProps);
WaitCriterion wc = new WaitCriterion() {
@Override
public boolean done() {
return locator.isSharedConfigurationRunning();
}
@Override
public String description() {
return "Waiting for shared configuration to be started";
}
};
waitForCriterion(wc, 5000, 500, true);
} catch (IOException ioex) {
fail("Unable to create a locator with a shared configuration");
}
}
});
connect(jmxHost, jmxPort, httpPort, getDefaultShell());
// Create a cache in VM 1
VM vm = Host.getHost(0).getVM(1);
vm.invoke(new SerializableRunnable() {
@Override
public void run() {
Properties localProps = new Properties();
localProps.setProperty(MCAST_PORT, "0");
localProps.setProperty(LOCATORS, "localhost[" + locatorPort + "]");
localProps.setProperty(GROUPS, groupName);
getSystem(localProps);
assertNotNull(getCache());
}
});
// Deploy a JAR file with an AsyncEventListener that can be instantiated on each server
final File jarFile = new File(new File(".").getAbsolutePath(), "QueueCommandsDUnit.jar");
QueueCommandsDUnitTest.this.filesToBeDeleted.add(jarFile.getAbsolutePath());
ClassBuilder classBuilder = new ClassBuilder();
byte[] jarBytes = classBuilder.createJarFromClassContent("com/qcdunit/QueueCommandsDUnitTestListener", "package com.qcdunit;" + "import java.util.List; import java.util.Properties;" + "import org.apache.geode.internal.cache.xmlcache.Declarable2; import org.apache.geode.cache.asyncqueue.AsyncEvent;" + "import org.apache.geode.cache.asyncqueue.AsyncEventListener;" + "public class QueueCommandsDUnitTestListener implements Declarable2, AsyncEventListener {" + "Properties props;" + "public boolean processEvents(List<AsyncEvent> events) { return true; }" + "public void close() {}" + "public void init(final Properties props) {this.props = props;}" + "public Properties getConfig() {return this.props;}}");
writeJarBytesToFile(jarFile, jarBytes);
CommandResult cmdResult = executeCommand("deploy --jar=QueueCommandsDUnit.jar");
assertEquals(Result.Status.OK, cmdResult.getStatus());
// Test creating the queue
CommandStringBuilder commandStringBuilder = new CommandStringBuilder(CliStrings.CREATE_ASYNC_EVENT_QUEUE);
commandStringBuilder.addOption(CliStrings.CREATE_ASYNC_EVENT_QUEUE__ID, queueName);
commandStringBuilder.addOption(CliStrings.CREATE_ASYNC_EVENT_QUEUE__GROUP, groupName);
commandStringBuilder.addOption(CliStrings.CREATE_ASYNC_EVENT_QUEUE__LISTENER, "com.qcdunit.QueueCommandsDUnitTestListener");
cmdResult = executeCommand(commandStringBuilder.toString());
assertEquals(Result.Status.OK, cmdResult.getStatus());
// Make sure the queue exists in the shared config
Host.getHost(0).getVM(0).invoke(new SerializableRunnable() {
@Override
public void run() {
ClusterConfigurationService sharedConfig = ((InternalLocator) Locator.getLocator()).getSharedConfiguration();
String xmlFromConfig;
try {
xmlFromConfig = sharedConfig.getConfiguration(groupName).getCacheXmlContent();
assertTrue(xmlFromConfig.contains(queueName));
} catch (Exception e) {
fail("Error occurred in cluster configuration service", e);
}
}
});
// Close cache in the vm1 and restart it to get the shared configuration
vm = Host.getHost(0).getVM(1);
vm.invoke(new SerializableRunnable() {
@Override
public void run() {
Cache cache = getCache();
assertNotNull(cache);
cache.close();
assertTrue(cache.isClosed());
Properties localProps = new Properties();
localProps.setProperty(MCAST_PORT, "0");
localProps.setProperty(LOCATORS, "localhost[" + locatorPort + "]");
localProps.setProperty(GROUPS, groupName);
localProps.setProperty(USE_CLUSTER_CONFIGURATION, "true");
getSystem(localProps);
cache = getCache();
assertNotNull(cache);
AsyncEventQueue aeq = cache.getAsyncEventQueue(queueName);
assertNotNull(aeq);
}
});
}
use of org.apache.geode.internal.ClassBuilder in project geode by apache.
the class DeployCommandsDUnitTest method setup.
@Before
public void setup() throws Exception {
getHost(0).getVM(1).bounce();
getHost(0).getVM(2).bounce();
ClassBuilder classBuilder = new ClassBuilder();
File jarsDir = lsRule.getTempFolder().newFolder();
jar1 = new File(jarsDir, jarName1);
jar2 = new File(jarsDir, jarName2);
subdirWithJars3and4 = new File(jarsDir, "subdir");
subdirWithJars3and4.mkdirs();
jar3 = new File(subdirWithJars3and4, jarName3);
jar4 = new File(subdirWithJars3and4, jarName4);
classBuilder.writeJarFromName(class1, jar1);
classBuilder.writeJarFromName(class2, jar2);
classBuilder.writeJarFromName(class3, jar3);
classBuilder.writeJarFromName(class4, jar4);
locator = lsRule.startLocatorVM(0);
Properties props = new Properties();
props.setProperty(GROUPS, GROUP1);
server1 = lsRule.startServerVM(1, props, locator.getPort());
props.setProperty(GROUPS, GROUP2);
server2 = lsRule.startServerVM(2, props, locator.getPort());
gfshConnector.connectAndVerify(locator);
}
use of org.apache.geode.internal.ClassBuilder in project geode by apache.
the class CreateAlterDestroyRegionCommandsDUnitTest method deployJarFilesForRegionAlter.
/**
* Deploys JAR files which contain classes to be instantiated by the "alter region" test.
*/
private void deployJarFilesForRegionAlter() throws IOException {
ClassBuilder classBuilder = new ClassBuilder();
final File jarFile1 = new File(new File(".").getAbsolutePath(), "testAlterRegion1.jar");
this.filesToBeDeleted.add(jarFile1.getAbsolutePath());
final File jarFile2 = new File(new File(".").getAbsolutePath(), "testAlterRegion2.jar");
this.filesToBeDeleted.add(jarFile2.getAbsolutePath());
final File jarFile3 = new File(new File(".").getAbsolutePath(), "testAlterRegion3.jar");
this.filesToBeDeleted.add(jarFile3.getAbsolutePath());
final File jarFile4 = new File(new File(".").getAbsolutePath(), "testAlterRegion4.jar");
this.filesToBeDeleted.add(jarFile4.getAbsolutePath());
final File jarFile5 = new File(new File(".").getAbsolutePath(), "testAlterRegion5.jar");
this.filesToBeDeleted.add(jarFile5.getAbsolutePath());
byte[] jarBytes = classBuilder.createJarFromClassContent("com/cadrdunit/RegionAlterCacheListenerA", "package com.cadrdunit;" + "import org.apache.geode.cache.util.CacheListenerAdapter;" + "public class RegionAlterCacheListenerA extends CacheListenerAdapter {}");
writeJarBytesToFile(jarFile1, jarBytes);
CommandResult cmdResult = executeCommand("deploy --jar=testAlterRegion1.jar");
assertEquals(Result.Status.OK, cmdResult.getStatus());
jarBytes = classBuilder.createJarFromClassContent("com/cadrdunit/RegionAlterCacheListenerB", "package com.cadrdunit;" + "import org.apache.geode.cache.util.CacheListenerAdapter;" + "public class RegionAlterCacheListenerB extends CacheListenerAdapter {}");
writeJarBytesToFile(jarFile2, jarBytes);
cmdResult = executeCommand("deploy --jar=testAlterRegion2.jar");
assertEquals(Result.Status.OK, cmdResult.getStatus());
jarBytes = classBuilder.createJarFromClassContent("com/cadrdunit/RegionAlterCacheListenerC", "package com.cadrdunit;" + "import org.apache.geode.cache.util.CacheListenerAdapter;" + "public class RegionAlterCacheListenerC extends CacheListenerAdapter {}");
writeJarBytesToFile(jarFile3, jarBytes);
cmdResult = executeCommand("deploy --jar=testAlterRegion3.jar");
assertEquals(Result.Status.OK, cmdResult.getStatus());
jarBytes = classBuilder.createJarFromClassContent("com/cadrdunit/RegionAlterCacheLoader", "package com.cadrdunit;" + "import org.apache.geode.cache.CacheLoader;" + "import org.apache.geode.cache.CacheLoaderException;" + "import org.apache.geode.cache.LoaderHelper;" + "public class RegionAlterCacheLoader implements CacheLoader {" + "public void close() {}" + "public Object load(LoaderHelper helper) throws CacheLoaderException {return null;}}");
writeJarBytesToFile(jarFile4, jarBytes);
cmdResult = executeCommand("deploy --jar=testAlterRegion4.jar");
assertEquals(Result.Status.OK, cmdResult.getStatus());
jarBytes = classBuilder.createJarFromClassContent("com/cadrdunit/RegionAlterCacheWriter", "package com.cadrdunit;" + "import org.apache.geode.cache.util.CacheWriterAdapter;" + "public class RegionAlterCacheWriter extends CacheWriterAdapter {}");
writeJarBytesToFile(jarFile5, jarBytes);
cmdResult = executeCommand("deploy --jar=testAlterRegion5.jar");
assertEquals(Result.Status.OK, cmdResult.getStatus());
}
use of org.apache.geode.internal.ClassBuilder in project geode by apache.
the class DeployCommandRedeployDUnitTest method createJarWithFunctionA.
// Note that jar A is a Declarable Function, while jar B is only a Function.
// Also, the function for jar A resides in the default package, whereas jar B specifies a package.
// This ensures that this test has identical coverage to some tests that it replaced.
private File createJarWithFunctionA(String version) throws Exception {
URL classTemplateUrl = DeployCommandRedeployDUnitTest.class.getResource("DeployCommandRedeployDUnitTest_FunctionATemplate");
assertThat(classTemplateUrl).isNotNull();
String classContents = FileUtils.readFileToString(new File(classTemplateUrl.toURI()), "UTF-8");
classContents = classContents.replaceAll("FUNCTION_A", FUNCTION_A);
classContents = classContents.replaceAll("VERSION", version);
File jar = new File(lsRule.getTempFolder().newFolder(JAR_NAME_A + version), this.JAR_NAME_A);
ClassBuilder functionClassBuilder = new ClassBuilder();
functionClassBuilder.writeJarFromContent(FUNCTION_A, classContents, jar);
return jar;
}
use of org.apache.geode.internal.ClassBuilder in project geode by apache.
the class ClusterConfigDistributionDUnitTest method createAsyncEventQueueJar.
private String createAsyncEventQueueJar() throws IOException {
String queueCommandsJarName = this.lsRule.getTempFolder().getRoot().getCanonicalPath() + File.separator + "testEndToEndSC-QueueCommands.jar";
final File jarFile = new File(queueCommandsJarName);
ClassBuilder classBuilder = new ClassBuilder();
byte[] jarBytes = classBuilder.createJarFromClassContent("com/qcdunit/QueueCommandsDUnitTestListener", "package com.qcdunit;" + "import java.util.List; import java.util.Properties;" + "import org.apache.geode.internal.cache.xmlcache.Declarable2; import org.apache.geode.cache.asyncqueue.AsyncEvent;" + "import org.apache.geode.cache.asyncqueue.AsyncEventListener;" + "public class QueueCommandsDUnitTestListener implements Declarable2, AsyncEventListener {" + "Properties props;" + "public boolean processEvents(List<AsyncEvent> events) { return true; }" + "public void close() {}" + "public void init(final Properties props) {this.props = props;}" + "public Properties getConfig() {return this.props;}}");
writeByteArrayToFile(jarFile, jarBytes);
return queueCommandsJarName;
}
Aggregations