public void testDistributedDeadlockWithFunction() throws InterruptedException, ClassNotFoundException, IOException { Host host = Host.getHost(0); VM vm0 = host.getVM(0); VM vm1 = host.getVM(1); String filename = "gfeDependency.txt"; InternalDistributedMember member1 = createCache(vm0); final InternalDistributedMember member2 = createCache(vm1); createCache(new Properties()); //Have two threads lock locks on different members in different orders. //This thread locks the lock member1 first, then member2. lockTheLocks(vm0, member2); //This thread locks the lock member2 first, then member1. lockTheLocks(vm1, member1); Thread.sleep(5000); CommandProcessor commandProcessor = new CommandProcessor(); CommandStringBuilder csb = new CommandStringBuilder(CliStrings.SHOW_DEADLOCK); csb.addOption(CliStrings.SHOW_DEADLOCK__DEPENDENCIES__FILE, filename); Result result = commandProcessor.createCommandStatement(csb.toString(), EMPTY_ENV).process(); String deadLockOutputFromCommand = getResultAsString(result); getLogWriter().info("Deadlock = " + deadLockOutputFromCommand); result.saveIncomingFiles(null); assertEquals(true, deadLockOutputFromCommand.startsWith(CliStrings.SHOW_DEADLOCK__DEADLOCK__DETECTED)); assertEquals(true, result.getStatus().equals(Status.OK)); File file = new File(filename); assertTrue(file.exists()); file.delete(); }
Result result = commandProcessor.createCommandStatement(csb.toString() , EMPTY_ENV).process(); String deadLockOutputFromCommand = getResultAsString(result); getLogWriter().info("Deadlock = " + deadLockOutputFromCommand); assertTrue(deadlock != null); assertEquals(true , result.getStatus().equals(Status.OK));
public void testNoDeadlock() throws ClassNotFoundException, IOException { Host host = Host.getHost(0); VM vm0 = host.getVM(0); VM vm1 = host.getVM(1); //Make sure a deadlock from a previous test is cleared. disconnectAllFromDS(); createCache(vm0); createCache(vm1); createCache(new Properties()); String fileName = "dependency.txt"; GemFireDeadlockDetector detect = new GemFireDeadlockDetector(); assertEquals(null, detect.find().findCycle()); CommandProcessor commandProcessor = new CommandProcessor(); CommandStringBuilder csb = new CommandStringBuilder(CliStrings.SHOW_DEADLOCK); csb.addOption(CliStrings.SHOW_DEADLOCK__DEPENDENCIES__FILE, fileName); Result result = commandProcessor.createCommandStatement(csb.toString(), EMPTY_ENV).process(); String deadLockOutputFromCommand = getResultAsString(result); getLogWriter().info("output = " + deadLockOutputFromCommand); assertEquals(true, result.hasIncomingFiles()); assertEquals(true, result.getStatus().equals(Status.OK)); assertEquals(true, deadLockOutputFromCommand.startsWith(CliStrings.SHOW_DEADLOCK__NO__DEADLOCK)); result.saveIncomingFiles(null); File file = new File(fileName); assertTrue(file.exists()); file.delete(); }