Projects:External Integration Infrastructure/QA
Automatic Tests
The External integration infrastructure module includes a suite to test some features like:
- Entity mapping
- Entity exportation
- Query builders to find data pending to be synchronized
- Extensible parts: extend elements involved in a mapping process through modules
As part of the project, some new JUnit tests has been added within this folder.
They are divided in four packages:
- org.openbravo.service.external.integration.test._import. It includes tests to:
- Check that it is possible to define a ImportedItemDeletionPolicy
- Import a record using the SynchronizableBusinessObjectImporter class
- org.openbravo.service.external.integration.test.export. It checks that:
- It is possible to export a record using SynchronizableBusinessObjectExporter
- SynchronizableBusinessObjectExporter does not fail if there are not records to be exported.
- It is possible to exclude items from being exported by implementing the JavaPropertyMappingHandler.itemShouldBeExported method.
- It is possible to export a record that are QueryBaseOBObject and not a simple BaseOBObject.
- org.openbravo.service.external.integration.test.process. It tests that it is possible to use the HqlQueryBuilder to define placeholders that will be replaced by client filters, organization filters, etc.
- org.openbravo.service.external.integration.test.property_mappings. It checks the proper behaviour of all the property mapping types (direct, boolean, numeric, java-based, one-to-many, etc) both as part of the import and export process.
Performance Tests
The performance tests done for this projects have been focused on the testing of the mapping infrastructure itself. It has been measured:
- The time spent to generate a particular number of elements using a single thread. For these measurements, a mapping generator which includes different kind of mappings has been used. Here we have tested the improvements of keeping the mapping definition stored in cache.
- The time spent to generate an XML description of a set of mapped elements. To generate the XML representation of the elements, the TestXMLConverter class was used.
In addition, based on a real (mid-sized) client environment it has been tested:
- The complete process to find, map and export 50.000 business partners, using a custom extension of the ExternalSynchronizationProcess process which creates an asynchronous EDL process (with multiple threads) that generates a custom mapping for every business partner.
All the results are summarized in the following sheet.
Finally, the DB Pool Logging Utilities module has been used to find multiple connections per thread or slow queries during the usage of the External Integration infrastructure. It has not been found any issues in this regard.
Code review
https://docs.google.com/spreadsheets/d/1Euevdvu10VvDSnwLFjjZcwov9_TfT_f42PL8lVl8NcI/edit#gid=0