@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);
  }