2 * Copyright (c) 2021 PANTHEON.tech, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.netconf.test.tool.client.http.perf;
11 import java.net.http.HttpRequest;
12 import java.net.http.HttpRequest.BodyPublishers;
13 import java.nio.charset.StandardCharsets;
14 import org.opendaylight.netconf.test.tool.TestToolUtils;
16 public final class RequestMessageUtils {
18 private static final String PEER_KEY = "{PEERID}";
19 private static final String INT_LEAF_KEY = "{INTLEAF}";
21 private static final String PHYS_ADDR_PLACEHOLDER = "{PHYS_ADDR}";
23 private static final String HOST_KEY = "{HOST}";
24 private static final String PORT_KEY = "{PORT}";
25 private static final String DEVICE_PORT_KEY = "{DEVICE_PORT}";
28 private static final String DEST = "http://{HOST}:{PORT}";
30 private static long macStart = 0xAABBCCDD0000L;
32 private RequestMessageUtils() {
36 public static String prepareMessage(final int idi, final int idj, final String editContentString,
37 final int devicePort) {
38 StringBuilder messageBuilder = new StringBuilder(editContentString);
39 if (editContentString.contains(PEER_KEY)) {
40 messageBuilder.replace(
41 messageBuilder.indexOf(PEER_KEY),
42 messageBuilder.indexOf(PEER_KEY) + PEER_KEY.length(),
43 Integer.toString(idi))
45 messageBuilder.indexOf(INT_LEAF_KEY),
46 messageBuilder.indexOf(INT_LEAF_KEY) + INT_LEAF_KEY.length(),
47 Integer.toString(idj));
50 if (messageBuilder.indexOf(DEVICE_PORT_KEY) != -1) {
51 messageBuilder.replace(
52 messageBuilder.indexOf(DEVICE_PORT_KEY),
53 messageBuilder.indexOf(DEVICE_PORT_KEY) + DEVICE_PORT_KEY.length(),
54 Integer.toString(devicePort));
57 int idx = messageBuilder.indexOf(PHYS_ADDR_PLACEHOLDER);
60 messageBuilder.replace(idx, idx + PHYS_ADDR_PLACEHOLDER.length(), TestToolUtils.getMac(macStart++));
61 idx = messageBuilder.indexOf(PHYS_ADDR_PLACEHOLDER);
64 return messageBuilder.toString();
67 public static RestPerfClient.RequestData formPayload(final Parameters parameters, final String editContentString,
68 final int threadId, final int requests) {
69 final int devicePort = parameters.sameDevice
70 ? parameters.devicePortRangeStart : parameters.devicePortRangeStart + threadId;
71 final StringBuilder destBuilder = new StringBuilder(DEST);
73 destBuilder.indexOf(HOST_KEY),
74 destBuilder.indexOf(HOST_KEY) + HOST_KEY.length(),
77 destBuilder.indexOf(PORT_KEY),
78 destBuilder.indexOf(PORT_KEY) + PORT_KEY.length(),
79 parameters.port + "");
80 final StringBuilder suffixBuilder = new StringBuilder(parameters.destination);
81 if (suffixBuilder.indexOf(DEVICE_PORT_KEY) != -1) {
82 suffixBuilder.replace(
83 suffixBuilder.indexOf(DEVICE_PORT_KEY),
84 suffixBuilder.indexOf(DEVICE_PORT_KEY) + DEVICE_PORT_KEY.length(),
87 destBuilder.append(suffixBuilder);
90 return new RestPerfClient.RequestData(destBuilder.toString(), editContentString,
91 threadId, devicePort, requests);
94 public static HttpRequest formRequest(final String url, final String msg) {
95 return HttpRequest.newBuilder(URI.create(url))
96 .POST(BodyPublishers.ofString(msg, StandardCharsets.UTF_8))
97 .header("content-type", "application/json")
98 .header("Accept", "application/xml")