use of org.javasimon.Split in project midpoint by Evolveum.
the class MidScaleRepoTest method test615AddPeakUsersWithOid.
@Test
public void test615AddPeakUsersWithOid() throws ObjectAlreadyExistsException, SchemaException {
OperationResult operationResult = createOperationResult();
Stopwatch stopwatch = stopwatch("user.addPeakWithOid", "Repository addObject(user) - 4th batch");
for (int userIndex = 1; userIndex <= PEAK_USER_COUNT; userIndex++) {
String name = String.format("user-peak-oid-%07d", userIndex);
UserType userType = new UserType(prismContext).oid(UUID.randomUUID().toString()).name(PolyStringType.fromOrig(name));
try (Split ignored = stopwatch.start()) {
repositoryService.addObject(userType.asPrismObject(), null, operationResult);
}
users.put(name, userType.getOid());
}
// no query listener in this test
}
use of org.javasimon.Split in project midpoint by Evolveum.
the class MidScaleRepoTest method test030AddBaseShadows.
@Test
public void test030AddBaseShadows() throws ObjectAlreadyExistsException, SchemaException {
OperationResult operationResult = createOperationResult();
Stopwatch stopwatch = stopwatch("shadow.add", "Repository addObject(shadow) - 1st batch");
for (int userIndex = 1; userIndex <= BASE_USER_COUNT; userIndex++) {
for (Map.Entry<String, String> resourceEntry : resources.entrySet()) {
String name = String.format("shadow-%07d-at-%s", userIndex, resourceEntry.getKey());
ShadowType shadowType = createShadow(name, resourceEntry.getValue());
// for the last user, but only once for a single resource
if (userIndex == BASE_USER_COUNT && queryListener.hasNoEntries()) {
queryListener.start();
}
try (Split ignored = stopwatch.start()) {
repositoryService.addObject(shadowType.asPrismObject(), null, operationResult);
}
if (queryListener.isStarted()) {
// stop does not clear entries, so it will not be started again
queryListener.stop();
}
}
}
queryListener.dumpAndStop();
}
use of org.javasimon.Split in project midpoint by Evolveum.
the class TestDeltaPerfComparison method complexStructure.
@Test(dataProvider = "combinations")
public void complexStructure(int assigmentCount, PlusMinusZero operation) throws SchemaException {
PrismObject<UserType> user = PrismTestUtil.getPrismContext().createObject(UserType.class);
user.setOid(newUuid());
user.asObjectable().setName(PolyString.toPolyStringType(PolyString.fromOrig("User")));
AssignmentType assigment = null;
for (int i = 0; i < assigmentCount; i++) {
assigment = randomAssigment();
user.asObjectable().assignment(assigment);
}
PrismContainerValue lastAssign = assigment.asPrismContainerValue().clone();
lastAssign.freeze();
ObjectDelta<UserType> delta = PrismTestUtil.getPrismContext().deltaFor(UserType.class).item(UserType.F_ASSIGNMENT).mod(operation, lastAssign).asObjectDelta(user.getOid());
Stopwatch clone = stopwatch(monitorName("delta", "clone", String.valueOf(assigmentCount)), "Cloning of structure");
Stopwatch applyDelta = stopwatch(monitorName("delta", operation.toString(), "apply", String.valueOf(assigmentCount)), "Application of delta");
for (int i = 0; i < REPETITIONS; i++) {
PrismObject<UserType> userMod = null;
try (Split s = clone.start()) {
userMod = user.clone();
}
// Measure
try (Split s = applyDelta.start()) {
delta.applyTo(userMod);
}
assertNotNull(userMod.getOid());
assertNotNull(userMod.asObjectable().getAssignment());
}
}
use of org.javasimon.Split in project midpoint by Evolveum.
the class MidScaleNewRepoTest method test610AddPeakUsers.
@Test
public void test610AddPeakUsers() throws SchemaException {
OperationResult operationResult = createOperationResult();
Stopwatch stopwatch = stopwatch("user.addPeak", "Repository addObject(user) - 3rd batch");
for (int userIndex = 1; userIndex <= PEAK_USER_COUNT; userIndex++) {
String name = String.format("user-peak-%07d", userIndex);
UserType user = new UserType(prismContext).name(PolyStringType.fromOrig(name)).description(randomDescription(name));
addExtensionValues(user);
try (Split ignored = stopwatch.start()) {
repositoryService.addObject(user.asPrismObject(), null, operationResult);
} catch (ObjectAlreadyExistsException e) {
QUser u = aliasFor(QUser.class);
user.setOid(selectOne(u, u.nameOrig.eq(name)).oid.toString());
}
if (userIndex % 10 == 0) {
userOidsToGet.add(user.getOid());
}
}
// no query recorder in this test
}
use of org.javasimon.Split in project midpoint by Evolveum.
the class MidScaleNewRepoTest method test230AddMoreShadows.
@Test
public void test230AddMoreShadows() throws SchemaException {
OperationResult operationResult = createOperationResult();
Stopwatch stopwatch = stopwatch("shadow.addMore", "Repository addObject(shadow) - 2nd batch");
for (int userIndex = MORE_USER_START; userIndex <= MORE_USER_COUNT; userIndex++) {
for (Map.Entry<String, String> resourceEntry : resources.entrySet()) {
String name = String.format("shadow-more-%07d-at-%s", userIndex, resourceEntry.getKey());
ShadowType shadowType = createShadow(name, resourceEntry.getValue());
// for the last user, but only once for a single resource
if (userIndex == MORE_USER_COUNT && queryRecorder.getQueryBuffer().isEmpty()) {
queryRecorder.startRecording();
}
try (Split ignored = stopwatch.start()) {
repositoryService.addObject(shadowType.asPrismObject(), null, operationResult);
} catch (ObjectAlreadyExistsException e) {
// Ignored
}
if (queryRecorder.isRecording()) {
queryRecorder.stopRecording();
}
}
// we need to free memory from time to time
if (userIndex % 10 == 0) {
compactOperationResult(operationResult);
// to get rid of finished operations list
clearPerformanceMonitor();
}
}
queryRecorder.stopRecording();
}
Aggregations