private static void validateLegacyFilter( final KernelServices kernelServices, final ModelVersion modelVersion, final ModelNode address, final String filterExpression) throws OperationFailedException { ModelNode op = Operations.createReadResourceOperation(address); ModelNode result = executeTransformOperation(kernelServices, modelVersion, op); // No filter-spec should be there Assert.assertFalse( "filter-spec found at: " + address.asString(), result.has(CommonAttributes.FILTER_SPEC.getName())); op = Operations.createReadAttributeOperation(address, CommonAttributes.FILTER); result = executeTransformOperation(kernelServices, modelVersion, op); Assert.assertEquals( "Transformed spec does not match filter expression.", Filters.filterToFilterSpec(Operations.readResult(result)), filterExpression); }
@Test public void testTransformers_1_1() throws Exception { final String subsystemXml = getSubsystemXml(); final ModelVersion modelVersion = ModelVersion.create(1, 1, 0); final KernelServicesBuilder builder = createKernelServicesBuilder(LoggingTestEnvironment.getManagementInstance()) .setSubsystemXml(subsystemXml); // which is why we need to include the jboss-as-controller artifact. builder .createLegacyKernelServicesBuilder( LoggingTestEnvironment.getManagementInstance(), modelVersion) .addMavenResourceURL("org.jboss.as:jboss-as-logging:7.1.2.Final") .addMavenResourceURL("org.jboss.as:jboss-as-controller:7.1.2.Final") .addParentFirstClassPattern("org.jboss.as.controller.*"); KernelServices mainServices = builder.build(); Assert.assertTrue(mainServices.isSuccessfulBoot()); Assert.assertTrue(mainServices.getLegacyServices(modelVersion).isSuccessfulBoot()); final ModelNode legacyModel = checkSubsystemModelTransformation(mainServices, modelVersion); final PathAddress consoleAddress = PathAddress.pathAddress( LoggingTestEnvironment.SUBSYSTEM_PATH, PathElement.pathElement(CommonAttributes.CONSOLE_HANDLER, "CONSOLE")); // Get all the console handler final ModelNode consoleHandler = legacyModel.get( consoleAddress.getElement(0).getKey(), consoleAddress.getElement(0).getValue(), consoleAddress.getElement(1).getKey(), consoleAddress.getElement(1).getValue()); String formatPattern = consoleHandler.get(CommonAttributes.FORMATTER.getName()).asString(); Assert.assertFalse( "Pattern (" + formatPattern + ") contains a color attribute not supported in legacy models.", COLOR_PATTERN.matcher(formatPattern).find()); // Write a pattern with a %K{level} to ensure it gets removed ModelNode op = Operations.createWriteAttributeOperation( consoleAddress.toModelNode(), CommonAttributes.FORMATTER, "%K{level}" + formatPattern); executeTransformOperation(mainServices, modelVersion, op); validateLegacyFormatter(mainServices, modelVersion, consoleAddress.toModelNode()); // Test update properties op = Operations.createOperation( AbstractHandlerDefinition.UPDATE_OPERATION_NAME, consoleAddress.toModelNode()); op.get(CommonAttributes.FORMATTER.getName()).set("%K{level}" + formatPattern); executeTransformOperation(mainServices, modelVersion, op); validateLegacyFormatter(mainServices, modelVersion, consoleAddress.toModelNode()); // Write out a filter-spec final String filterExpression = "not(match(\"ARJUNA\\\\d\"))"; op = Operations.createWriteAttributeOperation( consoleAddress.toModelNode(), CommonAttributes.FILTER_SPEC, filterExpression); executeTransformOperation(mainServices, modelVersion, op); validateLegacyFilter( mainServices, modelVersion, consoleAddress.toModelNode(), filterExpression); // update-propertes on a filter spec op = Operations.createOperation( AbstractHandlerDefinition.UPDATE_OPERATION_NAME, consoleAddress.toModelNode()); op.get(CommonAttributes.FILTER_SPEC.getName()).set(filterExpression); executeTransformOperation(mainServices, modelVersion, op); validateLegacyFilter( mainServices, modelVersion, consoleAddress.toModelNode(), filterExpression); final PathAddress loggerAddress = PathAddress.pathAddress( LoggingTestEnvironment.SUBSYSTEM_PATH, PathElement.pathElement(CommonAttributes.LOGGER, "org.jboss.as.logging")); // Verify the logger exists, add if it doesn't op = Operations.createReadResourceOperation(loggerAddress.toModelNode()); if (!Operations.successful(mainServices.executeOperation(op))) { op = Operations.createAddOperation(loggerAddress.toModelNode()); executeTransformOperation(mainServices, modelVersion, op); } // write a filter-spec op = Operations.createWriteAttributeOperation( loggerAddress.toModelNode(), CommonAttributes.FILTER_SPEC, filterExpression); executeTransformOperation(mainServices, modelVersion, op); validateLegacyFilter(mainServices, modelVersion, loggerAddress.toModelNode(), filterExpression); }
@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); }