@Test
  public void testModifyFile() throws IOException, InterruptedException {
    File f1 = fileManager.write("rule1.drl", createDefaultRule("rule1"));

    File f2 = fileManager.write("rule2.drl", createDefaultRule("rule2"));

    String xml = "";
    xml += "<change-set xmlns='http://drools.org/drools-5.0/change-set'";
    xml += "    xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'";
    xml +=
        "    xs:schemaLocation='http://drools.org/drools-5.0/change-set http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd' >";
    xml += "    <add> ";
    xml += "        <resource source='" + f1.toURI().toURL() + "' type='DRL' />";
    xml += "        <resource source='" + f2.toURI().toURL() + "' type='DRL' />";
    xml += "    </add> ";
    xml += "</change-set>";
    File fxml = fileManager.write("changeset.xml", xml);

    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();

    KnowledgeAgent kagent = this.createKAgent(kbase);

    applyChangeSet(kagent, ResourceFactory.newUrlResource(fxml.toURI().toURL()));

    StatefulKnowledgeSession ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();
    List<String> list = new ArrayList<String>();
    ksession.setGlobal("list", list);
    ksession.fireAllRules();
    ksession.dispose();

    assertEquals(2, list.size());
    assertTrue(list.contains("rule1"));
    assertTrue(list.contains("rule2"));

    list.clear();

    fileManager.write("rule1.drl", createDefaultRule("rule3"));

    scan(kagent);

    ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();
    list = new ArrayList<String>();
    ksession.setGlobal("list", list);
    ksession.fireAllRules();
    ksession.dispose();

    assertEquals(2, list.size());

    assertTrue(list.contains("rule3"));
    assertTrue(list.contains("rule2"));
    kagent.monitorResourceChangeEvents(false);
  }