Try to fix PHP/hhvm tests by working around an issue with SET NAMES #3220
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I think we are running into this problem:
facebook/hhvm#8111
We don't solve that problem, but we avoid it by specifying utf8 in a
different fashion. I also took the opportunity to use the "TFB-database"
hostname instead of the DBHOST environment variable because it's simpler
that way.
Here are the steps I took in a local TFB environment that make me think
we're running into the same issue as that GitHub issue:
Run toolset/run-tests.py --mode verify --test hvm, see that it fails
all tests with error messages that look like the application server
simply isn't there
Enable logging in PHP/hhvm/deploy/config.hdf (basically copy the
"Log" section over from config-debug.hdf), run the test again
Look at the log file it spit out, PHP/hhvm/error.log, notice messages
like this:
Core dumped: Segmentation fault
Stack trace in /tmp/stacktrace.28653.log
/tmp is cleared by the TFB toolset each run, so I comment out that
part of benchmarker.py that clears /tmp
Run the test again, look at the stacktrace file in /tmp, notice a
stack trace referring to our implementation code like this:
#0 PDO->__construct() called at [/home/techempower/FrameworkBenchmarks/frameworks/PHP/hhvm/once.php.inc:14]
About PHP #1 Benchmark->setup_db() called at [/home/techempower/FrameworkBenchmarks/frameworks/PHP/hhvm/once.php.inc:31]
Benchmarking tool suggestion. #2 Benchmark->bench_db() called at [/home/techempower/FrameworkBenchmarks/frameworks/PHP/hhvm/db.php:10]
Update and improve Compojure #3 main() called at [/home/techempower/FrameworkBenchmarks/frameworks/PHP/hhvm/db.php:13]
Google a bit, come across a GitHub issue talking about a similar
problem when they used "SET NAMES"
Comment the part of PHP/hhvm/once.php.inc that uses SET NAMES, run
test again and it worked, except for fortunes which failed because of
character encoding problems
Google for a different way to specify utf8 in the PDO constructor,
try it again, all tests pass locally