mirror of
https://we.phorge.it/source/phorge.git
synced 2025-03-31 06:28:13 +02:00
Add an owners package generator for Lipsum
Summary: Ref T12319. Allow `bin/lipsum generate` to generate owners packages. Test Plan: Generated ~4,000 packages with ~150,000 paths. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12319 Differential Revision: https://secure.phabricator.com/D17423
This commit is contained in:
parent
5cb4c76bef
commit
b9568646ac
4 changed files with 203 additions and 0 deletions
|
@ -3163,6 +3163,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorOwnersPackage' => 'applications/owners/storage/PhabricatorOwnersPackage.php',
|
'PhabricatorOwnersPackage' => 'applications/owners/storage/PhabricatorOwnersPackage.php',
|
||||||
'PhabricatorOwnersPackageAuditingTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageAuditingTransaction.php',
|
'PhabricatorOwnersPackageAuditingTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageAuditingTransaction.php',
|
||||||
'PhabricatorOwnersPackageAutoreviewTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageAutoreviewTransaction.php',
|
'PhabricatorOwnersPackageAutoreviewTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageAutoreviewTransaction.php',
|
||||||
|
'PhabricatorOwnersPackageContextFreeGrammar' => 'applications/owners/lipsum/PhabricatorOwnersPackageContextFreeGrammar.php',
|
||||||
'PhabricatorOwnersPackageDatasource' => 'applications/owners/typeahead/PhabricatorOwnersPackageDatasource.php',
|
'PhabricatorOwnersPackageDatasource' => 'applications/owners/typeahead/PhabricatorOwnersPackageDatasource.php',
|
||||||
'PhabricatorOwnersPackageDescriptionTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageDescriptionTransaction.php',
|
'PhabricatorOwnersPackageDescriptionTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageDescriptionTransaction.php',
|
||||||
'PhabricatorOwnersPackageDominionTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageDominionTransaction.php',
|
'PhabricatorOwnersPackageDominionTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageDominionTransaction.php',
|
||||||
|
@ -3181,11 +3182,13 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorOwnersPackageSearchEngine' => 'applications/owners/query/PhabricatorOwnersPackageSearchEngine.php',
|
'PhabricatorOwnersPackageSearchEngine' => 'applications/owners/query/PhabricatorOwnersPackageSearchEngine.php',
|
||||||
'PhabricatorOwnersPackageStatusTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageStatusTransaction.php',
|
'PhabricatorOwnersPackageStatusTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageStatusTransaction.php',
|
||||||
'PhabricatorOwnersPackageTestCase' => 'applications/owners/storage/__tests__/PhabricatorOwnersPackageTestCase.php',
|
'PhabricatorOwnersPackageTestCase' => 'applications/owners/storage/__tests__/PhabricatorOwnersPackageTestCase.php',
|
||||||
|
'PhabricatorOwnersPackageTestDataGenerator' => 'applications/owners/lipsum/PhabricatorOwnersPackageTestDataGenerator.php',
|
||||||
'PhabricatorOwnersPackageTransaction' => 'applications/owners/storage/PhabricatorOwnersPackageTransaction.php',
|
'PhabricatorOwnersPackageTransaction' => 'applications/owners/storage/PhabricatorOwnersPackageTransaction.php',
|
||||||
'PhabricatorOwnersPackageTransactionEditor' => 'applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php',
|
'PhabricatorOwnersPackageTransactionEditor' => 'applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php',
|
||||||
'PhabricatorOwnersPackageTransactionQuery' => 'applications/owners/query/PhabricatorOwnersPackageTransactionQuery.php',
|
'PhabricatorOwnersPackageTransactionQuery' => 'applications/owners/query/PhabricatorOwnersPackageTransactionQuery.php',
|
||||||
'PhabricatorOwnersPackageTransactionType' => 'applications/owners/xaction/PhabricatorOwnersPackageTransactionType.php',
|
'PhabricatorOwnersPackageTransactionType' => 'applications/owners/xaction/PhabricatorOwnersPackageTransactionType.php',
|
||||||
'PhabricatorOwnersPath' => 'applications/owners/storage/PhabricatorOwnersPath.php',
|
'PhabricatorOwnersPath' => 'applications/owners/storage/PhabricatorOwnersPath.php',
|
||||||
|
'PhabricatorOwnersPathContextFreeGrammar' => 'applications/owners/lipsum/PhabricatorOwnersPathContextFreeGrammar.php',
|
||||||
'PhabricatorOwnersPathsController' => 'applications/owners/controller/PhabricatorOwnersPathsController.php',
|
'PhabricatorOwnersPathsController' => 'applications/owners/controller/PhabricatorOwnersPathsController.php',
|
||||||
'PhabricatorOwnersPathsSearchEngineAttachment' => 'applications/owners/engineextension/PhabricatorOwnersPathsSearchEngineAttachment.php',
|
'PhabricatorOwnersPathsSearchEngineAttachment' => 'applications/owners/engineextension/PhabricatorOwnersPathsSearchEngineAttachment.php',
|
||||||
'PhabricatorOwnersSchemaSpec' => 'applications/owners/storage/PhabricatorOwnersSchemaSpec.php',
|
'PhabricatorOwnersSchemaSpec' => 'applications/owners/storage/PhabricatorOwnersSchemaSpec.php',
|
||||||
|
@ -8285,6 +8288,7 @@ phutil_register_library_map(array(
|
||||||
),
|
),
|
||||||
'PhabricatorOwnersPackageAuditingTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
'PhabricatorOwnersPackageAuditingTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
||||||
'PhabricatorOwnersPackageAutoreviewTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
'PhabricatorOwnersPackageAutoreviewTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
||||||
|
'PhabricatorOwnersPackageContextFreeGrammar' => 'PhutilContextFreeGrammar',
|
||||||
'PhabricatorOwnersPackageDatasource' => 'PhabricatorTypeaheadDatasource',
|
'PhabricatorOwnersPackageDatasource' => 'PhabricatorTypeaheadDatasource',
|
||||||
'PhabricatorOwnersPackageDescriptionTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
'PhabricatorOwnersPackageDescriptionTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
||||||
'PhabricatorOwnersPackageDominionTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
'PhabricatorOwnersPackageDominionTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
||||||
|
@ -8303,11 +8307,13 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorOwnersPackageSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'PhabricatorOwnersPackageSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
'PhabricatorOwnersPackageStatusTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
'PhabricatorOwnersPackageStatusTransaction' => 'PhabricatorOwnersPackageTransactionType',
|
||||||
'PhabricatorOwnersPackageTestCase' => 'PhabricatorTestCase',
|
'PhabricatorOwnersPackageTestCase' => 'PhabricatorTestCase',
|
||||||
|
'PhabricatorOwnersPackageTestDataGenerator' => 'PhabricatorTestDataGenerator',
|
||||||
'PhabricatorOwnersPackageTransaction' => 'PhabricatorModularTransaction',
|
'PhabricatorOwnersPackageTransaction' => 'PhabricatorModularTransaction',
|
||||||
'PhabricatorOwnersPackageTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
'PhabricatorOwnersPackageTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
'PhabricatorOwnersPackageTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'PhabricatorOwnersPackageTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
'PhabricatorOwnersPackageTransactionType' => 'PhabricatorModularTransactionType',
|
'PhabricatorOwnersPackageTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
'PhabricatorOwnersPath' => 'PhabricatorOwnersDAO',
|
'PhabricatorOwnersPath' => 'PhabricatorOwnersDAO',
|
||||||
|
'PhabricatorOwnersPathContextFreeGrammar' => 'PhutilContextFreeGrammar',
|
||||||
'PhabricatorOwnersPathsController' => 'PhabricatorOwnersController',
|
'PhabricatorOwnersPathsController' => 'PhabricatorOwnersController',
|
||||||
'PhabricatorOwnersPathsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
|
'PhabricatorOwnersPathsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
|
||||||
'PhabricatorOwnersSchemaSpec' => 'PhabricatorConfigSchemaSpec',
|
'PhabricatorOwnersSchemaSpec' => 'PhabricatorConfigSchemaSpec',
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorOwnersPackageContextFreeGrammar
|
||||||
|
extends PhutilContextFreeGrammar {
|
||||||
|
|
||||||
|
protected function getRules() {
|
||||||
|
return array(
|
||||||
|
'start' => array(
|
||||||
|
'[package]',
|
||||||
|
),
|
||||||
|
'package' => array(
|
||||||
|
'[adjective] [noun]',
|
||||||
|
'[adjective] [noun]',
|
||||||
|
'[adjective] [noun]',
|
||||||
|
'[adjective] [noun]',
|
||||||
|
'[adjective] [adjective] [noun]',
|
||||||
|
'[adjective] [noun] [noun]',
|
||||||
|
'[adjective] [adjective] [noun] [noun]',
|
||||||
|
),
|
||||||
|
'adjective' => array(
|
||||||
|
'Temporary',
|
||||||
|
'Backend',
|
||||||
|
'External',
|
||||||
|
'Emergency',
|
||||||
|
'Applied',
|
||||||
|
'Advanced',
|
||||||
|
'Experimental',
|
||||||
|
'Logging',
|
||||||
|
'Test',
|
||||||
|
'Network',
|
||||||
|
'Ephemeral',
|
||||||
|
'Clustered',
|
||||||
|
'Mining',
|
||||||
|
'Core',
|
||||||
|
'Remote',
|
||||||
|
),
|
||||||
|
'noun' => array(
|
||||||
|
'Support',
|
||||||
|
'Services',
|
||||||
|
'Infrastructure',
|
||||||
|
'Mail',
|
||||||
|
'Security',
|
||||||
|
'Application',
|
||||||
|
'Microservices',
|
||||||
|
'Monoservices',
|
||||||
|
'Megaservices',
|
||||||
|
'API',
|
||||||
|
'Storage',
|
||||||
|
'Records',
|
||||||
|
'Package',
|
||||||
|
'Directories',
|
||||||
|
'Library',
|
||||||
|
'Concern',
|
||||||
|
'Cluster',
|
||||||
|
'Engine',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,89 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorOwnersPackageTestDataGenerator
|
||||||
|
extends PhabricatorTestDataGenerator {
|
||||||
|
|
||||||
|
const GENERATORKEY = 'owners';
|
||||||
|
|
||||||
|
public function getGeneratorName() {
|
||||||
|
return pht('Owners Packages');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateObject() {
|
||||||
|
$author = $this->loadRandomUser();
|
||||||
|
|
||||||
|
$name = id(new PhabricatorOwnersPackageContextFreeGrammar())
|
||||||
|
->generate();
|
||||||
|
|
||||||
|
switch ($this->roll(1, 4)) {
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
// Most packages own only one path.
|
||||||
|
$path_count = 1;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
// Some packages own a few paths.
|
||||||
|
$path_count = mt_rand(1, 4);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
// Some packages own a very large number of paths.
|
||||||
|
$path_count = mt_rand(1, 1024);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$xactions = array();
|
||||||
|
|
||||||
|
$xactions[] = array(
|
||||||
|
'type' => 'name',
|
||||||
|
'value' => $name,
|
||||||
|
);
|
||||||
|
|
||||||
|
$xactions[] = array(
|
||||||
|
'type' => 'owners',
|
||||||
|
'value' => array($author->getPHID()),
|
||||||
|
);
|
||||||
|
|
||||||
|
$dominion = PhabricatorOwnersPackage::getDominionOptionsMap();
|
||||||
|
$dominion = array_rand($dominion);
|
||||||
|
$xactions[] = array(
|
||||||
|
'type' => 'dominion',
|
||||||
|
'value' => $dominion,
|
||||||
|
);
|
||||||
|
|
||||||
|
$paths = id(new PhabricatorOwnersPathContextFreeGrammar())
|
||||||
|
->generateSeveral($path_count, "\n");
|
||||||
|
$paths = explode("\n", $paths);
|
||||||
|
$paths = array_unique($paths);
|
||||||
|
|
||||||
|
$repository_phid = $this->loadOneRandom('PhabricatorRepository')
|
||||||
|
->getPHID();
|
||||||
|
|
||||||
|
$paths_value = array();
|
||||||
|
foreach ($paths as $path) {
|
||||||
|
$paths_value[] = array(
|
||||||
|
'repositoryPHID' => $repository_phid,
|
||||||
|
'path' => $path,
|
||||||
|
|
||||||
|
// Excluded paths are relatively rare.
|
||||||
|
'excluded' => (mt_rand(1, 10) == 1),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$xactions[] = array(
|
||||||
|
'type' => 'paths.set',
|
||||||
|
'value' => $paths_value,
|
||||||
|
);
|
||||||
|
|
||||||
|
$params = array(
|
||||||
|
'transactions' => $xactions,
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = id(new ConduitCall('owners.edit', $params))
|
||||||
|
->setUser($author)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
return $result['object']['phid'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorOwnersPathContextFreeGrammar
|
||||||
|
extends PhutilContextFreeGrammar {
|
||||||
|
|
||||||
|
protected function getRules() {
|
||||||
|
return array(
|
||||||
|
'start' => array(
|
||||||
|
'[path]',
|
||||||
|
),
|
||||||
|
'path' => array(
|
||||||
|
'/',
|
||||||
|
'/[directories]',
|
||||||
|
),
|
||||||
|
'directories' => array(
|
||||||
|
'[directory-name]',
|
||||||
|
'[directories][directory-name]',
|
||||||
|
),
|
||||||
|
'directory-name' => array(
|
||||||
|
'[directory-part]/',
|
||||||
|
),
|
||||||
|
'directory-part' => array(
|
||||||
|
'src',
|
||||||
|
'doc',
|
||||||
|
'bin',
|
||||||
|
'tmp',
|
||||||
|
'log',
|
||||||
|
'bak',
|
||||||
|
'applications',
|
||||||
|
'var',
|
||||||
|
'home',
|
||||||
|
'user',
|
||||||
|
'lib',
|
||||||
|
'tests',
|
||||||
|
'webroot',
|
||||||
|
'externals',
|
||||||
|
'third-party',
|
||||||
|
'libraries',
|
||||||
|
'config',
|
||||||
|
'media',
|
||||||
|
'resources',
|
||||||
|
'support',
|
||||||
|
'scripts',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue