Skip to content

Commit

Permalink
fix target none. Duplicate rule (#66)
Browse files Browse the repository at this point in the history
  • Loading branch information
carlosthe19916 authored May 28, 2020
1 parent 5bcd10a commit 352b0cd
Show file tree
Hide file tree
Showing 6 changed files with 153 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,19 @@ function boolean flagsSuitableForOCP(WorkloadInventoryReportModel report)
return report.getFlagsIMS().stream().noneMatch(flag -> isFlagUnsuitableForOCP(flag));
}

rule "Target_None"
salience -1
when
workloadInventoryReport : WorkloadInventoryReportModel(
eval( recommendedTargetsIMS == null || recommendedTargetsIMS.isEmpty())
)
then
modify(workloadInventoryReport)
{
addRecommendedTargetsIMS("None")
}
end

rule "Target_RHV"
when
workloadInventoryReport : WorkloadInventoryReportModel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ rule "Target_OCP_Reevaluate"
}
end

rule "Target_None"
rule "Target_None_Reevaluate"
salience -1
when
workloadInventoryReport : WorkloadInventoryReportModel(
eval( recommendedTargetsIMS == null || recommendedTargetsIMS.isEmpty())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class TargetsTest extends BaseTest {

public TargetsTest() {
super("/org/jboss/xavier/analytics/rules/workload/inventory/Targets.drl", ResourceType.DRL,
"org.jboss.xavier.analytics.rules.workload.inventory", 6);
"org.jboss.xavier.analytics.rules.workload.inventory", 7);
}

@Test
Expand Down Expand Up @@ -115,20 +115,23 @@ public void testTargetsNoFlagsUnsupportedOS() {
workloadInventoryReportModel.setOsDescription("Ubuntu");
workloadInventoryReportModel.setFlagsIMS(null);

facts.put("workloadInventoryReportModel",workloadInventoryReportModel);
facts.put("workloadInventoryReportModel", workloadInventoryReportModel);

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest");
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest", "Target_None");


List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand Down Expand Up @@ -200,15 +203,18 @@ public void testTargetsESXi() {

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest");
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest", "Target_None");

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand All @@ -224,15 +230,18 @@ public void testTargetsUbuntu() {

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest");
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest", "Target_None");

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand All @@ -248,15 +257,18 @@ public void testTargetsPhoton() {

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest");
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest", "Target_None");

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand All @@ -272,15 +284,18 @@ public void testTargetsFreeBSD() {

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest");
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest", "Target_None");

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand Down Expand Up @@ -325,15 +340,18 @@ public void testTargetsSolaris() {

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest");
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest", "Target_None");

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand All @@ -349,15 +367,18 @@ public void testTargetsXP() {

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest");
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest", "Target_None");

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand All @@ -369,19 +390,22 @@ public void testTargetsDebian() {
WorkloadInventoryReportModel workloadInventoryReportModel = new WorkloadInventoryReportModel();
workloadInventoryReportModel.setOsDescription("Debian");

facts.put("workloadInventoryReportModel",workloadInventoryReportModel);
facts.put("workloadInventoryReportModel", workloadInventoryReportModel);

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest");
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener, "AgendaFocusForTest", "Target_None");

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand Down Expand Up @@ -484,17 +508,20 @@ public void testGivenRHELAndOracleJDK13_ThenNoOpenJDKRecommendedTarget() {

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener,
"AgendaFocusForTest"
"AgendaFocusForTest", "Target_None"
);

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand Down Expand Up @@ -542,17 +569,20 @@ public void testGivenUbuntuOracleJDK8AndWeblogic_ThenNoOpenJDKRecommendedTarget(

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener,
"AgendaFocusForTest"
"AgendaFocusForTest", "Target_None"
);

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertEquals(1, report.getRecommendedTargetsIMS().size());
Assert.assertTrue(report.getRecommendedTargetsIMS().contains("None"));
}

@Test
Expand Down Expand Up @@ -715,20 +745,22 @@ public void testGivenTomcat_ThenNoJBossEAPTarget() {
workloadInventoryReportModel.setOsFamily("Ubuntu");
workloadInventoryReportModel.addWorkload("Tomcat");

facts.put("workloadInventoryReportModel",workloadInventoryReportModel);
facts.put("workloadInventoryReportModel", workloadInventoryReportModel);

Map<String, Object> results = createAndExecuteCommandsAndGetResults(facts);

Assert.assertEquals(1, results.get(NUMBER_OF_FIRED_RULE_KEY));
Assert.assertEquals(2, results.get(NUMBER_OF_FIRED_RULE_KEY));
Utils.verifyRulesFiredNames(this.agendaEventListener,
"AgendaFocusForTest"
"AgendaFocusForTest", "Target_None"
);

List<WorkloadInventoryReportModel> reports = Utils.extractModels(GET_OBJECTS_KEY, results, WorkloadInventoryReportModel.class);

// just one report has to be created
Assert.assertEquals(1, reports.size());
WorkloadInventoryReportModel report = reports.get(0);
Assert.assertNull(report.getRecommendedTargetsIMS());

Assert.assertNotNull(report.getRecommendedTargetsIMS());
Assert.assertFalse(report.getRecommendedTargetsIMS().contains("Red Hat JBoss EAP"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ public static Collection<Object[]> data() {
{"CentOS 7 (64-bit)", new ArrayList<>(Arrays.asList("One_Or_More_Flags_Convertible_OS")), new HashSet<>(Arrays.asList(WorkloadInventoryReportModel.SHARED_DISK_FLAG_NAME, WorkloadInventoryReportModel.CPU_AFFINITY_FLAG_NAME)), WorkloadInventoryReportModel.COMPLEXITY_HARD, new HashSet<>(Arrays.asList("RHV", "RHEL")), new HashSet<>(Arrays.asList("RHV", "RHEL"))},
// this VM tests specifically that a VM suitable for OCP, without the "Shared Disk" flag, still has the "OCP" target (ie NOT triggering "Target_OCP_Reevaluate" rule)
{"Microsoft Windows 7 (64-bit)", new ArrayList<>(Arrays.asList("One_Flag_Supported_OS")), new HashSet<>(Arrays.asList(WorkloadInventoryReportModel.RDM_DISK_FLAG_NAME)), WorkloadInventoryReportModel.COMPLEXITY_MEDIUM, new HashSet<>(Arrays.asList("RHV", "OCP")), new HashSet<>(Arrays.asList("RHV", "OCP"))},
{"Microsoft Windows XP Professional (32-bit)", new ArrayList<>(Arrays.asList("Target_None", "No_Flags_Not_Supported_OS")), null, WorkloadInventoryReportModel.COMPLEXITY_UNSUPPORTED, Collections.singleton("None"), null},
{"Ubuntu", new ArrayList<>(Arrays.asList("Target_None", "One_Or_More_Flags_Not_Supported_OS")), Collections.singleton(WorkloadInventoryReportModel.RDM_DISK_FLAG_NAME), WorkloadInventoryReportModel.COMPLEXITY_UNSUPPORTED, Collections.singleton("None"), null},
{"", new ArrayList<>(Arrays.asList("Target_None", "Not_Detected_OS")), new HashSet<>(Arrays.asList(WorkloadInventoryReportModel.SHARED_DISK_FLAG_NAME, WorkloadInventoryReportModel.CPU_AFFINITY_FLAG_NAME)), WorkloadInventoryReportModel.COMPLEXITY_UNKNOWN, Collections.singleton("None"), null},
{"Not detected", new ArrayList<>(Arrays.asList("Target_None", "Not_Detected_OS")), new HashSet<>(Arrays.asList(WorkloadInventoryReportModel.SHARED_DISK_FLAG_NAME, WorkloadInventoryReportModel.CPU_AFFINITY_FLAG_NAME)), WorkloadInventoryReportModel.COMPLEXITY_UNKNOWN, Collections.singleton("None"), null},
{"Microsoft Windows XP Professional (32-bit)", new ArrayList<>(Arrays.asList("Target_None_Reevaluate", "No_Flags_Not_Supported_OS")), null, WorkloadInventoryReportModel.COMPLEXITY_UNSUPPORTED, Collections.singleton("None"), null},
{"Ubuntu", new ArrayList<>(Arrays.asList("Target_None_Reevaluate", "One_Or_More_Flags_Not_Supported_OS")), Collections.singleton(WorkloadInventoryReportModel.RDM_DISK_FLAG_NAME), WorkloadInventoryReportModel.COMPLEXITY_UNSUPPORTED, Collections.singleton("None"), null},
{"", new ArrayList<>(Arrays.asList("Target_None_Reevaluate", "Not_Detected_OS")), new HashSet<>(Arrays.asList(WorkloadInventoryReportModel.SHARED_DISK_FLAG_NAME, WorkloadInventoryReportModel.CPU_AFFINITY_FLAG_NAME)), WorkloadInventoryReportModel.COMPLEXITY_UNKNOWN, Collections.singleton("None"), null},
{"Not detected", new ArrayList<>(Arrays.asList("Target_None_Reevaluate", "Not_Detected_OS")), new HashSet<>(Arrays.asList(WorkloadInventoryReportModel.SHARED_DISK_FLAG_NAME, WorkloadInventoryReportModel.CPU_AFFINITY_FLAG_NAME)), WorkloadInventoryReportModel.COMPLEXITY_UNKNOWN, Collections.singleton("None"), null},
});
}

Expand Down
Loading

0 comments on commit 352b0cd

Please sign in to comment.