import java.util.concurrent.atomic.AtomicInteger;
+import org.oransc.policyagent.clients.AsyncRestClient;
import org.oransc.policyagent.repository.ImmutablePolicy;
import org.oransc.policyagent.repository.Policy;
import org.oransc.policyagent.repository.PolicyType;
import org.oransc.policyagent.utils.MockA1ClientFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.http.ResponseEntity;
/**
* Invoke operations over the NBI and start synchronizations in a separate
*/
class ConcurrencyTestRunnable implements Runnable {
private static final Logger logger = LoggerFactory.getLogger(ConcurrencyTestRunnable.class);
- private final RestTemplate restTemplate = new RestTemplate();
- private final String baseUrl;
+ private final AsyncRestClient webClient;
static AtomicInteger nextCount = new AtomicInteger(0);
private final int count;
private final RicSupervision supervision;
ConcurrencyTestRunnable(String baseUrl, RicSupervision supervision, MockA1ClientFactory a1ClientFactory, Rics rics,
PolicyTypes types) {
- this.baseUrl = baseUrl;
this.count = nextCount.incrementAndGet();
this.supervision = supervision;
this.a1ClientFactory = a1ClientFactory;
this.rics = rics;
this.types = types;
+ this.webClient = new AsyncRestClient(baseUrl);
+ }
+
+ private void printStatusInfo() {
+ try {
+ String url = "/actuator/metrics/jvm.threads.live";
+ ResponseEntity<String> result = webClient.getForEntity(url).block();
+ System.out.println(Thread.currentThread() + result.getBody());
+
+ url = "/rics";
+ result = webClient.getForEntity(url).block();
+ System.out.println(Thread.currentThread() + result.getBody());
+
+ } catch (Exception e) {
+ logger.error(Thread.currentThread() + "Concurrency test printStatusInfo exception " + e.toString());
+ }
}
@Override
public void run() {
try {
- for (int i = 0; i < 100; ++i) {
- if (i % 10 == 0) {
+ for (int i = 0; i < 500; ++i) {
+ if (i % 100 == 0) {
createInconsistency();
this.supervision.checkAllRics();
}
}
} catch (Exception e) {
logger.error("Concurrency test exception " + e.toString());
+ printStatusInfo();
}
}
.ric(ric) //
.ownerServiceName("") //
.lastModified("") //
+ .isTransient(false) //
.build();
}
}
private void listPolicies() {
- String uri = baseUrl + "/policies";
- restTemplate.getForObject(uri, String.class);
+ String uri = "/policies";
+ webClient.getForEntity(uri).block();
}
private void listTypes() {
- String uri = baseUrl + "/policy_types";
- restTemplate.getForObject(uri, String.class);
+ String uri = "/policy_types";
+ webClient.getForEntity(uri).block();
}
private void putPolicy(String name) {
- String putUrl = baseUrl + "/policy?type=type1&id=" + name + "&ric=ric&service=service1";
- restTemplate.put(putUrl, createJsonHttpEntity("{}"));
+ String putUrl = "/policy?type=type1&id=" + name + "&ric=ric&service=service1";
+ webClient.putForEntity(putUrl, "{}").block();
}
private void deletePolicy(String name) {
- String deleteUrl = baseUrl + "/policy?id=" + name;
- restTemplate.delete(deleteUrl);
+ String deleteUrl = "/policy?id=" + name;
+ webClient.delete(deleteUrl).block();
}
-
- private static HttpEntity<String> createJsonHttpEntity(String content) {
- HttpHeaders headers = new HttpHeaders();
- headers.setContentType(MediaType.APPLICATION_JSON);
- return new HttpEntity<String>(content, headers);
- }
-
}