package eu.musesproject.server.dataminer; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import eu.musesproject.server.db.handler.DBManager; import eu.musesproject.server.scheduler.ModuleType; public class TestParsingUtils { static ParsingUtils parser = new ParsingUtils(); private static DBManager dbManager = new DBManager(ModuleType.KRS); private Logger logger = Logger.getLogger(TestParsingUtils.class); @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static void setUpAfterClass() throws Exception { } /** * testClassifierParser - JUnit test case whose aim is to test if the regular expressions in * classifierParser are correctly built * * @param none * */ @Test public final void testClassifierParser() { String ruleJRip = "JRIP rules:\n===========\n\n(event_type = SECURITY_PROPERTY_CHANGED) and (device_screen_timeout <= 30) => label=STRONGDENY (18457.0/5980.0)\n"+ "(event_type = SECURITY_PROPERTY_CHANGED) and (passwd_has_capital_letters >= 2) and (device_screen_timeout >= 120) and (letters_in_password >= 7) => label=STRONGDENY (3198.0/911.0)"; String rulePART = "PART decision list\n------------------\n\ndevice_screen_timeout <= 30 AND\ndevice_is_rooted <= 0 AND\nsilent_mode > 0: STRONGDENY (13985.0/4947.0)\n"+ "letters_in_password > 3 AND\npasswd_has_capital_letters > 1 AND\ndevice_is_rooted <= 0 AND\ndevice_screen_timeout > 60 AND\nletters_in_password > 6: STRONGDENY (2723.0/773.0)"; String ruleJ48 = "J48 pruned tree\n------------------\n\nevent_type = SECURITY_PROPERTY_CHANGED\n| device_is_rooted <= 0\n| | silent_mode > 0\n"+ "| | | device_screen_timeout > 30\n| | | | passwd_has_capital_letters <= 3\n| | | | | device_has_password <= 0: STRONGDENY (2001.0/774.0)\n"+ "| | | | | device_has_password > 0\n| | | | | | password_length <= 6: GRANTED (67.0)\n"+ "| | | | | | password_length > 6\n| | | | | | | device_screen_timeout <= 300: GRANTED (7462.0/3292.0)\n"+ "| | | | | | | device_screen_timeout > 300: STRONGDENY (194.0/89.0)"; String ruleREPTree = "REPTree\n============\n\nevent_type = SECURITY_PROPERTY_CHANGED\n| passwd_has_capital_letters >= 1.5\n"+ "| | silent_mode < 0.5 : STRONGDENY (3194/747) [1569/354]\n| | silent_mode >= 0.5\n"+ "| | | device_screen_timeout < 90\n| | | | device_screen_timeout >= 45\n"+ "| | | | | device_is_rooted < 0.5\n| | | | | | letters_in_password < 6.5\n"+ "| | | | | | | passwd_has_capital_letters < 3.5\n| | | | | | | | device_has_password < 0.5 : STRONGDENY (144/66) [72/36]\n"+ "| | | | | | | | device_has_password >= 0.5 : GRANTED (220/105) [79/37]"; List<String> ruleListJRip = parser.JRipParser(ruleJRip); List<String> ruleListPART = parser.PARTParser(rulePART); List<String> ruleListJ48 = parser.J48Parser(ruleJ48); List<String> ruleListREPTree = parser.REPTreeParser(ruleREPTree); if (ruleListJRip != null || ruleListPART != null || ruleListJ48 != null || ruleListREPTree != null) { Iterator<String> i1 = ruleListJRip.iterator(); Iterator<String> i2 = ruleListPART.iterator(); Iterator<String> i3 = ruleListJ48.iterator(); Iterator<String> i4 = ruleListREPTree.iterator(); while (i1.hasNext()) { String rule = i1.next(); logger.info("JRIP rule: "+rule); assertNotNull(rule); } while (i2.hasNext()) { String rule = i2.next(); logger.info("PART rule: "+rule); assertNotNull(rule); } while (i3.hasNext()) { String rule = i3.next(); logger.info("J48 rule: "+rule); assertNotNull(rule); } while (i4.hasNext()) { String rule = i4.next(); logger.info("REPTree rule: "+rule); assertNotNull(rule); } } else { fail("Rules not being properly parsed"); } } /** * testDBRulesParser - JUnit test case whose aim is to test if the regular expressions in * DBRulesParser are correctly built * * @param none * */ @Test public final void testDBRulesParser() { List<String> DBRules = parser.DBRulesParser(); if (DBRules != null) { Iterator<String> i = DBRules.iterator(); while (i.hasNext()) { String rule = i.next(); logger.info("DB rule: "+rule); assertNotNull(rule); } } else { fail ("Rules not being properly parsed"); } } }