1
0
Fork 0

ci: run benchmarks in CI

ci-benchmarks
Felix Becker 2017-10-30 02:12:54 -07:00
parent ac6bce929f
commit 65e3b02fb7
2 changed files with 35 additions and 9 deletions

View File

@ -17,17 +17,30 @@ cache:
- $HOME/.composer/cache - $HOME/.composer/cache
- $HOME/.npm - $HOME/.npm
before_install:
- git config --replace-all remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
- git fetch --tags
install: install:
- composer install --prefer-dist --no-interaction - composer install --prefer-dist --no-interaction
script: script:
- vendor/bin/phpcs -n - vendor/bin/phpcs -n
- vendor/bin/phpunit --coverage-clover=coverage.xml - vendor/bin/phpunit --coverage-clover=coverage.xml
- |
php Performance.php >> $TRAVIS_BUILD_DIR/benchmark.txt
REMOTE_URL="$(git config --get remote.origin.url)"
cd $TRAVIS_BUILD_DIR/..
git clone --depth 1 --branch master ${REMOTE_URL} "${TRAVIS_REPO_SLUG}-bench"
cd "${TRAVIS_REPO_SLUG}-bench"
git submodule update --init
composer install --prefer-dist --no-interaction
php Performance.php >> $TRAVIS_BUILD_DIR/benchmark.txt
cd $TRAVIS_BUILD_DIR
- cat $TRAVIS_BUILD_DIR/benchmark.txt
after_success: after_success:
- bash <(curl -s https://codecov.io/bash) - bash <(curl -s https://codecov.io/bash)
- git config --replace-all remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
- git fetch --tags
- nvm install 8 && nvm use 8 - nvm install 8 && nvm use 8
- npm install - npm install
- npm run semantic-release - npm run semantic-release

View File

@ -11,10 +11,28 @@ use Microsoft\PhpParser;
use phpDocumentor\Reflection\DocBlockFactory; use phpDocumentor\Reflection\DocBlockFactory;
use RecursiveDirectoryIterator; use RecursiveDirectoryIterator;
use RecursiveIteratorIterator; use RecursiveIteratorIterator;
use Composer\{Factory, XdebugHandler};
// Convert all errors to ErrorExceptions
set_error_handler(function (int $severity, string $message, string $file, int $line) {
if (!(error_reporting() & $severity)) {
// This error code is not included in error_reporting (can also be caused by the @ operator)
return;
}
throw new \ErrorException($message, 0, $severity, $file, $line);
});
// Only write uncaught exceptions to STDERR, not STDOUT
set_exception_handler(function (\Throwable $e) {
fwrite(STDERR, (string)$e);
});
// If XDebug is enabled, restart without it
(new XdebugHandler(Factory::createOutput()))->check();
$totalSize = 0; $totalSize = 0;
$frameworks = ["drupal", "wordpress", "php-language-server", "tolerant-php-parser", "math-php", "symfony", "CodeIgniter", "cakephp"]; $frameworks = ["drupal", "wordpress", "php-language-server", "tolerant-php-parser", "math-php", "symfony", "codeigniter", "cakephp"];
foreach($frameworks as $framework) { foreach($frameworks as $framework) {
$iterator = new RecursiveDirectoryIterator(__DIR__ . "/validation/frameworks/$framework"); $iterator = new RecursiveDirectoryIterator(__DIR__ . "/validation/frameworks/$framework");
@ -37,9 +55,6 @@ foreach($frameworks as $framework) {
if (filesize($testCaseFile) > 10000) { if (filesize($testCaseFile) > 10000) {
continue; continue;
} }
if ($idx % 1000 === 0) {
echo "$idx\n";
}
$fileContents = file_get_contents($testCaseFile); $fileContents = file_get_contents($testCaseFile);
@ -58,8 +73,6 @@ foreach($frameworks as $framework) {
} }
} }
echo "------------------------------\n"; echo "Time " . str_pad($framework, 20) . number_format(microtime(true) - $start, 3) . "s" . PHP_EOL;
echo "Time [$framework]: " . (microtime(true) - $start) . PHP_EOL;
} }