Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Dec 14, 2018
2 parents 8772601 + ab035ad commit 87c0bad
Show file tree
Hide file tree
Showing 27 changed files with 1,200 additions and 105 deletions.
6 changes: 3 additions & 3 deletions .travis.yml
Expand Up @@ -11,7 +11,7 @@ cache:
before_install:
- choco install maven
- RefreshEnv.cmd
- export MAVEN_OPTS='-Xmx6g -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
- export MAVEN_OPTS='-Xmx6g'
- export JAVA_HOME=`find "/c/Program Files/Java" -name jdk1.8.*`

addons:
Expand All @@ -24,6 +24,6 @@ env:
matrix:
include:
- name: JDK8 - Run all excluding model-intest
script: mvn install -B -DskipTests; mvn verify -DskipModelIntTest=true -DskipModelUnitTest=true
script: mvn install -T 1C -q -DskipTests; mvn verify -DskipModelIntTest=true -DskipModelUnitTest=true -Dfailsafe.rerunFailingTestsCount=2
- name: JDK8 - Run only model-intest
script: mvn install -B -DskipTests; mvn verify -pl :model-intest
script: mvn install -T 1C -q -DskipTests; mvn verify -pl :model-intest -Dfailsafe.rerunFailingTestsCount=2
Expand Up @@ -2702,7 +2702,7 @@ ProvisioningStatistics.MaxTime=Max
ProvisioningStatistics.MinTime=Min
ProvisioningStatistics.ObjectClass=Object class
ProvisioningStatistics.OtherFailure=Fail
ProvisioningStatistics.OtherSuccess=Script OK
ProvisioningStatistics.OtherSuccess=Other OK
ProvisioningStatistics.Resource=Resource
ProvisioningStatistics.ScriptFailure=Fail
ProvisioningStatistics.ScriptSuccess=Script OK
Expand Down
124 changes: 62 additions & 62 deletions gui/admin-gui/src/main/resources/localization/Midpoint_cs.properties

Large diffs are not rendered by default.

