Commit: cab0d8d13ec2b3ffebef809888dee15e5e502328 Author: Matt Ficken <v-maf...@microsoft.com> Mon, 18 Nov 2013 10:44:46 -0800 Parents: dbe6f3095d094e9ecbdc83308d7b43640e70911f Branches: master
Link: http://git.php.net/?p=pftt2.git;a=commitdiff;h=cab0d8d13ec2b3ffebef809888dee15e5e502328 Log: scenario updates Former-commit-id: 8910df089068047d9e73934439ea085898a09312 Changed paths: M src/com/mostc/pftt/scenario/BuiltinWebServerScenario.java M src/com/mostc/pftt/scenario/CLIScenario.java M src/com/mostc/pftt/scenario/MSSQLScenario.java M src/com/mostc/pftt/scenario/OpcacheNoStartupProcessScenario.java M src/com/mostc/pftt/scenario/OpcacheScenario.java M src/com/mostc/pftt/scenario/ProductionWebServerScenario.java M src/com/mostc/pftt/scenario/SAPIScenario.java M src/com/mostc/pftt/scenario/WebServerScenario.java M src/com/mostc/pftt/scenario/WinCacheUScenario.java M src/com/mostc/pftt/scenario/WinCacheU_FileAndUserCacheScenario.java M src/com/mostc/pftt/scenario/WinCacheU_OnlyFileCacheScenario.java M src/com/mostc/pftt/scenario/WinCacheU_OnlyUserCacheScenario.java M src/com/mostc/pftt/util/DllVersion.java
diff --git a/src/com/mostc/pftt/scenario/BuiltinWebServerScenario.java b/src/com/mostc/pftt/scenario/BuiltinWebServerScenario.java index 198c822..d6837f7 100644 --- a/src/com/mostc/pftt/scenario/BuiltinWebServerScenario.java +++ b/src/com/mostc/pftt/scenario/BuiltinWebServerScenario.java @@ -28,6 +28,7 @@ import com.mostc.pftt.runner.BuiltinWebHttpPhpUnitTestCaseRunner; import com.mostc.pftt.runner.BuiltinWebHttpPhptTestCaseRunner; import com.mostc.pftt.runner.LocalPhpUnitTestPackRunner.PhpUnitThread; import com.mostc.pftt.runner.LocalPhptTestPackRunner.PhptThread; +import com.mostc.pftt.runner.PhptTestPreparer.PreparedPhptTestCase; /** Tests PHP using PHP's builtin web server. * @@ -99,6 +100,13 @@ public class BuiltinWebServerScenario extends WebServerScenario { } public static final Trie BUILTIN_WEB_EXPECTED_CRASHES = PhptTestCase.createNamed( + "ext/mbstring/tests/mb_output_handler_euc_jp.phpt", + "ext/mbstring/tests/mb_output_handler_pattern-04.phpt", + "ext/mbstring/tests/mb_output_handler_pattern-10.phpt", + "ext/mbstring/tests/mb_output_handler_runtime_ini_alteration-02.phpt", + "ext/tidy/tests/020.phpt", + "ext/zlib/tests/ob_004.phpt", + "ext/zlib/tests/ob_003.phpt", "ext/standard/tests/network/udp6loop.phpt", "ext/standard/tests/serialize/serialization_objects_003.phpt", "tests/basic/rfc1867_anonymous_upload.phpt", @@ -270,8 +278,8 @@ public class BuiltinWebServerScenario extends WebServerScenario { } @Override - public AbstractPhptTestCaseRunner createPhptTestCaseRunner(PhptThread thread, TestCaseGroupKey group_key, PhptTestCase test_case, ConsoleManager cm, ITestResultReceiver twriter, AHost host, ScenarioSetSetup scenario_set_setup, PhpBuild build, PhptSourceTestPack src_test_pack, PhptActiveTestPack active_test_pack, boolean xdebug, boolean debugger_attached) { - return new BuiltinWebHttpPhptTestCaseRunner(xdebug, this, group_key.getPhpIni(), group_key.getEnv(), params, httpproc, httpexecutor, smgr, thread.getThreadWebServerInstance(), thread, test_case, cm, twriter, host, scenario_set_setup, build, src_test_pack, active_test_pack); + public AbstractPhptTestCaseRunner createPhptTestCaseRunner(PhptThread thread, TestCaseGroupKey group_key, PreparedPhptTestCase prep, ConsoleManager cm, ITestResultReceiver twriter, AHost host, ScenarioSetSetup scenario_set_setup, PhpBuild build, PhptSourceTestPack src_test_pack, PhptActiveTestPack active_test_pack, boolean xdebug, boolean debugger_attached) { + return new BuiltinWebHttpPhptTestCaseRunner(xdebug, this, group_key.getPhpIni(), group_key.getEnv(), params, httpproc, httpexecutor, smgr, thread.getThreadWebServerInstance(), thread, prep, cm, twriter, host, scenario_set_setup, build, src_test_pack, active_test_pack); } diff --git a/src/com/mostc/pftt/scenario/CLIScenario.java b/src/com/mostc/pftt/scenario/CLIScenario.java index 89046c7..9cbcab9 100644 --- a/src/com/mostc/pftt/scenario/CLIScenario.java +++ b/src/com/mostc/pftt/scenario/CLIScenario.java @@ -29,6 +29,7 @@ import com.mostc.pftt.runner.CliPhpUnitTestCaseRunner; import com.mostc.pftt.runner.CliPhptTestCaseRunner; import com.mostc.pftt.runner.LocalPhpUnitTestPackRunner.PhpUnitThread; import com.mostc.pftt.runner.LocalPhptTestPackRunner.PhptThread; +import com.mostc.pftt.runner.PhptTestPreparer.PreparedPhptTestCase; /** Tests the Command Line Interface(CLI) for running PHP. * @@ -50,15 +51,15 @@ public class CliScenario extends SAPIScenario { @Override public AbstractPhptTestCaseRunner createPhptTestCaseRunner( - PhptThread thread, TestCaseGroupKey group_key, PhptTestCase test_case, + PhptThread thread, TestCaseGroupKey group_key, PreparedPhptTestCase prep, ConsoleManager cm, ITestResultReceiver twriter, AHost host, ScenarioSetSetup scenario_set_setup, PhpBuild build, PhptSourceTestPack src_test_pack, PhptActiveTestPack active_test_pack, boolean xdebug, boolean debugger_attached) { - return new CliPhptTestCaseRunner(xdebug, this, ((CliTestCaseGroupKey)group_key).getCliSAPIInstance(), group_key.getPhpIni(), thread, test_case, cm, twriter, host, scenario_set_setup, build, src_test_pack, active_test_pack, debugger_attached); + return new CliPhptTestCaseRunner(xdebug, this, ((CliTestCaseGroupKey)group_key).getCliSAPIInstance(), group_key.getPhpIni(), thread, prep, cm, twriter, host, scenario_set_setup, build, src_test_pack, active_test_pack, debugger_attached); } @Override public int getApprovedInitialThreadPoolSize(AHost host, int threads) { - return host.getCPUCount() * 2; + return host.getCPUCount() * 3; } @Override @@ -117,7 +118,7 @@ public class CliScenario extends SAPIScenario { // -for WEB SERVERS, have to set ENV vars on each web server instance // @see CliPhptTestCaseRunner#prepare // - CliSAPIInstance sapi = new CliSAPIInstance(host, build, ini); + CliSAPIInstance sapi = new CliSAPIInstance(cm, host, build, ini); return new CliTestCaseGroupKey(sapi, ini, null); } else if (group_key!=null && group_key.getPhpIni().isDefault()) { @@ -127,7 +128,7 @@ public class CliScenario extends SAPIScenario { filter.prepareIni(cm, ini); - CliSAPIInstance sapi = new CliSAPIInstance(host, build, ini); + CliSAPIInstance sapi = new CliSAPIInstance(cm, host, build, ini); return new CliTestCaseGroupKey(sapi, ini, null); } @@ -270,7 +271,17 @@ public class CliScenario extends SAPIScenario { "ext/standard/tests/file/fgets_socket_variation2.phpt", "ext/standard/tests/network/tcp4loop.phpt", "zend/tests/multibyte/multibyte_encoding_003.phpt", - "zend/tests/multibyte/multibyte_encoding_002.phpt" + "zend/tests/multibyte/multibyte_encoding_002.phpt", + "ext/pdo_sqlite/tests/bug33841.phpt", + "ext/pdo_sqlite/tests/bug46139.phpt", + "ext/pdo_sqlite/tests/bug52487.phpt", + "ext/pdo_pgsql/tests/bug64953.phpt", + "ext/pdo_pgsql/tests/bug_33876.phpt", + "ext/pdo_pgsql/tests/copy_from.phpt", + "ext/pdo_pgsql/tests/copy_to.phpt", + "ext/pdo_pgsql/tests/is_in_transaction.phpt", + "ext/pdo_pgsql/tests/bug48764.phpt", + "ext/pdo_pgsql/tests/large_objects.phpt" ); @Override public boolean willSkip(ConsoleManager cm, ITestResultReceiver twriter, AHost host, ScenarioSetSetup setup, ESAPIType type, PhpBuild build, PhptSourceTestPack src_test_pack, PhptTestCase test_case) throws Exception { diff --git a/src/com/mostc/pftt/scenario/MSSQLScenario.java b/src/com/mostc/pftt/scenario/MSSQLScenario.java index e47512b..4a76595 100644 --- a/src/com/mostc/pftt/scenario/MSSQLScenario.java +++ b/src/com/mostc/pftt/scenario/MSSQLScenario.java @@ -14,6 +14,7 @@ import com.mostc.pftt.model.core.PhpBuild; import com.mostc.pftt.model.core.PhpIni; import com.mostc.pftt.results.ConsoleManager; import com.mostc.pftt.results.EPrintType; +import com.mostc.pftt.util.DllVersion; /** Tests the mssql and pdo_mssql extensions against a Microsoft SQL Server. (NOT IMPLEMENTED) * @@ -24,6 +25,17 @@ import com.mostc.pftt.results.EPrintType; public class MSSQLScenario extends DatabaseScenario { public static final int DEFAULT_MSSQL_PORT = 1433; protected final String host_address; + protected DllVersion set_dll; + + public MSSQLScenario(DllVersion dll, AHost host, String default_username, String default_password) { + this(EMSSQLVersion.DRIVER11, host, default_username, default_password); + this.set_dll = dll; + } + + public MSSQLScenario(DllVersion dll, String host_address, String default_username, String default_password) { + this(EMSSQLVersion.DRIVER11, host_address, default_username, default_password); + this.set_dll = dll; + } public MSSQLScenario(EMSSQLVersion version, AHost host, String default_username, String default_password) { super(version, host, default_username, default_password); @@ -115,7 +127,7 @@ public class MSSQLScenario extends DatabaseScenario { String base_dir = host.getPfttCacheDir()+"/dep/MSSQL/"; String dll1 = ((EMSSQLVersion)version).getPhpPdoDllName(build.getVersionBranch(cm, host), build.getBuildType(host), base_dir); - String dll2 = ((EMSSQLVersion)version).getPhpDllName(build.getVersionBranch(cm, host), build.getBuildType(host), base_dir); + String dll2 = set_dll!=null?set_dll.getPath():((EMSSQLVersion)version).getPhpDllName(build.getVersionBranch(cm, host), build.getBuildType(host), base_dir); host.copy(host.joinIntoOnePath(base_dir, dll1), build.getDefaultExtensionDir()+"/php_pdo_sqlsrv.dll"); host.copy(host.joinIntoOnePath(base_dir, dll2), build.getDefaultExtensionDir()+"/php_sqlsrv.dll"); diff --git a/src/com/mostc/pftt/scenario/OpcacheNoStartupProcessScenario.java b/src/com/mostc/pftt/scenario/OpcacheNoStartupProcessScenario.java index 18da605..b72ba99 100644 --- a/src/com/mostc/pftt/scenario/OpcacheNoStartupProcessScenario.java +++ b/src/com/mostc/pftt/scenario/OpcacheNoStartupProcessScenario.java @@ -7,6 +7,14 @@ import com.mostc.pftt.results.ConsoleManager; import com.mostc.pftt.util.DllVersion; public class OpcacheNoStartupProcessScenario extends OpcacheScenario { + + public OpcacheNoStartupProcessScenario() { + super(); + } + + public OpcacheNoStartupProcessScenario(DllVersion dll) { + super(dll); + } @Override protected boolean shouldUseStartupProcess(Host host) { diff --git a/src/com/mostc/pftt/scenario/OpcacheScenario.java b/src/com/mostc/pftt/scenario/OpcacheScenario.java index 8bc7c90..852623a 100644 --- a/src/com/mostc/pftt/scenario/OpcacheScenario.java +++ b/src/com/mostc/pftt/scenario/OpcacheScenario.java @@ -33,23 +33,36 @@ import com.mostc.pftt.util.DllVersion; */ public class OpcacheScenario extends CodeCacheScenario { + protected final DllVersion set_dll; + + public OpcacheScenario() { + this.set_dll = null; + } + + public OpcacheScenario(DllVersion dll) { + this.set_dll = dll; + } @Override public void addToDebugPath(ConsoleManager cm, AHost host, PhpBuild build, Collection<String> debug_path) { - try { - switch(build.getVersionBranch(cm, host)) { - case PHP_5_3: - debug_path.add( build.isNTS(host) ? getDllPath53NTS(host).getDebugPath() : getDllPath53TS(host).getDebugPath() ); - break; - case PHP_5_4: - debug_path.add( build.isNTS(host) ? getDllPath54NTS(host).getDebugPath() : getDllPath54TS(host).getDebugPath() ); - break; - default: - // OpCache is included with core 5.5+, so the core debug-pack will be enough (don't need to do anything here) - break; + if (this.set_dll!=null) { + debug_path.add(set_dll.getDebugPath()); + } else { + try { + switch(build.getVersionBranch(cm, host)) { + case PHP_5_3: + debug_path.add( build.isNTS(host) ? getDllPath53NTS(host).getDebugPath() : getDllPath53TS(host).getDebugPath() ); + break; + case PHP_5_4: + debug_path.add( build.isNTS(host) ? getDllPath54NTS(host).getDebugPath() : getDllPath54TS(host).getDebugPath() ); + break; + default: + // OpCache is included with core 5.5+, so the core debug-pack will be enough (don't need to do anything here) + break; + } + } catch ( Exception ex ) { + ex.printStackTrace(); } - } catch ( Exception ex ) { - ex.printStackTrace(); } } @@ -117,22 +130,22 @@ public class OpcacheScenario extends CodeCacheScenario { @Overridable protected DllVersion getDllPath53TS(Host host) { - return new DllVersion(host.getPfttCacheDir()+"/dep/opcache/php_opcache-7.0.2-5.3-ts-vc9-x86", "php_opcache.dll", "php_opcache.pdb", "7.0.2"); + return new DllVersion(host.getPfttCacheDir()+"/dep/opcache/php_opcache-7.0.2-5.3-ts-vc9-x86", "php_opcache.dll", "7.0.2"); } @Overridable protected DllVersion getDllPath53NTS(Host host) { - return new DllVersion(host.getPfttCacheDir()+"/dep/opcache/php_opcache-7.0.2-5.3-nts-vc9-x86", "php_opcache.dll", "php_opcache.pdb", "7.0.2"); + return new DllVersion(host.getPfttCacheDir()+"/dep/opcache/php_opcache-7.0.2-5.3-nts-vc9-x86", "php_opcache.dll", "7.0.2"); } @Overridable protected DllVersion getDllPath54TS(Host host) { - return new DllVersion(host.getPfttCacheDir()+"/dep/opcache/php_opcache-7.0.2-5.4-ts-vc9-x86", "php_opcache.dll", "php_opcache.pdb", "7.0.2"); + return new DllVersion(host.getPfttCacheDir()+"/dep/opcache/php_opcache-7.0.2-5.4-ts-vc9-x86", "php_opcache.dll", "7.0.2"); } @Overridable protected DllVersion getDllPath54NTS(Host host) { - return new DllVersion(host.getPfttCacheDir()+"/dep/opcache/php_opcache-7.0.2-5.4-nts-vc9-x86", "php_opcache.dll", "php_opcache.pdb", "7.0.2"); + return new DllVersion(host.getPfttCacheDir()+"/dep/opcache/php_opcache-7.0.2-5.4-nts-vc9-x86", "php_opcache.dll", "7.0.2"); } public DllVersion getDllPath(ConsoleManager cm, Host host, PhpBuild build) { @@ -140,6 +153,9 @@ public class OpcacheScenario extends CodeCacheScenario { } protected DllVersion getDllPath(ConsoleManager cm, Host host, PhpBuild build, boolean rename) { + if (this.set_dll!=null) + return this.set_dll; + DllVersion version = null; try { switch(build.getVersionBranch(cm, host)) { @@ -264,7 +280,7 @@ public class OpcacheScenario extends CodeCacheScenario { protected OpcacheSetup createOpcacheSetup(DllVersion dll, Host host, ConsoleManager cm, PhpBuild build) throws Exception { return new OpcacheSetup(dll, host, cm, build); } - + @Override public OpcacheSetup setup(ConsoleManager cm, Host host, PhpBuild build, ScenarioSet scenario_set, EScenarioSetPermutationLayer layer) { if (host.isWindows()) { diff --git a/src/com/mostc/pftt/scenario/ProductionWebServerScenario.java b/src/com/mostc/pftt/scenario/ProductionWebServerScenario.java index 3ce05eb..d509bdd 100644 --- a/src/com/mostc/pftt/scenario/ProductionWebServerScenario.java +++ b/src/com/mostc/pftt/scenario/ProductionWebServerScenario.java @@ -21,12 +21,12 @@ public abstract class ProductionWebServerScenario extends WebServerScenario { @Override public int getApprovedInitialThreadPoolSize(AHost host, int threads) { - return host.getCPUCount() * 3; + return host.getCPUCount() * 2; } @Override public int getApprovedMaximumThreadPoolSize(AHost host, int threads) { - return host.getCPUCount() * 4; + return host.getCPUCount() * 3; } @Override diff --git a/src/com/mostc/pftt/scenario/SAPIScenario.java b/src/com/mostc/pftt/scenario/SAPIScenario.java index d1ff963..b5ec0e5 100644 --- a/src/com/mostc/pftt/scenario/SAPIScenario.java +++ b/src/com/mostc/pftt/scenario/SAPIScenario.java @@ -24,6 +24,7 @@ import com.mostc.pftt.runner.AbstractPhpUnitTestCaseRunner; import com.mostc.pftt.runner.AbstractPhptTestCaseRunner; import com.mostc.pftt.runner.LocalPhpUnitTestPackRunner.PhpUnitThread; import com.mostc.pftt.runner.LocalPhptTestPackRunner.PhptThread; +import com.mostc.pftt.runner.PhptTestPreparer.PreparedPhptTestCase; /** Different scenarios for how PHP can be run * @@ -72,7 +73,7 @@ public abstract class SAPIScenario extends AbstractSerialScenario { * * @param thread * @param group_key - * @param test_case + * @param prep * @param cm * @param twriter * @param host @@ -84,7 +85,7 @@ public abstract class SAPIScenario extends AbstractSerialScenario { * @param debugger_attached TODO * @return */ - public abstract AbstractPhptTestCaseRunner createPhptTestCaseRunner(PhptThread thread, TestCaseGroupKey group_key, PhptTestCase test_case, ConsoleManager cm, ITestResultReceiver twriter, AHost host, ScenarioSetSetup scenario_set_setup, PhpBuild build, PhptSourceTestPack src_test_pack, PhptActiveTestPack active_test_pack, boolean xdebug, boolean debugger_attached); + public abstract AbstractPhptTestCaseRunner createPhptTestCaseRunner(PhptThread thread, TestCaseGroupKey group_key, PreparedPhptTestCase prep, ConsoleManager cm, ITestResultReceiver twriter, AHost host, ScenarioSetSetup scenario_set_setup, PhpBuild build, PhptSourceTestPack src_test_pack, PhptActiveTestPack active_test_pack, boolean xdebug, boolean debugger_attached); public void close(ConsoleManager cm, boolean debug) { @@ -206,7 +207,58 @@ public abstract class SAPIScenario extends AbstractSerialScenario { "ext/standard/tests/strings/htmlentities05.phpt", "ext/wddx/tests/004.phpt", "ext/wddx/tests/005.phpt", - "ext/zlib/tests/bug65391.phpt" + "ext/zlib/tests/bug65391.phpt", + "ext/standard/tests/array/compact.phpt", + "ext/standard/tests/file/bug45181.phpt", + "ext/standard/tests/file/file_get_contents_error002.phpt", + "ext/standard/tests/file/glob_variation2.phpt", + "ext/standard/tests/file/readfile_variation3.phpt", + "ext/standard/tests/file/rename_variation9.phpt", + "ext/standard/tests/network/gethostbyname_error005.phpt", + "ext/standard/tests/serialize/bug64146.phpt", + "ext/standard/tests/strings/crypt_chars.phpt", + "ext/standard/tests/strings/quoted_printable_encode_002.phpt", + "ext/xsl/tests/bug26384.phpt", + "ext/xsl/tests/xslt009.phpt", + "ext/xsl/tests/xslt010.phpt", + "tests/classes/factory_and_singleton_002.phpt", + "tests/func/005a.phpt", + "tests/output/bug60321.phpt", + "tests/output/ob_get_status.phpt", + "zend/tests/bug39542.phpt", + "zend/tests/exception_009.phpt", + "zend/tests/multibyte/multibyte_encoding_001.phpt", + "zend/tests/multibyte/multibyte_encoding_005.phpt", + "zend/tests/ns_086.phpt", + "ext/curl/tests/curl_copy_handle_basic_008.phpt", + "ext/curl/tests/curl_curlopt_readdata.phpt", + "ext/curl/tests/curl_writeheader_callback.phpt", + "ext/date/tests/bug28024.phpt", + "ext/date/tests/bug32086.phpt", + "ext/date/tests/bug35425.phpt", + "ext/date/tests/date_default_timezone_get-3.phpt", + "ext/dom/tests/domdocument_load_variation4.phpt", + "ext/dom/tests/domdocument_loadxml_variation4.phpt", + "ext/filter/tests/bug52209.phpt", + "ext/gettext/tests/gettext_basic.phpt", + "ext/intl/tests/timezone_getdisplayname_variant3.phpt", + "ext/mbstring/tests/mb_http_input.phpt", + "ext/pdo_sqlite/tests/bug_63916.phpt", + "ext/sqlite3/tests/bug63921-64bit.phpt", + "ext/standard/tests/general_functions/002.phpt", + "ext/standard/tests/general_functions/006.phpt", + "ext/standard/tests/strings/htmlentities.phpt", + "ext/zlib/tests/bug55544.phpt", + "ext/zlib/tests/bug_52944-darwin.phpt", + "ext/zlib/tests/ob_001.phpt", + "sapi/cli/tests/bug65066_100.phpt", + "ext/date/tests/bug32555.phpt", + "ext/standard/tests/strings/fprintf_variation_007.phpt", + "ext/reflection/tests/005.phpt", + "zend/tests/bug64720.phpt", + "ext/zip/tests/bug40228.phpt", + "ext/zip/tests/bug7214.phpt", + "zend/tests/bug40236.phpt" ); public static Trie NON_WINDOWS_EXTS = PhptTestCase.createExtensions("sysvsem", "sysvmsg", "sysvshm", "gettext", "exif", "readline", "posix", "shmop"); public static Trie SCENARIO_EXTS = PhptTestCase.createExtensions("dba", "sybase", "snmp", "interbase", "ldap", "imap", "oci8", "pcntl", "soap", "xmlrpc", "pdo", "odbc", "pdo_mssql", "mssql", "pdo_pgsql", "sybase_ct", "ftp", "curl"); diff --git a/src/com/mostc/pftt/scenario/WebServerScenario.java b/src/com/mostc/pftt/scenario/WebServerScenario.java index 6391e3c..f086e26 100644 --- a/src/com/mostc/pftt/scenario/WebServerScenario.java +++ b/src/com/mostc/pftt/scenario/WebServerScenario.java @@ -43,6 +43,7 @@ import com.mostc.pftt.runner.HttpPhpUnitTestCaseRunner; import com.mostc.pftt.runner.HttpPhptTestCaseRunner; import com.mostc.pftt.runner.LocalPhpUnitTestPackRunner.PhpUnitThread; import com.mostc.pftt.runner.LocalPhptTestPackRunner.PhptThread; +import com.mostc.pftt.runner.PhptTestPreparer.PreparedPhptTestCase; /** scenarios for testing PHP while its running under a web server * @@ -101,8 +102,8 @@ public abstract class WebServerScenario extends SAPIScenario { } @Override - public AbstractPhptTestCaseRunner createPhptTestCaseRunner(PhptThread thread, TestCaseGroupKey group_key, PhptTestCase test_case, ConsoleManager cm, ITestResultReceiver twriter, AHost host, ScenarioSetSetup scenario_set_setup, PhpBuild build, PhptSourceTestPack src_test_pack, PhptActiveTestPack active_test_pack, boolean xdebug, boolean debugger_attached) { - return new HttpPhptTestCaseRunner(xdebug, this, group_key.getPhpIni(), group_key.getEnv(), params, httpproc, httpexecutor, smgr, thread.getThreadWebServerInstance(), thread, test_case, cm, twriter, host, scenario_set_setup, build, src_test_pack, active_test_pack); + public AbstractPhptTestCaseRunner createPhptTestCaseRunner(PhptThread thread, TestCaseGroupKey group_key, PreparedPhptTestCase prep, ConsoleManager cm, ITestResultReceiver twriter, AHost host, ScenarioSetSetup scenario_set_setup, PhpBuild build, PhptSourceTestPack src_test_pack, PhptActiveTestPack active_test_pack, boolean xdebug, boolean debugger_attached) { + return new HttpPhptTestCaseRunner(xdebug, this, group_key.getPhpIni(), group_key.getEnv(), params, httpproc, httpexecutor, smgr, thread.getThreadWebServerInstance(), thread, prep, cm, twriter, host, scenario_set_setup, build, src_test_pack, active_test_pack); } @Override diff --git a/src/com/mostc/pftt/scenario/WinCacheUScenario.java b/src/com/mostc/pftt/scenario/WinCacheUScenario.java index 255c71d..9a5e1cb 100644 --- a/src/com/mostc/pftt/scenario/WinCacheUScenario.java +++ b/src/com/mostc/pftt/scenario/WinCacheUScenario.java @@ -10,6 +10,7 @@ import com.mostc.pftt.model.core.PhpBuild; import com.mostc.pftt.model.core.PhpIni; import com.mostc.pftt.results.ConsoleManager; import com.mostc.pftt.results.EPrintType; +import com.mostc.pftt.util.DllVersion; /** Using only the user, object and file caching components of WinCache, NOT the code caching. * Can be used with Opcache just like APCU (but its designed for Windows, so for CLI and IIS @@ -21,24 +22,37 @@ import com.mostc.pftt.results.EPrintType; // TODO http://us.php.net/manual/en/wincache.stats.php // TODO mediawiki support public abstract class WinCacheUScenario extends UserCacheScenario { + protected final DllVersion set_dll; + + public WinCacheUScenario() { + this.set_dll = null; + } + + public WinCacheUScenario(DllVersion dll) { + this.set_dll = dll; + } @Override public void addToDebugPath(ConsoleManager cm, AHost host, PhpBuild build, Collection<String> debug_path) { - try { - switch(build.getVersionBranch(cm, host)) { - case PHP_5_3: - debug_path.add( host.getPfttCacheDir()+"/dep/wincache/wincache-1.3.4-5.3-nts-vc11-x86/php_wincache.pdb" ); - break; - case PHP_5_4: - debug_path.add( host.getPfttCacheDir()+"/dep/wincache/wincache-1.3.4-5.4-nts-vc11-x86/php_wincache.pdb" ); - break; - case PHP_5_5: - default: - debug_path.add( host.getPfttCacheDir()+"/dep/wincache/wincache-1.3.5-5.5-nts-vc11-x86/php_wincache.pdb" ); - break; + if (this.set_dll!=null) { + debug_path.add(set_dll.getDebugPath()); + } else { + try { + switch(build.getVersionBranch(cm, host)) { + case PHP_5_3: + debug_path.add( host.getPfttCacheDir()+"/dep/wincache/wincache-1.3.4-5.3-nts-vc11-x86/php_wincache.pdb" ); + break; + case PHP_5_4: + debug_path.add( host.getPfttCacheDir()+"/dep/wincache/wincache-1.3.4-5.4-nts-vc11-x86/php_wincache.pdb" ); + break; + case PHP_5_5: + default: + debug_path.add( host.getPfttCacheDir()+"/dep/wincache/wincache-1.3.5-5.5-nts-vc11-x86/php_wincache.pdb" ); + break; + } + } catch ( Exception ex ) { + ex.printStackTrace(); } - } catch ( Exception ex ) { - ex.printStackTrace(); } } @@ -64,24 +78,22 @@ public abstract class WinCacheUScenario extends UserCacheScenario { protected String getDllPath53(Host host) { return host.getPfttCacheDir()+"/dep/wincache/wincache-1.3.4-5.3-nts-vc9-x86/php_wincache.dll"; } - - // @see http://us.php.net/manual/en/wincache.configuration.php - boolean first = true; - @Override - public IScenarioSetup setup(ConsoleManager cm, Host host, PhpBuild build, PhpIni ini) { + + public IScenarioSetup setup(ConsoleManager cm, Host host, PhpBuild build, ScenarioSet scenario_set, EScenarioSetPermutationLayer layer) { if (!host.isWindows() || !build.isNTS(host)) return SETUP_FAILED; - // TODO temp - if (first) { - String dll_path; - EBuildBranch branch; - try { - branch = build.getVersionBranch(cm, host); - } catch ( Exception ex ) { - ex.printStackTrace(); - return SETUP_FAILED; - } + String dll_path; + EBuildBranch branch; + try { + branch = build.getVersionBranch(cm, host); + } catch ( Exception ex ) { + ex.printStackTrace(); + return SETUP_FAILED; + } + if (set_dll!=null) { + dll_path = set_dll.getPath(); + } else { switch(branch) { case PHP_5_3: dll_path = getDllPath53(host); @@ -93,28 +105,26 @@ public abstract class WinCacheUScenario extends UserCacheScenario { dll_path = getDllPath55Plus(host); break; } - // install wincache - try { - host.copy(dll_path, build.getDefaultExtensionDir()+"/php_wincache.dll"); - } catch ( Exception ex ) { - ex.printStackTrace(); - return SETUP_FAILED; - } - - cm.println(EPrintType.CLUE, getClass(), "Found WinCache in: "+dll_path); - first = false; + } + // install wincache + try { + host.copy(dll_path, build.getDefaultExtensionDir()+"/php_wincache.dll"); + } catch ( Exception ex ) { + ex.printStackTrace(); + return SETUP_FAILED; } - // enable wincache - ini.putMulti(PhpIni.EXTENSION, "php_wincache.dll"); + cm.println(EPrintType.CLUE, getClass(), "Found WinCache in: "+dll_path); - ini.putSingle("wincache.enablecli", "1"); + return new WinCacheUScenarioSetup(); + } + @Override + public IScenarioSetup setup(ConsoleManager cm, Host host, PhpBuild build, PhpIni ini) { + if (!host.isWindows() || !build.isNTS(host)) + return SETUP_FAILED; configure(ini); - // DISABLE opcode caching (required to use wincacheu with opcache scenarios) - ini.putSingle("wincache.ocenabled", "0"); - return new WinCacheUScenarioSetup(); } @@ -137,7 +147,17 @@ public abstract class WinCacheUScenario extends UserCacheScenario { } // end public class WinCacheUScenarioSetup - protected abstract void configure(PhpIni ini); + // @see http://us.php.net/manual/en/wincache.configuration.php + @Overridable + protected void configure(PhpIni ini) { + // enable wincache + ini.putMulti(PhpIni.EXTENSION, "php_wincache.dll"); + + ini.putSingle("wincache.enablecli", "1"); + + // DISABLE opcode caching (required to use wincacheu with opcache scenarios) + ini.putSingle("wincache.ocenabled", "0"); + } @Override public boolean isSupported(ConsoleManager cm, Host host, PhpBuild build, ScenarioSet scenario_set, EScenarioSetPermutationLayer layer) { @@ -179,4 +199,4 @@ public abstract class WinCacheUScenario extends UserCacheScenario { return true; } -} +} // end public abstract class WinCacheUScenario diff --git a/src/com/mostc/pftt/scenario/WinCacheU_FileAndUserCacheScenario.java b/src/com/mostc/pftt/scenario/WinCacheU_FileAndUserCacheScenario.java index 72718a8..0473c5f 100644 --- a/src/com/mostc/pftt/scenario/WinCacheU_FileAndUserCacheScenario.java +++ b/src/com/mostc/pftt/scenario/WinCacheU_FileAndUserCacheScenario.java @@ -1,11 +1,21 @@ package com.mostc.pftt.scenario; import com.mostc.pftt.model.core.PhpIni; +import com.mostc.pftt.util.DllVersion; public class WinCacheU_FileAndUserCacheScenario extends WinCacheUScenario { + + public WinCacheU_FileAndUserCacheScenario() { + super(); + } + + public WinCacheU_FileAndUserCacheScenario(DllVersion dll) { + super(dll); + } @Override protected void configure(PhpIni ini) { + super.configure(ini); // enable file caching ini.putSingle("wincache.fcenabled", "1"); // enable user caching @@ -17,4 +27,4 @@ public class WinCacheU_FileAndUserCacheScenario extends WinCacheUScenario { return "WinCacheU-File-And-User"; } -} +} // end public class WinCacheU_FileAndUserCacheScenario diff --git a/src/com/mostc/pftt/scenario/WinCacheU_OnlyFileCacheScenario.java b/src/com/mostc/pftt/scenario/WinCacheU_OnlyFileCacheScenario.java index 09439bf..8ee24b3 100644 --- a/src/com/mostc/pftt/scenario/WinCacheU_OnlyFileCacheScenario.java +++ b/src/com/mostc/pftt/scenario/WinCacheU_OnlyFileCacheScenario.java @@ -1,11 +1,21 @@ package com.mostc.pftt.scenario; import com.mostc.pftt.model.core.PhpIni; +import com.mostc.pftt.util.DllVersion; public class WinCacheU_OnlyFileCacheScenario extends WinCacheUScenario { + + public WinCacheU_OnlyFileCacheScenario() { + super(); + } + + public WinCacheU_OnlyFileCacheScenario(DllVersion dll) { + super(dll); + } @Override protected void configure(PhpIni ini) { + super.configure(ini); // enable file caching ini.putSingle("wincache.fcenabled", "1"); // disable user caching @@ -17,4 +27,4 @@ public class WinCacheU_OnlyFileCacheScenario extends WinCacheUScenario { return "WinCacheU-Only-File"; } -} +} // end public class WinCacheU_OnlyFileCacheScenario diff --git a/src/com/mostc/pftt/scenario/WinCacheU_OnlyUserCacheScenario.java b/src/com/mostc/pftt/scenario/WinCacheU_OnlyUserCacheScenario.java index 11e0caa..3715e50 100644 --- a/src/com/mostc/pftt/scenario/WinCacheU_OnlyUserCacheScenario.java +++ b/src/com/mostc/pftt/scenario/WinCacheU_OnlyUserCacheScenario.java @@ -1,11 +1,21 @@ package com.mostc.pftt.scenario; import com.mostc.pftt.model.core.PhpIni; +import com.mostc.pftt.util.DllVersion; public class WinCacheU_OnlyUserCacheScenario extends WinCacheUScenario { + + public WinCacheU_OnlyUserCacheScenario() { + super(); + } + + public WinCacheU_OnlyUserCacheScenario(DllVersion dll) { + super(dll); + } @Override protected void configure(PhpIni ini) { + super.configure(ini); // disable file caching ini.putSingle("wincache.fcenabled", "0"); // enable user caching @@ -17,4 +27,4 @@ public class WinCacheU_OnlyUserCacheScenario extends WinCacheUScenario { return "WinCacheU-Only-User"; } -} +} // end public class WinCacheU_OnlyUserCacheScenario diff --git a/src/com/mostc/pftt/util/DllVersion.java b/src/com/mostc/pftt/util/DllVersion.java index dcdddcf..22891f3 100644 --- a/src/com/mostc/pftt/util/DllVersion.java +++ b/src/com/mostc/pftt/util/DllVersion.java @@ -10,6 +10,10 @@ public class DllVersion { this.version = version; } + public DllVersion(String base, String dll_name, String version) { + this(base, dll_name, dll_name.replace(".dll", ".pdb"), version); + } + public String getVersion() { return version; }