*/
public List<ClElementStatistics> getControlLoopElementStatisticsList(final ControlLoop controlLoop) {
if (MapUtils.isEmpty(controlLoop.elements)) {
- return null;
+ return List.of();
}
return controlLoop.elements.values().stream().map(ControlLoopElement::getClElementStatistics)
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
-import org.onap.policy.clamp.controlloop.models.messages.rest.GenericNameVersion;
import org.onap.policy.clamp.controlloop.models.messages.rest.SimpleResponse;
void testControlLoopElementStatisticsList() {
var cl = new ControlLoop();
List<ClElementStatistics> emptylist = cl.getControlLoopElementStatisticsList(cl);
- assertNull(emptylist);
+ assertEquals(List.of(), emptylist);
var cl1 = getControlLoopTest();
List<ClElementStatistics> list = cl1.getControlLoopElementStatisticsList(cl1);
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.fail;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
var serviceTemplateProvider = new ServiceTemplateProvider(modelsProvider);
var serviceTemplate = new ToscaServiceTemplate();
- when(modelsProvider.createServiceTemplate(eq(serviceTemplate))).thenReturn(serviceTemplate);
+ when(modelsProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate);
var result = serviceTemplateProvider.createServiceTemplate(serviceTemplate);
serviceTemplate.setName("Name");
serviceTemplate.setVersion("1.0.0");
var modelsProvider = mock(PolicyModelsProvider.class);
- when(modelsProvider.deleteServiceTemplate(eq(serviceTemplate.getName()), eq(serviceTemplate.getVersion())))
+ when(modelsProvider.deleteServiceTemplate(serviceTemplate.getName(), serviceTemplate.getVersion()))
.thenReturn(serviceTemplate);
var serviceTemplateProvider = new ServiceTemplateProvider(modelsProvider);
serviceTemplate.setName("Name");
serviceTemplate.setVersion("1.0.0");
var modelsProvider = mock(PolicyModelsProvider.class);
- when(modelsProvider.getServiceTemplateList(eq(serviceTemplate.getName()), eq(serviceTemplate.getVersion())))
+ when(modelsProvider.getServiceTemplateList(serviceTemplate.getName(), serviceTemplate.getVersion()))
.thenReturn(List.of(serviceTemplate));
var serviceTemplateProvider = new ServiceTemplateProvider(modelsProvider);
serviceTemplate.setName("Name");
serviceTemplate.setVersion("1.0.0");
var modelsProvider = mock(PolicyModelsProvider.class);
- when(modelsProvider.getServiceTemplateList(eq(serviceTemplate.getName()), eq(serviceTemplate.getVersion())))
+ when(modelsProvider.getServiceTemplateList(serviceTemplate.getName(), serviceTemplate.getVersion()))
.thenReturn(List.of(serviceTemplate));
var serviceTemplateProvider = new ServiceTemplateProvider(modelsProvider);
package org.onap.policy.clamp.controlloop.participant.kubernetes.handler;
-
import java.io.IOException;
import java.lang.invoke.MethodHandles;
+import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
+import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatistics;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-
/**
* This class handles implementation of controlLoopElement updates.
*/
* Overridden method.
*
* @param controlLoopElementId controlLoopElement id
- * @throws PfModelException incase of error
+ * @throws PfModelException in case of error
*/
@Override
public synchronized void handleStatistics(UUID controlLoopElementId) throws PfModelException {
- // TODO Implement statistics functionality
+ var clElement = intermediaryApi.getControlLoopElement(controlLoopElementId);
+ if (clElement != null) {
+ var clElementStatistics = new ClElementStatistics();
+ clElementStatistics.setControlLoopState(clElement.getState());
+ clElementStatistics.setTimeStamp(Instant.now());
+ intermediaryApi.updateControlLoopElementStatistics(controlLoopElementId, clElementStatistics);
+ }
}
}
private ChartStore chartStore;
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ private static final String PATH_DELIMITER = "/";
/**
* Install a chart.
}
var localHelmChartDir = chartStore.getAppPath(chart.getChartId()).toString();
logger.info("Chart not found in helm repositories, verifying local repo {} ", localHelmChartDir);
- if (verifyLocalHelmRepo(new File(localHelmChartDir + "/" + chart.getChartId().getName()))) {
+ if (verifyLocalHelmRepo(new File(localHelmChartDir + PATH_DELIMITER + chart.getChartId().getName()))) {
repository = localHelmChartDir;
}
return repository;
break;
case PASSIVE:
try {
- undeployPolicies(controlLoopElementId, orderedState);
+ undeployPolicies(controlLoopElementId);
} catch (PfModelRuntimeException e) {
LOGGER.debug("Undeploying policies failed - no policies to undeploy {}", controlLoopElementId);
}
ParticipantMessageType.CONTROL_LOOP_STATE_CHANGE);
}
- private void undeployPolicies(UUID controlLoopElementId, ControlLoopOrderedState newState) {
+ private void undeployPolicies(UUID controlLoopElementId) {
// Undeploy all policies of this controlloop from Policy Framework
if (policyMap.entrySet() != null) {
for (Entry<String, String> policy : policyMap.entrySet()) {
@Override
public void updateParticipantStatistics(ParticipantStatistics participantStatistics) {
- // TODO Auto-generated method stub
+ participantHandler.updateParticipantStatistics(participantStatistics);
}
@Override
return getParticipant(definition.getName(), definition.getVersion());
}
+ /**
+ * Method to update participant statistics.
+ *
+ * @param statistics participant statistics
+ */
+ public void updateParticipantStatistics(ParticipantStatistics statistics) {
+ participantStatistics.setState(statistics.getState());
+ participantStatistics.setHealthStatus(statistics.getHealthStatus());
+ participantStatistics.setTimeStamp(statistics.getTimeStamp());
+ participantStatistics.setAverageExecutionTime(statistics.getAverageExecutionTime());
+ participantStatistics.setEventCount(statistics.getEventCount());
+ }
+
/**
* Get participants as a {@link Participant} class.
*
stateChange.setTimestamp(Instant.ofEpochMilli(3000));
var clh = setTestControlLoopHandler(id, uuid);
- clh.handleControlLoopStateChange(stateChange);
+ clh.handleControlLoopStateChange(stateChange, List.of());
var newid = new ToscaConceptIdentifier("id", "1.2.3");
stateChange.setControlLoopId(newid);
stateChange.setParticipantId(newid);
- assertDoesNotThrow(() -> clh.handleControlLoopStateChange(stateChange));
+ assertDoesNotThrow(() -> clh.handleControlLoopStateChange(stateChange, List.of()));
List<ControlLoopElementDefinition> clElementDefinitions = new ArrayList<>();
var cld = new ControlLoopElementDefinition();
private final ParticipantProvider participantProvider;
private static final Object lockit = new Object();
+ private static final String ENTRY = "entry ";
/**
* Creates Instance Properties and Control Loop.
var result = new BeanValidationResult("ControlLoops", controlLoops);
for (ControlLoop controlLoop : controlLoops.getControlLoopList()) {
- var subResult = new BeanValidationResult("entry " + controlLoop.getDefinition().getName(), controlLoop);
+ var subResult = new BeanValidationResult(ENTRY + controlLoop.getDefinition().getName(), controlLoop);
List<ToscaNodeTemplate> toscaNodeTemplates = commissioningProvider.getControlLoopDefinitions(
controlLoop.getDefinition().getName(), controlLoop.getDefinition().getVersion());
*/
private ValidationResult validateDefinition(Map<String, ToscaConceptIdentifier> definitions,
ToscaConceptIdentifier definition) {
- var result = new BeanValidationResult("entry " + definition.getName(), definition);
+ var result = new BeanValidationResult(ENTRY + definition.getName(), definition);
ToscaConceptIdentifier identifier = definitions.get(definition.getName());
if (identifier == null) {
result.setResult(ValidationStatus.INVALID, "Not FOUND");
for (ControlLoop controlLoop : controlLoops) {
for (var element : controlLoop.getElements().values()) {
- var subResult = new BeanValidationResult("entry " + element.getDefinition().getName(), element);
+ var subResult = new BeanValidationResult(ENTRY + element.getDefinition().getName(), element);
Participant p = participantMap.get(element.getParticipantId());
if (p == null) {
}
return clElementId;
}
-
- public void updateClElementStatistics(List<ClElementStatistics> clElementStatistics) {
- // TODO Auto-generated method stub
- }
-
- public void updateParticipantStatistics(List<ParticipantStatistics> statisticsList) {
- // TODO Auto-generated method stub
- }
}
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyList;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
participant.setParticipantType(participantType);
var participantProvider = mock(ParticipantProvider.class);
- when(participantProvider.getParticipants(eq(participantId.getName()), eq(participantId.getVersion())))
+ when(participantProvider.getParticipants(participantId.getName(), participantId.getVersion()))
.thenReturn(List.of(participant));
var participantDeregisterMessage = new ParticipantDeregister();
handler.handleParticipantMessage(participantDeregisterMessage);
verify(participantProvider).updateParticipants(anyList());
- verify(participantDeregisterAckPublisher).send(eq(participantDeregisterMessage.getMessageId()));
+ verify(participantDeregisterAckPublisher).send(participantDeregisterMessage.getMessageId());
}
@Test
handler.handleParticipantMessage(participantRegisterMessage);
verify(participantProvider).createParticipants(anyList());
- verify(participantRegisterAckPublisher).send(eq(participantRegisterMessage.getMessageId()), eq(participantId),
- eq(participantType));
+ verify(participantRegisterAckPublisher).send(participantRegisterMessage.getMessageId(), participantId,
+ participantType);
}
@Test
participant.setParticipantType(participantType);
var participantProvider = mock(ParticipantProvider.class);
- when(participantProvider.getParticipants(eq(participantId.getName()), eq(participantId.getVersion())))
+ when(participantProvider.getParticipants(participantId.getName(), participantId.getVersion()))
.thenReturn(List.of(participant));
var participantUpdateAckMessage = new ParticipantUpdateAck();
participantUpdatePublisher);
handler.handleSendCommissionMessage(participantId.getName(), participantId.getVersion());
- verify(participantUpdatePublisher).sendComissioningBroadcast(eq(participantId.getName()),
- eq(participantId.getVersion()));
+ verify(participantUpdatePublisher).sendComissioningBroadcast(participantId.getName(),
+ participantId.getVersion());
}
@Test
var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class);
- when(controlLoopProvider.getControlLoop(eq(identifier))).thenReturn(controlLoop);
+ when(controlLoopProvider.getControlLoop(identifier)).thenReturn(controlLoop);
var modelsProvider = Mockito.mock(PolicyModelsProvider.class);
when(modelsProvider.getServiceTemplateList(any(), any()))