Expand Up @@ -3857,7 +3857,7 @@ AssignmentConflictPanel.undoAction=Cofnij
PageAssignmentConflicts.title=Konflikty przypisań
PageAssignmentConflicts.back=Wstecz
PageAssignmentConflicts.submit=Prześlij
PageAssignmentsList.conflictsWarning=Unable to calculate assignment conflicts due to authorization problem. Reason:
PageAssignmentsList.conflictsWarning=Nie można obliczyć konfliktów przypisać z powodu problemu z autoryzacją. Powód:
AbstractShoppingCartTabPanel.addAllButton=Dodaj wszystko
AbstractShoppingCartTabPanel.requestingForLabel=Wnioskuj dla
AbstractShoppingCartTabPanel.availableRelationsLabel=Dostępne relacje
Expand Down
Expand Up @@ -339,7 +339,7 @@ public void trim() {
* @return applicable property container definition
*/
public PrismContainerDefinition<C> getDefinition() {
return (PrismContainerDefinition<C>) definition;
return definition;
}

/**
Expand Down
Expand Up @@ -275,7 +275,7 @@ FileConfigurationType.name=Název
SouborConfigurationType.file=Soubor
FullTextSearchConfigurationType.enabled=Povolený
FullTextSearchConfigurationType.indexed=Indexovaný
FullTextSearchIndexedItemsConfigurationType.details=Full text search indexed items
FullTextSearchIndexedItemsConfigurationType.details=Fulltextové prohledávání indexovaných položek
FullTextSearchIndexedItemsConfigurationType.objectType=Typ objektu
FullTextSearchIndexedPoložkasConfigurationType.item=Položka
FocusType.activation=Aktivace
Expand Down
@@ -0,0 +1,82 @@
/*
* Copyright (c) 2010-2018 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.evolveum.midpoint.schema.performance;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.schema.MidPointPrismContextFactory;
import com.evolveum.midpoint.schema.constants.MidPointConstants;
import com.evolveum.midpoint.util.CheckedProducer;
import com.evolveum.midpoint.util.PrettyPrinter;
import com.evolveum.midpoint.util.exception.CommonException;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.jetbrains.annotations.NotNull;
import org.testng.annotations.BeforeSuite;
import org.xml.sax.SAXException;

import java.io.File;
import java.io.IOException;

import static com.evolveum.midpoint.prism.util.PrismTestUtil.getPrismContext;

/**
*
*/
public class AbstractSchemaPerformanceTest {

protected static final Trace LOGGER = TraceManager.getTrace(AbstractSchemaPerformanceTest.class);

public static final File TEST_DIR = new File("src/test/resources/performance");
public static final File USER_JACK_FILE = new File(TEST_DIR, "user-jack.xml");

public static final int DEFAULT_EXECUTION = 10000;
protected static final String NS_FOO = "http://www.example.com/foo";

@BeforeSuite
public void setup() throws SchemaException, SAXException, IOException {
PrettyPrinter.setDefaultNamespacePrefix(MidPointConstants.NS_MIDPOINT_PUBLIC_PREFIX);
PrismTestUtil.resetPrismContext(MidPointPrismContextFactory.FACTORY);
}

protected int measure(String label, CheckedProducer<?> producer) throws CommonException {
return measure(label, producer, DEFAULT_EXECUTION);
}

protected int measure(String label, CheckedProducer<?> producer, long executionTime) throws CommonException {
long until = System.currentTimeMillis() + executionTime;
int iteration = 0;
while (System.currentTimeMillis() < until) {
if (producer.get() == null) {
// just to make sure the result is used somehow (and not optimized away)
throw new IllegalStateException("null result from the producer");
}
iteration++;
}
String message = label + ": " + iteration + " iterations in " + executionTime + " milliseconds (" +
((double) executionTime) * 1000 / (double) iteration + " us per iteration)";
System.out.println(message);
LOGGER.info(message);
return iteration;
}

@NotNull
public PrismObject<UserType> getJack() throws SchemaException, IOException {
return getPrismContext().parserFor(USER_JACK_FILE).parse();
}
}
@@ -0,0 +1,225 @@
/*
* Copyright (c) 2010-2018 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.evolveum.midpoint.schema.performance;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.schema.SchemaRegistry;
import com.evolveum.midpoint.prism.xnode.RootXNode;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
import org.testng.annotations.Test;

import static com.evolveum.midpoint.prism.util.PrismTestUtil.getPrismContext;

/**
*
*
*/
public class TestBasicPerformance extends AbstractSchemaPerformanceTest {

@Test
public void test100FindNameProperty() throws Exception {
System.out.println("===[ test100FindNameProperty ]===");

PrismObject<UserType> jack = getJack();
measure("findProperty(name)", () -> jack.findProperty(UserType.F_NAME));
}

@Test
public void test110FindNameItem() throws Exception {
System.out.println("===[ test110FindNameItem ]===");

PrismObject<UserType> jack = getJack();
measure("findItem(name)", () -> jack.findItem(UserType.F_NAME));
}

@Test
public void test120FindExtensionProperty() throws Exception {
System.out.println("===[ test120FindExtensionProperty ]===");

PrismObject<UserType> jack = getJack();
ItemPath bar23 = ItemPath.create(UserType.F_EXTENSION, "bar23");
measure("findProperty(extension/bar23)", () -> jack.findProperty(bar23));
}

@Test
public void test130FindExtensionItem() throws Exception {
System.out.println("===[ test130FindExtensionItem ]===");

PrismObject<UserType> jack = getJack();
ItemPath bar23 = ItemPath.create(UserType.F_EXTENSION, "bar23");
measure("findItem(extension/bar23)", () -> jack.findItem(bar23));
}

@Test
public void test200SetName() throws Exception {
System.out.println("===[ test200SetName ]===");

PrismObject<UserType> jack = getJack();
measure("setName(name)", () -> {
jack.asObjectable().setName(PolyStringType.fromOrig("jack_" + Math.random()));
return true;
});
}

@Test
public void test210SetNameViaProperty() throws Exception {
System.out.println("===[ test210SetNameViaProperty ]===");

PrismObject<UserType> jack = getJack();
measure("findProperty(name).setRealValue", () -> {
jack.findProperty(UserType.F_NAME).setRealValue(PolyString.fromOrig("jack_" + Math.random()));
return true;
});
}

@Test
public void test215SetNameViaPropertyUsingExistingValue() throws Exception {
System.out.println("===[ test215SetNameViaPropertyUsingExistingValue ]===");

PrismObject<UserType> jack = getJack();
PolyString realValue = PolyString.fromOrig("jack_" + Math.random());
measure("findProperty(name).setRealValue(existing)", () -> {
jack.findProperty(UserType.F_NAME).setRealValue(realValue);
return true;
});
}

@Test
public void test220SetExtensionItemString() throws Exception {
System.out.println("===[ test220SetExtensionItemString ]===");

PrismObject<UserType> jack = getJack();
ItemPath bar23 = ItemPath.create(UserType.F_EXTENSION, "bar23");
measure("findProperty(extension/bar23).setRealValue", () -> {
jack.findProperty(bar23).setRealValue("jack_" + Math.random());
return 1;
});
}

@Test
public void test230SetExtensionItemPolyString() throws Exception {
System.out.println("===[ test230SetExtensionItemPolyString ]===");

PrismObject<UserType> jack = getJack();
ItemPath bar23 = ItemPath.create(UserType.F_EXTENSION, "bar23");
measure("findProperty(extension/bar23).setRealValue(polystring)", () -> {
jack.findProperty(bar23).setRealValue(PolyString.fromOrig("jack_" + Math.random()));
return 1;
});
}

@Test
public void test300Clone() throws Exception {
System.out.println("===[ test300Clone ]===");

PrismObject<UserType> jack = getJack();
measure("jack.clone", () -> jack.clone());
}

@Test
public void test310ParseXml() throws Exception {
System.out.println("===[ test310ParseXml ]===");

PrismObject<UserType> jack = getJack();
String string = getPrismContext().xmlSerializer().serialize(jack);
measure("parse XML (" + string.length() + " chars)", () -> getPrismContext().parserFor(string).xml().parse());
measure("parse XML to XNode (" + string.length() + " chars)", () -> getPrismContext().parserFor(string).xml().parseToXNode());
}

@Test
public void test320ParseJson() throws Exception {
System.out.println("===[ test320ParseJson ]===");

PrismObject<UserType> jack = getJack();
String string = getPrismContext().jsonSerializer().serialize(jack);
measure("parse JSON (" + string.length() + " chars)", () -> getPrismContext().parserFor(string).json().parse());
measure("parse JSON to XNode (" + string.length() + " chars)", () -> getPrismContext().parserFor(string).json().parseToXNode());
}

@Test
public void test330ParseYaml() throws Exception {
System.out.println("===[ test330ParseYaml ]===");

PrismObject<UserType> jack = getJack();
String string = getPrismContext().yamlSerializer().serialize(jack);
measure("parse YAML (" + string.length() + " chars)", () -> getPrismContext().parserFor(string).yaml().parse());
measure("parse YAML to XNode (" + string.length() + " chars)", () -> getPrismContext().parserFor(string).yaml().parse());
}

@Test
public void test340ParseXNode() throws Exception {
System.out.println("===[ test340ParseXNode ]===");

PrismObject<UserType> jack = getJack();
RootXNode xnode = getPrismContext().xnodeSerializer().serialize(jack);
measure("parse XNode", () -> getPrismContext().parserFor(xnode).parse());
}

@Test
public void test350SerializeToXml() throws Exception {
System.out.println("===[ test350SerializeToXml ]===");

PrismObject<UserType> jack = getJack();
measure("serialize to XML", () -> getPrismContext().xmlSerializer().serialize(jack));
}

@Test
public void test360SerializeToJson() throws Exception {
System.out.println("===[ test360SerializeToJson ]===");

PrismObject<UserType> jack = getJack();
measure("serialize to JSON", () -> getPrismContext().jsonSerializer().serialize(jack));
}

@Test
public void test370SerializeToYaml() throws Exception {
System.out.println("===[ test370SerializeToYaml ]===");

PrismObject<UserType> jack = getJack();
measure("serialize to YAML", () -> getPrismContext().yamlSerializer().serialize(jack));
}

@Test
public void test400FindNameDefinition() throws Exception {
System.out.println("===[ test400FindNameDefinition ]===");

SchemaRegistry schemaRegistry = getPrismContext().getSchemaRegistry();
PrismObjectDefinition<UserType> userDefinition = schemaRegistry.findObjectDefinitionByCompileTimeClass(UserType.class);
measure("userDefinition.findItemDefinition(UserType.F_NAME)", () -> userDefinition.findItemDefinition(UserType.F_NAME));
}

@Test
public void test410FindAdminGuiConfigurationDefinition() throws Exception {
System.out.println("===[ test410FindAdminGuiConfigurationDefinition ]===");

SchemaRegistry schemaRegistry = getPrismContext().getSchemaRegistry();
PrismObjectDefinition<UserType> userDefinition = schemaRegistry.findObjectDefinitionByCompileTimeClass(UserType.class);
measure("userDefinition.findItemDefinition(UserType.F_NAME)", () -> userDefinition.findItemDefinition(UserType.F_ADMIN_GUI_CONFIGURATION));
}

@Test
public void test420FindUserDefinition() throws Exception {
System.out.println("===[ test420FindUserDefinition ]===");

SchemaRegistry schemaRegistry = getPrismContext().getSchemaRegistry();
measure("schemaRegistry.findObjectDefinitionByCompileTimeClass(UserType.class)", () -> schemaRegistry.findObjectDefinitionByCompileTimeClass(UserType.class));
}

}

0 comments on commit 87c0bad

Please sign in to comment.