Skip to content

Commit

Permalink
Summarize environmental perf. info in task trees
Browse files Browse the repository at this point in the history
Related to MID-6532.
  • Loading branch information
mederly committed Feb 25, 2021
1 parent e7988d2 commit fa89354
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 12 deletions.
Expand Up @@ -8,9 +8,9 @@
package com.evolveum.midpoint.schema.statistics;

import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.Nullable;

import javax.xml.datatype.DatatypeConstants;
import javax.xml.namespace.QName;
Expand Down Expand Up @@ -158,7 +158,10 @@ private EnvironmentalPerformanceInformationType aggregate(EnvironmentalPerforman
return rv;
}

public static void addTo(EnvironmentalPerformanceInformationType rv, EnvironmentalPerformanceInformationType delta) {
public static void addTo(EnvironmentalPerformanceInformationType rv, @Nullable EnvironmentalPerformanceInformationType delta) {
if (delta == null) {
return;
}
addProvisioningTo(rv, delta.getProvisioningStatistics());
addMappingsTo(rv, delta.getMappingsStatistics());
addNotificationsTo(rv, delta.getNotificationsStatistics());
Expand Down
Expand Up @@ -16,6 +16,7 @@

import org.apache.commons.collections.buffer.CircularFifoBuffer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.*;
import java.util.Objects;
Expand Down Expand Up @@ -165,8 +166,10 @@ private static long getNextOperationId() {
}

/** Updates specified summary with given delta. */
public static void addTo(@NotNull IterativeTaskInformationType sum, @NotNull IterativeTaskInformationType delta) {
addMatchingParts(sum.getPart(), delta.getPart());
public static void addTo(@NotNull IterativeTaskInformationType sum, @Nullable IterativeTaskInformationType delta) {
if (delta != null) {
addMatchingParts(sum.getPart(), delta.getPart());
}
}

/** Looks for matching parts (created if necessary) and adds them. */
Expand Down
Expand Up @@ -106,10 +106,9 @@ private void record(SynchronizationSituationType onProcessingStart, Synchronizat
}

public static void addTo(SynchronizationInformationType sum, @Nullable SynchronizationInformationType delta) {
if (delta == null) {
return;
if (delta != null) {
addTransitions(sum, delta);
}
addTransitions(sum, delta);
}

private static void addTransitions(SynchronizationInformationType sum, @NotNull SynchronizationInformationType delta) {
Expand Down
Expand Up @@ -156,8 +156,10 @@ public static OperationStatsType getOperationStatsFromTree(TaskType task, PrismC
}

OperationStatsType aggregate = new OperationStatsType(prismContext)
.synchronizationInformation(new SynchronizationInformationType())
.actionsExecutedInformation(new ActionsExecutedInformationType());
.iterativeTaskInformation(new IterativeTaskInformationType(prismContext))
.synchronizationInformation(new SynchronizationInformationType(prismContext))
.actionsExecutedInformation(new ActionsExecutedInformationType())
.environmentalPerformanceInformation(new EnvironmentalPerformanceInformationType());

Stream<TaskType> subTasks = TaskTypeUtil.getAllTasksStream(task);
subTasks.forEach(subTask -> {
Expand All @@ -166,6 +168,7 @@ public static OperationStatsType getOperationStatsFromTree(TaskType task, PrismC
IterativeTaskInformation.addTo(aggregate.getIterativeTaskInformation(), operationStatsBean.getIterativeTaskInformation());
SynchronizationInformation.addTo(aggregate.getSynchronizationInformation(), operationStatsBean.getSynchronizationInformation());
ActionsExecutedInformation.addTo(aggregate.getActionsExecutedInformation(), operationStatsBean.getActionsExecutedInformation());
EnvironmentalPerformanceInformation.addTo(aggregate.getEnvironmentalPerformanceInformation(), operationStatsBean.getEnvironmentalPerformanceInformation());
}
});
return aggregate;
Expand Down
Expand Up @@ -6,6 +6,8 @@
*/
package com.evolveum.midpoint.model.intest.sync;

import static com.evolveum.midpoint.prism.polystring.PolyString.getOrig;

import static org.testng.AssertJUnit.*;

import java.io.FileNotFoundException;
Expand All @@ -15,6 +17,11 @@
import java.util.List;
import javax.xml.namespace.QName;

import static org.assertj.core.api.Assertions.assertThat;

import com.evolveum.midpoint.schema.statistics.StatisticsUtil;
import com.evolveum.midpoint.schema.util.TaskTypeUtil;

import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.DirtiesContext.ClassMode;
import org.springframework.test.context.ContextConfiguration;
Expand Down Expand Up @@ -148,6 +155,20 @@ public void test110AddDummyGreenAccountMancomb() throws Exception {

assertUsers(7);

String syncTaskOid = getSyncTaskOid(getDummyResourceObject(RESOURCE_DUMMY_GREEN_NAME));
PrismObject<TaskType> syncTaskTree = getTaskTree(syncTaskOid);
OperationStatsType stats = TaskTypeUtil.getOperationStatsFromTree(syncTaskTree.asObjectable(), prismContext);
displayValue("sync task stats", StatisticsUtil.format(stats));
if (isReconciliation()) {
// Checking MID-6532 implementation (if multi-part tasks)
// TODO check for other kinds of sync tasks, improve asserts
ProvisioningStatisticsType provisioningStatistics = stats.getEnvironmentalPerformanceInformation().getProvisioningStatistics();
assertThat(provisioningStatistics.getEntry()).hasSize(1);
assertThat(provisioningStatistics.getEntry().get(0).getResourceRef().getOid()).isEqualTo(RESOURCE_DUMMY_GREEN_OID);
assertThat(getOrig(provisioningStatistics.getEntry().get(0).getResourceRef().getTargetName())).isEqualTo("Dummy Resource Green");
assertThat(provisioningStatistics.getEntry().get(0).getOperation()).hasSize(2); // get + search
}

// notifications
displayAllNotifications();
assertSingleDummyTransportMessageContaining("simpleAccountNotifier-SUCCESS", "Channel: " + getExpectedChannel());
Expand Down Expand Up @@ -939,6 +960,11 @@ public void test700AddDummyGreenAccountXjojo() throws Exception {

assertUsers(9 + getNumberOfExtraDummyUsers());

String syncTaskOid = getSyncTaskOid(getDummyResourceObject(RESOURCE_DUMMY_GREEN_NAME));
PrismObject<TaskType> syncTaskTree = getTaskTree(syncTaskOid);
OperationStatsType stats = TaskTypeUtil.getOperationStatsFromTree(syncTaskTree.asObjectable(), prismContext);
displayValue("sync task stats", StatisticsUtil.format(stats));

// notifications
notificationManager.setDisabled(true);
}
Expand Down
Expand Up @@ -83,7 +83,4 @@ protected int getWaitTimeout() {
protected int getNumberOfExtraDummyUsers() {
return 1;
}



}

0 comments on commit fa89354

Please sign in to comment.