Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public boolean updateWith(List<String> monitoredResources) {
private static class AppComponent {

private static final Pattern RESOURCE_ID_PATTERN = Pattern.compile(
"^/subscriptions/([^/]+)/resourceGroups/([^/]+)/providers/([^/]+)/([^/]+)/([^/?]+)$");
"^/subscriptions/([^/]+)/resourceGroups/([^/]+)/providers/([^/]+)/(.+)$");

private final String resourceId;
private final String subscriptionId;
Expand All @@ -59,8 +59,27 @@ private AppComponent(@JsonProperty("resourceId") String resourceId) {
int groupNumber = 1;
this.subscriptionId = matcher.group(groupNumber++);
this.resourceGroup = matcher.group(groupNumber++);
this.resourceType = matcher.group(groupNumber++) + "/" + matcher.group(groupNumber++);
this.resourceName = matcher.group(groupNumber);
String provider = matcher.group(groupNumber++);
String resourcePath = matcher.group(groupNumber);
String[] resourceSegments = resourcePath.split("/");
if (resourceSegments.length == 0 || resourceSegments.length % 2 != 0) {
throw new IllegalArgumentException(
"Provided resource id has an invalid resource path. Resource types and names "
+ "must appear in pairs: " + resourceId);
}
StringBuilder resourceTypeBuilder = new StringBuilder(provider);
StringBuilder resourceNameBuilder = new StringBuilder();
for (int i = 0; i < resourceSegments.length; i += 2) {
String type = resourceSegments[i];
String name = resourceSegments[i + 1];
resourceTypeBuilder.append("/").append(type);
if (resourceNameBuilder.length() > 0) {
resourceNameBuilder.append("/");
}
resourceNameBuilder.append(name);
}
this.resourceType = resourceTypeBuilder.toString();
this.resourceName = resourceNameBuilder.toString();
}

}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package us.abstracta.jmeter.javadsl.azure;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static us.abstracta.jmeter.javadsl.JmeterDsl.autoStop;
import static us.abstracta.jmeter.javadsl.JmeterDsl.csvDataSet;
Expand All @@ -10,7 +11,11 @@
import static us.abstracta.jmeter.javadsl.core.listeners.AutoStopListener.AutoStopCondition.sampleTime;

import java.time.Duration;
import java.util.Collections;
import java.util.List;

import org.junit.jupiter.api.Test;
import us.abstracta.jmeter.javadsl.azure.api.AppComponents;
import us.abstracta.jmeter.javadsl.core.TestPlanStats;
import us.abstracta.jmeter.javadsl.core.engines.AutoStoppedTestException;
import us.abstracta.jmeter.javadsl.util.TestResource;
Expand Down Expand Up @@ -47,4 +52,11 @@ public void shouldAutoStopTestWhenConditionIsMet() {
);
}

@Test
public void shouldSupportChildResourceIds() {
assertDoesNotThrow(() -> new AppComponents(Collections.singletonList(
"/subscriptions/sub123/resourceGroups/rg1/providers/"
+ "Microsoft.Sql/servers/orm/elasticpools/dbName")));
}

}