private void testDisableHandler(final String profileName, boolean legacy) throws Exception { final KernelServices kernelServices = boot(); final String fileHandlerName = "test-file-handler"; final File logFile = createLogFile(); // Add file handler addFileHandler( kernelServices, profileName, fileHandlerName, org.jboss.logmanager.Level.INFO, logFile, true); // Ensure the handler is listed final ModelNode rootLoggerAddress = createRootLoggerAddress(profileName).toModelNode(); ModelNode op = SubsystemOperations.createReadAttributeOperation( rootLoggerAddress, CommonAttributes.HANDLERS); ModelNode handlerResult = executeOperation(kernelServices, op); List<String> handlerList = SubsystemOperations.readResultAsList(handlerResult); assertTrue( String.format("Handler '%s' was not found. Result: %s", fileHandlerName, handlerResult), handlerList.contains(fileHandlerName)); // Get the logger final Logger logger = getLogger(profileName); // Log 3 lines logger.info("Test message 1"); logger.info("Test message 2"); logger.info("Test message 3"); // Disable the handler final ModelNode handlerAddress = createFileHandlerAddress(profileName, fileHandlerName).toModelNode(); ModelNode disableOp = legacy ? Util.getEmptyOperation( AbstractHandlerDefinition.DISABLE_HANDLER.getName(), handlerAddress) : SubsystemOperations.createWriteAttributeOperation( handlerAddress, CommonAttributes.ENABLED, false); executeOperation(kernelServices, disableOp); // The operation should set the enabled attribute to false final ModelNode readOp = SubsystemOperations.createReadAttributeOperation(handlerAddress, CommonAttributes.ENABLED); ModelNode result = executeOperation(kernelServices, readOp); assertFalse( "enabled attribute should be false when the disable operation is invoked", SubsystemOperations.readResult(result).asBoolean()); // Log 3 more lines logger.info("Test message 4"); logger.info("Test message 5"); logger.info("Test message 6"); // Check the file, should only contain 3 lines List<String> lines = FileUtils.readLines(logFile); assertEquals("Handler was not disable.", 3, lines.size()); // Re-enable the handler ModelNode enableOp = legacy ? Util.getEmptyOperation( AbstractHandlerDefinition.ENABLE_HANDLER.getName(), handlerAddress) : SubsystemOperations.createWriteAttributeOperation( handlerAddress, CommonAttributes.ENABLED, true); executeOperation(kernelServices, enableOp); // The operation should set the enabled attribute to true result = executeOperation(kernelServices, readOp); assertTrue( "enabled attribute should be true when the enable operation is invoked", SubsystemOperations.readResult(result).asBoolean()); // Log 3 more lines logger.info("Test message 7"); logger.info("Test message 8"); logger.info("Test message 9"); // Check the file, should contain 6 lines lines = FileUtils.readLines(logFile); assertEquals("Handler was not disable.", 6, lines.size()); }
@Test public void testLegacyFilters() throws Exception { final KernelServices kernelServices = boot(); final String fileHandlerName = "test-file-handler"; // add new file logger so we can track logged messages final File logFile = createLogFile(); final ModelNode handlerAddress = createFileHandlerAddress(fileHandlerName).toModelNode(); addFileHandler( kernelServices, null, fileHandlerName, org.jboss.logmanager.Level.TRACE, logFile, true); // Write legacy filters for (Map.Entry<String, ModelNode> entry : FilterConversionTestCase.MAP.entrySet()) { // Validate the write-attribute operation ModelNode op = SubsystemOperations.createWriteAttributeOperation( handlerAddress, CommonAttributes.FILTER, entry.getValue()); executeOperation(kernelServices, op); // Read the current value op = SubsystemOperations.createReadAttributeOperation( handlerAddress, CommonAttributes.FILTER_SPEC); String filterSpecResult = SubsystemOperations.readResultAsString(executeOperation(kernelServices, op)); assertEquals(entry.getKey(), filterSpecResult); // Validate an add operation final ModelNode tempHandlerAddress = createConsoleHandlerAddress("temp").toModelNode(); op = SubsystemOperations.createAddOperation(tempHandlerAddress); op.get(CommonAttributes.FILTER.getName()).set(entry.getValue()); executeOperation(kernelServices, op); // Read the current value op = SubsystemOperations.createReadAttributeOperation( tempHandlerAddress, CommonAttributes.FILTER_SPEC); filterSpecResult = SubsystemOperations.readResultAsString(executeOperation(kernelServices, op)); assertEquals(entry.getKey(), filterSpecResult); // Remove the temp handler op = SubsystemOperations.createRemoveOperation(tempHandlerAddress, true); executeOperation(kernelServices, op); // Add to a logger final ModelNode loggerAddress = createLoggerAddress("test-logger").toModelNode(); op = SubsystemOperations.createAddOperation(loggerAddress); op.get(CommonAttributes.FILTER.getName()).set(entry.getValue()); executeOperation(kernelServices, op); // Read the current value op = SubsystemOperations.createReadAttributeOperation( loggerAddress, CommonAttributes.FILTER_SPEC); filterSpecResult = SubsystemOperations.readResultAsString(executeOperation(kernelServices, op)); assertEquals(entry.getKey(), filterSpecResult); // Remove the attribute op = SubsystemOperations.createUndefineAttributeOperation( loggerAddress, CommonAttributes.FILTER_SPEC); executeOperation(kernelServices, op); op = SubsystemOperations.createReadAttributeOperation(loggerAddress, CommonAttributes.FILTER); // Filter and filter spec should be undefined assertEquals( "Filter was not undefined", SubsystemOperations.UNDEFINED, SubsystemOperations.readResult(executeOperation(kernelServices, op))); op = SubsystemOperations.createReadAttributeOperation( loggerAddress, CommonAttributes.FILTER_SPEC); assertEquals( "Filter was not undefined", SubsystemOperations.UNDEFINED, SubsystemOperations.readResult(executeOperation(kernelServices, op))); // Test writing the attribute to the logger op = SubsystemOperations.createWriteAttributeOperation( loggerAddress, CommonAttributes.FILTER, entry.getValue()); executeOperation(kernelServices, op); // Read the current value op = SubsystemOperations.createReadAttributeOperation( loggerAddress, CommonAttributes.FILTER_SPEC); filterSpecResult = SubsystemOperations.readResultAsString(executeOperation(kernelServices, op)); assertEquals(entry.getKey(), filterSpecResult); // Remove the logger op = SubsystemOperations.createRemoveOperation(loggerAddress, true); executeOperation(kernelServices, op); } // Write new filters for (Map.Entry<String, ModelNode> entry : FilterConversionTestCase.MAP.entrySet()) { // Write to a handler ModelNode op = SubsystemOperations.createWriteAttributeOperation( handlerAddress, CommonAttributes.FILTER_SPEC, entry.getKey()); executeOperation(kernelServices, op); // Read the current value op = SubsystemOperations.createReadAttributeOperation(handlerAddress, CommonAttributes.FILTER); ModelNode filterResult = SubsystemOperations.readResult(executeOperation(kernelServices, op)); ModelTestUtils.compare(entry.getValue(), filterResult); // Validate an add operation final ModelNode tempHandlerAddress = createConsoleHandlerAddress("temp").toModelNode(); op = SubsystemOperations.createAddOperation(tempHandlerAddress); op.get(CommonAttributes.FILTER_SPEC.getName()).set(entry.getKey()); executeOperation(kernelServices, op); // Read the current value op = SubsystemOperations.createReadAttributeOperation( tempHandlerAddress, CommonAttributes.FILTER); filterResult = SubsystemOperations.readResult(executeOperation(kernelServices, op)); ModelTestUtils.compare(entry.getValue(), filterResult); // Remove the temp handler op = SubsystemOperations.createRemoveOperation(tempHandlerAddress, true); executeOperation(kernelServices, op); // Add to a logger final ModelNode loggerAddress = createLoggerAddress("test-logger").toModelNode(); op = SubsystemOperations.createAddOperation(loggerAddress); op.get(CommonAttributes.FILTER_SPEC.getName()).set(entry.getKey()); executeOperation(kernelServices, op); // Read the current value op = SubsystemOperations.createReadAttributeOperation(loggerAddress, CommonAttributes.FILTER); filterResult = SubsystemOperations.readResult(executeOperation(kernelServices, op)); ModelTestUtils.compare(entry.getValue(), filterResult); // Test writing the attribute to the logger op = SubsystemOperations.createWriteAttributeOperation( loggerAddress, CommonAttributes.FILTER_SPEC, entry.getKey()); executeOperation(kernelServices, op); // Read the current value op = SubsystemOperations.createReadAttributeOperation(loggerAddress, CommonAttributes.FILTER); filterResult = SubsystemOperations.readResult(executeOperation(kernelServices, op)); ModelTestUtils.compare(entry.getValue(), filterResult); // Remove the logger op = SubsystemOperations.createRemoveOperation(loggerAddress, true); executeOperation(kernelServices, op); } removeFileHandler(kernelServices, null, fileHandlerName, true); }