2023-02-06 18:57:55 +01:00
|
|
|
package org.gcube.informationsystem.discovery;
|
2019-10-30 09:57:14 +01:00
|
|
|
|
2021-01-19 15:32:19 +01:00
|
|
|
import java.util.Map;
|
2020-12-15 11:28:34 +01:00
|
|
|
|
|
|
|
import org.gcube.informationsystem.base.reference.AccessType;
|
|
|
|
import org.gcube.informationsystem.base.reference.Element;
|
2023-10-26 17:22:53 +02:00
|
|
|
import org.gcube.informationsystem.discovery.model.knowledge.Knowledge;
|
|
|
|
import org.gcube.informationsystem.discovery.model.knowledge.ModelKnowledge;
|
2023-02-06 18:03:47 +01:00
|
|
|
import org.gcube.informationsystem.tree.Tree;
|
2020-12-15 17:38:06 +01:00
|
|
|
import org.gcube.informationsystem.types.TypeMapper;
|
2020-12-15 11:28:34 +01:00
|
|
|
import org.gcube.informationsystem.types.reference.Type;
|
2021-01-20 15:53:00 +01:00
|
|
|
import org.gcube.informationsystem.types.reference.properties.PropertyDefinition;
|
2020-01-30 10:26:43 +01:00
|
|
|
import org.gcube.informationsystem.types.reference.properties.PropertyType;
|
2021-10-21 10:11:45 +02:00
|
|
|
import org.gcube.informationsystem.utils.Version;
|
2020-12-15 17:38:06 +01:00
|
|
|
import org.junit.Assert;
|
2019-10-30 09:57:14 +01:00
|
|
|
import org.junit.Test;
|
2020-12-15 17:38:06 +01:00
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
2019-10-30 09:57:14 +01:00
|
|
|
|
2021-01-19 15:32:19 +01:00
|
|
|
/**
|
|
|
|
* @author Luca Frosini (ISTI - CNR)
|
|
|
|
*/
|
2023-02-06 18:16:16 +01:00
|
|
|
public class DiscoveryTest {
|
2019-10-30 09:57:14 +01:00
|
|
|
|
2023-02-06 18:16:16 +01:00
|
|
|
private static final Logger logger = LoggerFactory.getLogger(DiscoveryTest.class);
|
2020-12-15 17:38:06 +01:00
|
|
|
|
2019-10-30 09:57:14 +01:00
|
|
|
@Test
|
2023-02-06 18:03:47 +01:00
|
|
|
public void testDiscovery() throws Exception {
|
2023-02-08 17:56:13 +01:00
|
|
|
ModelKnowledge modelKnowledge = Knowledge.getInstance().getAllKnowledge();
|
2023-02-06 18:03:47 +01:00
|
|
|
|
|
|
|
AccessType[] accessTypes = AccessType.getModelTypes();
|
|
|
|
for(AccessType accessType : accessTypes) {
|
|
|
|
Tree<Class<Element>> classesTree = modelKnowledge.getClassesTree(accessType);
|
|
|
|
logger.info("Classes tree for {} is\n{}", accessType.getName(), classesTree.toString());
|
|
|
|
}
|
2019-10-30 09:57:14 +01:00
|
|
|
}
|
2020-12-15 11:28:34 +01:00
|
|
|
|
2021-01-19 15:32:19 +01:00
|
|
|
private void checkType(Type type, Type expected) {
|
|
|
|
Assert.assertTrue(type.getName().compareTo(expected.getName())==0);
|
|
|
|
Assert.assertTrue(type.getVersion().compareTo(expected.getVersion())==0);
|
|
|
|
Assert.assertTrue(type.getDescription().compareTo(expected.getDescription())==0);
|
|
|
|
Assert.assertTrue(type.isAbstract() == expected.isAbstract());
|
|
|
|
|
2023-05-12 17:47:58 +02:00
|
|
|
Assert.assertTrue(type.getExtendedTypes().containsAll(expected.getExtendedTypes()));
|
|
|
|
Assert.assertTrue(expected.getExtendedTypes().containsAll(type.getExtendedTypes()));
|
2021-01-19 15:32:19 +01:00
|
|
|
|
|
|
|
|
2021-10-21 10:11:45 +02:00
|
|
|
Map<Version, String> typeChangelog = type.getChangelog();
|
|
|
|
Map<Version, String> typeManagedChangelog = expected.getChangelog();
|
2021-01-19 15:32:19 +01:00
|
|
|
|
|
|
|
Assert.assertTrue(typeChangelog.keySet().containsAll(typeManagedChangelog.keySet()));
|
|
|
|
Assert.assertTrue(typeManagedChangelog.keySet().containsAll(typeChangelog.keySet()));
|
|
|
|
|
2021-10-21 10:11:45 +02:00
|
|
|
for(Version typeVersion : typeChangelog.keySet()) {
|
2021-01-19 15:32:19 +01:00
|
|
|
Assert.assertTrue(typeChangelog.get(typeVersion).compareTo(typeManagedChangelog.get(typeVersion))==0);
|
|
|
|
}
|
|
|
|
|
|
|
|
if(type.getProperties()!=null || expected.getProperties()!=null) {
|
|
|
|
Assert.assertTrue(type.getProperties().containsAll(expected.getProperties()));
|
|
|
|
Assert.assertTrue(expected.getProperties().containsAll(type.getProperties()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testcheckType() throws Exception {
|
|
|
|
Class<? extends Element> clz = PropertyType.class;
|
|
|
|
Type type = TypeMapper.createTypeDefinition(clz);
|
|
|
|
Type expected = TypeMapper.createTypeDefinition(PropertyType.class);
|
|
|
|
checkType(type, expected);
|
|
|
|
|
|
|
|
String json = TypeMapper.serializeType(clz);
|
|
|
|
expected = TypeMapper.deserializeTypeDefinition(json);
|
|
|
|
|
|
|
|
checkType(type, expected);
|
|
|
|
}
|
|
|
|
|
2021-01-20 15:53:00 +01:00
|
|
|
@Test
|
|
|
|
public void testTypeDefinition() throws Exception {
|
|
|
|
Class<? extends Element> clz = PropertyType.class;
|
|
|
|
Type type = TypeMapper.createTypeDefinition(clz);
|
|
|
|
Assert.assertTrue(type.getName().compareTo(PropertyType.NAME)==0);
|
|
|
|
for(PropertyDefinition propertyDefinition : type.getProperties()) {
|
|
|
|
if(propertyDefinition.getName().compareTo(PropertyType.PROPERTIES_PROPERTY)==0) {
|
|
|
|
logger.debug("{}", propertyDefinition);
|
2023-04-26 21:39:57 +02:00
|
|
|
Assert.assertTrue(propertyDefinition.getPropertyType().compareTo("Set<PropertyDefinition>")==0);
|
2021-01-20 15:53:00 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
String typeDefinitionJsonString = TypeMapper.serializeTypeDefinition(type);
|
|
|
|
logger.debug(typeDefinitionJsonString);
|
|
|
|
}
|
2019-10-30 09:57:14 +01:00
|
|
|
}
|