X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Ftest%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Futils%2FMockA1ClientFactory.java;h=9967958365b9e5cc25a904cda9e53fa837b19f35;hb=2bfc144d136e8895aa5462cc331841a5d8107683;hp=314c44c1a9899ddb5d3d65c1f02c04dded7eebfe;hpb=f26d17f375a8ab4d521549543d4fcc36bdc98865;p=nonrtric.git diff --git a/policy-agent/src/test/java/org/oransc/policyagent/utils/MockA1ClientFactory.java b/policy-agent/src/test/java/org/oransc/policyagent/utils/MockA1ClientFactory.java index 314c44c1..99679583 100644 --- a/policy-agent/src/test/java/org/oransc/policyagent/utils/MockA1ClientFactory.java +++ b/policy-agent/src/test/java/org/oransc/policyagent/utils/MockA1ClientFactory.java @@ -20,38 +20,61 @@ package org.oransc.policyagent.utils; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; + import java.lang.invoke.MethodHandles; +import java.time.Duration; import java.util.HashMap; import java.util.Map; import org.oransc.policyagent.clients.A1Client; import org.oransc.policyagent.clients.A1ClientFactory; +import org.oransc.policyagent.configuration.ApplicationConfig; import org.oransc.policyagent.repository.PolicyTypes; import org.oransc.policyagent.repository.Ric; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import reactor.core.publisher.Mono; public class MockA1ClientFactory extends A1ClientFactory { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private final Map clients = new HashMap<>(); private final PolicyTypes policyTypes; + private Duration asynchDelay = Duration.ofSeconds(0); public MockA1ClientFactory(PolicyTypes policyTypes) { + super(mock(ApplicationConfig.class)); this.policyTypes = policyTypes; } @Override - protected A1Client createStdA1ClientImpl(Ric ric) { - return getOrCreateA1Client(ric.name()); + public Mono createA1Client(Ric ric) { + return Mono.just(getOrCreateA1Client(ric.name())); } public MockA1Client getOrCreateA1Client(String ricName) { if (!clients.containsKey(ricName)) { logger.debug("Creating client for RIC: {}", ricName); - MockA1Client client = new MockA1Client(policyTypes); + MockA1Client client = spy(new MockA1Client(policyTypes, asynchDelay)); clients.put(ricName, client); } return clients.get(ricName); } + /** + * Simulate network latency. The REST responses will be generated by separate + * threads + * + * @param delay the delay between the request and the response + */ + public void setResponseDelay(Duration delay) { + this.asynchDelay = delay; + } + + public void reset() { + this.asynchDelay = Duration.ofSeconds(0); + clients.clear(); + } + }