N°6458 Improve ItopDataTestCase tests speed

What was measured :
- 1'54 with previous code (always doing a reset in tearDown)
- 1'44 without any ResetMetaModelQueyCacheGetObject call (but 3 tests are failing)
- 1'44 with new optin mechanism + don't call Logoff if no current user logged
This commit is contained in:
Pierre Goiffon
2023-11-16 15:23:18 +01:00
parent 5b19593ede
commit 8540ec644a
2 changed files with 17 additions and 3 deletions

View File

@@ -60,6 +60,13 @@ abstract class ItopDataTestCase extends ItopTestCase
// For cleanup
private $aCreatedObjects = [];
/**
* @var bool When testing with silo, there are some cache we need to update on tearDown. Doing it all the time will cost too much, so it's opt-in !
* @see tearDown
* @see ResetMetaModelQueyCacheGetObject
*/
private $bIsUsingSilo = false;
/**
* @var string Default environment to use for test cases
*/
@@ -133,9 +140,13 @@ abstract class ItopDataTestCase extends ItopTestCase
CMDBObject::SetCurrentChange(null);
// Leave the place clean
\UserRights::Logoff();
$this->SetNonPublicStaticProperty(UserRights::class, 'm_aCacheUsers', []);
$this->ResetMetaModelQueyCacheGetObject();
if (UserRights::IsLoggedIn()) {
UserRights::Logoff();
}
$this->SetNonPublicStaticProperty(UserRights::class, 'm_aCacheUsers', []); // we could have cached rollbacked instances
if ($this->bIsUsingSilo) {
$this->ResetMetaModelQueyCacheGetObject();
}
parent::tearDown();
}

View File

@@ -304,6 +304,7 @@ class DBObjectTest extends ItopDataTestCase
public function testCheckExtKeysSiloOnAttributeExternalKey()
{
//--- Preparing data...
$this->bIsUsingSilo = true;
$oAlwaysTrueCallback = $this->GetAlwaysTrueCallback();
$oAlwaysFalseCallback = $this->GetAlwaysFalseCallback();
@@ -381,6 +382,7 @@ class DBObjectTest extends ItopDataTestCase
public function testCheckExtKeysOnAttributeLinkedSetIndirect()
{
//--- Preparing data...
$this->bIsUsingSilo = true;
/** @var Organization $oDemoOrg */
$oDemoOrg = MetaModel::GetObjectByName(Organization::class, 'Demo');
/** @var Person $oPersonOnItDepartmentOrg */
@@ -482,6 +484,7 @@ class DBObjectTest extends ItopDataTestCase
public function testCheckExtKeysSiloOnAttributeObjectKey()
{
//--- Preparing data...
$this->bIsUsingSilo = true;
/** @var Organization $oDemoOrg */
$oDemoOrg = MetaModel::GetObjectByName(Organization::class, 'Demo');
/** @var Person $oPersonOnItDepartmentOrg */