Commit:    7e27a9bccb6ca6785a9f4caedc4021a8784fdf19
Author:    Matt Ficken <v-maf...@microsoft.com>         Wed, 18 Sep 2013 
15:07:13 -0700
Parents:   e524e600c5b9057d2d03ad8ca6145ce1203325ff
Branches:  master

Link:       
http://git.php.net/?p=pftt2.git;a=commitdiff;h=7e27a9bccb6ca6785a9f4caedc4021a8784fdf19

Log:
adding `info` command


Former-commit-id: 67e9892364a10798fb9ef2498dd039a61898866d

Changed paths:
  A  bin/info.cmd
  M  bin/pftt_shell.cmd
  M  bin/pftt_shell.sh
  M  bin/set_env.sh
  M  src/com/mostc/pftt/main/PfttMain.java
  M  src/com/mostc/pftt/model/core/PhpBuild.java
  M  src/com/mostc/pftt/results/PhpResultPack.java
  M  src/com/mostc/pftt/results/PhpResultPackWriter.java

diff --git a/bin/info.cmd b/bin/info.cmd
new file mode 100644
index 0000000..9880359
--- /dev/null
+++ b/bin/info.cmd
@@ -0,0 +1,3 @@
+@ECHO OFF
+REM windows doesn't do aliases, so have to make a batch script. see 
`pftt_shell` on *nix
+pftt -ignore_unknown_option %* info %*
diff --git a/bin/pftt_shell.cmd b/bin/pftt_shell.cmd
index d831d42..e6e4202 100644
--- a/bin/pftt_shell.cmd
+++ b/bin/pftt_shell.cmd
@@ -26,7 +26,7 @@ CALL ^\php-sdk^\PFTT^\current^\bin^\set_env
 @ECHO.            ^|WMWMWMW^| ^|^>^>^>^>^>^>^>^>^>^>^>^>^>^> Php Full Test 
Tool ^>^>^>^>^>^>^>^>^>^>^>^>^>:^>
 @ECHO.            `-------^| ^|--------------------------------------------'^^
 @ECHO.                     ^\^\
-@ECHO.                      ^\)
+@ECHO.                      ^\)    PFTT Shell - for testing the PHP Ecosystem
 @ECHO.
 ECHO  Type `pftt ^<enter^>` to get help with PFTT. ^<tab^> for 
auto-completion. 
 ECHO  ^<F7^> for history. Control+C to interrupt. Right-click for copy/paste 
menu.
@@ -46,7 +46,7 @@ ECHO  tka_apache    tka_php     tka_windbg     `net use`    
stop
 @ECHO.
 ECHO  Useful:
 ECHO  ls            `start .`   windbg   npp   clear
-ECHO  php_sdk       sleep       pftt     cat
+ECHO  php_sdk       sleep       pftt     cat   info
 @ECHO.
 @prompt $t %COMPUTERNAME% $M$p$g
 REM signal pftt.cmd to not run pftt with elevate ever
diff --git a/bin/pftt_shell.sh b/bin/pftt_shell.sh
index 0547d35..475fda4 100644
--- a/bin/pftt_shell.sh
+++ b/bin/pftt_shell.sh
@@ -15,7 +15,7 @@ echo app_all       all_named     app_list   aa an al  caua  
smoke  parse
 echo ui_all        ui_named      ui_list    ua un ul  aua   run-test
 echo
 echo Setup:
-echo lc            setup
+echo lc            setup       info
 echo 
 echo Cleanup: 
 echo tka_apache    tka_php     stop    php_sdk
diff --git a/bin/set_env.sh b/bin/set_env.sh
index 15958aa..d407547 100644
--- a/bin/set_env.sh
+++ b/bin/set_env.sh
@@ -48,6 +48,9 @@ function core_named() {
 function smoke() {
        pftt -ignore_unknown_option $* smoke $*
 }
+function info() {
+       pftt -ignore_unknown_option $* info $*
+}
 alias aa=app_all
 alias al=app_list
 alias an=app_named
diff --git a/src/com/mostc/pftt/main/PfttMain.java 
b/src/com/mostc/pftt/main/PfttMain.java
index f99357d..7342183 100644
--- a/src/com/mostc/pftt/main/PfttMain.java
+++ b/src/com/mostc/pftt/main/PfttMain.java
@@ -370,7 +370,8 @@ public class PfttMain {
                // TODO fs test
                        .addRow("run-test <build> <test-pack> <full test 
name,...>", "runs named tests using run-tests.php from test-pack")
                        .addRow("help", "")
-                       .addRow("smoke <build>", "smoke test a build");
+                       .addRow("smoke <build>", "smoke test a build")
+                       .addRow("info <build>", "returns phpinfo() for build 
(using build/php.ini if present, otherwise uses default INI)");
                if (LocalHost.isLocalhostWindows()) {
                        table.addRow("perf <build>", "performance test of 
build")
                                .addRow("release_get <branch> <build-type> 
<revision>", "download a build and test-pack snapshot release")
@@ -469,13 +470,6 @@ public class PfttMain {
                System.out.println();
        } // end protected static void help_all
        
-       public void smoke() {
-               // TODO
-               System.err.println("Error: Not implemented");
-               new RequiredExtensionsSmokeTest();
-               new RequiredFeaturesSmokeTest();
-       }
-       
        public void shell() {
                IO io = new IO();
                //
@@ -563,6 +557,36 @@ public class PfttMain {
                }
        } // end public void appList
        
+       public boolean smoke(PhpBuild build, Config config, PhpResultPackWriter 
tmgr) {
+               for (ScenarioSet scenario_set : getScenarioSets(config, 
EScenarioSetPermutationLayer.FUNCTIONAL_TEST_APPLICATION)) {
+                       if (!cm.isSkipSmokeTests()) {
+                               {
+                                       // TODO test running PHPTs on a build 
that is missing a DLL that is
+                                       RequiredExtensionsSmokeTest test = new 
RequiredExtensionsSmokeTest();
+                                       //
+                                       // on Windows, missing .DLLs from a php 
build will cause a blocking winpop dialog msg to appear
+                                       // in such a case, the test will 
timeout after 1 minute and then fail (stopping at that point is important)
+                                       // @see PhpBuild#getExtensionList
+                                       if (test.test(build, cm, host, 
SAPIScenario.getSAPIScenario(scenario_set).getSAPIType(), 
tmgr)==ESmokeTestStatus.FAIL) {
+                                               // if this test fails, 
RequiredFeaturesSmokeTest will fail for sure
+                                               
cm.println(EPrintType.CANT_CONTINUE, "Main", "Failed smoke test: 
"+test.getName());
+                                               
+                                               return false;
+                                       }
+                               }
+                               {
+                                       RequiredFeaturesSmokeTest test = new 
RequiredFeaturesSmokeTest();
+                                       if (test.test(build, cm, host, 
tmgr)==ESmokeTestStatus.FAIL) {
+                                               
cm.println(EPrintType.CANT_CONTINUE, "Main", "Failed smoke test: 
"+test.getName());
+                                               
+                                               return false;
+                                       }
+                               }
+                       }
+               }
+               return true;
+       }
+       
        public void appAll(PhpBuild build, Config config, PhpResultPackWriter 
tmgr) throws IOException, Exception {
                ensureLocalhostPrepared(build);
                
@@ -580,32 +604,10 @@ public class PfttMain {
                                
                                cm.println(EPrintType.CLUE, PfttMain.class, 
"Writing Result-Pack: "+tmgr.getResultPackPath());
                                
+                               if (!smoke(build, config, tmgr))
+                                       break;
+                               
                                for (ScenarioSet scenario_set : 
getScenarioSets(config, 
EScenarioSetPermutationLayer.FUNCTIONAL_TEST_APPLICATION)) {
-                                       if (!cm.isSkipSmokeTests()) {
-                                               {
-                                                       // TODO test running 
PHPTs on a build that is missing a DLL that is
-                                                       
RequiredExtensionsSmokeTest test = new RequiredExtensionsSmokeTest();
-                                                       //
-                                                       // on Windows, missing 
.DLLs from a php build will cause a blocking winpop dialog msg to appear
-                                                       // in such a case, the 
test will timeout after 1 minute and then fail (stopping at that point is 
important)
-                                                       // @see 
PhpBuild#getExtensionList
-                                                       if (test.test(build, 
cm, host, SAPIScenario.getSAPIScenario(scenario_set).getSAPIType(), 
tmgr)==ESmokeTestStatus.FAIL) {
-                                                               // if this test 
fails, RequiredFeaturesSmokeTest will fail for sure
-                                                               
cm.println(EPrintType.CANT_CONTINUE, "Main", "Failed smoke test: 
"+test.getName());
-                                                               
-                                                               break;
-                                                       }
-                                               }
-                                               {
-                                                       
RequiredFeaturesSmokeTest test = new RequiredFeaturesSmokeTest();
-                                                       if (test.test(build, 
cm, host, tmgr)==ESmokeTestStatus.FAIL) {
-                                                               
cm.println(EPrintType.CANT_CONTINUE, "Main", "Failed smoke test: 
"+test.getName());
-                                                               
-                                                               break;
-                                                       }
-                                               }
-                                       }
-                                       
                                        List<AHost> hosts = config.getHosts();
                                        AHost host = 
hosts.isEmpty()?this.host:hosts.get(0);
                                        LocalPhpUnitTestPackRunner r = new 
LocalPhpUnitTestPackRunner(cm, tmgr, scenario_set, build, host, host);
@@ -628,32 +630,9 @@ public class PfttMain {
                        hosts.add(this.host);
                }
                for ( int i=0 ; i < cm.getRunTestPack() ; i++ ) {
+                       if (!smoke(build, config, tmgr))
+                               break;
                        for ( ScenarioSet scenario_set : 
getScenarioSets(config, EScenarioSetPermutationLayer.FUNCTIONAL_TEST_CORE) ) {
-                               if (!cm.isSkipSmokeTests()) {
-                                       {
-                                               // TODO test running PHPTs on a 
build that is missing a DLL that is
-                                               RequiredExtensionsSmokeTest 
test = new RequiredExtensionsSmokeTest();
-                                               //
-                                               // on Windows, missing .DLLs 
from a php build will cause a blocking winpop dialog msg to appear
-                                               // in such a case, the test 
will timeout after 1 minute and then fail (stopping at that point is important)
-                                               // @see 
PhpBuild#getExtensionList
-                                               if (test.test(build, cm, host, 
SAPIScenario.getSAPIScenario(scenario_set).getSAPIType(), 
tmgr)==ESmokeTestStatus.FAIL) {
-                                                       // if this test fails, 
RequiredFeaturesSmokeTest will fail for sure
-                                                       
cm.println(EPrintType.CANT_CONTINUE, "Main", "Failed smoke test: 
"+test.getName());
-                                                       
-                                                       break;
-                                               }
-                                       }
-                                       {
-                                               RequiredFeaturesSmokeTest test 
= new RequiredFeaturesSmokeTest();
-                                               if (test.test(build, cm, host, 
tmgr)==ESmokeTestStatus.FAIL) {
-                                                       
cm.println(EPrintType.CANT_CONTINUE, "Main", "Failed smoke test: 
"+test.getName());
-                                                       
-                                                       break;
-                                               }
-                                       }
-                               }
-                               
                                //
                                for ( AHost storage_host : hosts ) {
                                        LocalPhptTestPackRunner 
test_pack_runner = new LocalPhptTestPackRunner(tmgr.getConsoleManager(), tmgr, 
scenario_set, build, storage_host, host, config);
@@ -1302,10 +1281,12 @@ public class PfttMain {
                LocalConsoleManager cm = new LocalConsoleManager();
                
                // load config files
+               boolean config_default = true;
                if (config_files.size()>0) {
                        config = Config.loadConfigFromFiles(cm, 
(String[])config_files.toArray(new String[config_files.size()]));
                        if (config==null)
                                System.exit(-255);
+                       config_default = false;
                        System.out.println("PFTT: Config: loaded 
"+config_files);
                } else {
                        File default_config_file = new File(new 
LocalHost().getPfttConfDir()+"/default.groovy");
@@ -1481,7 +1462,7 @@ public class PfttMain {
                                        help_all();
                                        System.exit(-255);
                                        return;
-                               } else if 
(StringUtil.containsAnyCS(args[args_i], new String[]{"core_all", "core_named", 
"core_list", "app_all", "app_named", "app_list", "ui_all", "ui_list", 
"ui_named", "release_get", "release_list", "list_config"})) {
+                               } else if 
(StringUtil.containsAnyCS(args[args_i], new String[]{"core_all", "core_named", 
"core_list", "app_all", "app_named", "app_list", "ui_all", "ui_list", 
"ui_named", "release_get", "release_list", "list_config", "smoke", "info"})) {
                                        if (args[args_i].endsWith("_"))
                                                // for setup, lc
                                                args[args_i] = 
args[args_i].substring(0, args[args_i].length()-1);
@@ -1926,7 +1907,52 @@ public class PfttMain {
                                } else if (command.equals("smoke")) {
                                        no_show_gui(show_gui, command);
                                        
-                                       p.smoke();
+                                       if (args.length<=args_i+1) {
+                                               System.out.println("Usage: 
smoke <path to PHP build(s);:>");
+                                               System.out.println("Usage: 
smoke -config <config name> <path to PHP build(s);:>");
+                                               System.exit(-254);
+                                               return;
+                                       }
+                                       
+                                       PhpBuild[] builds = newBuilds(cm, 
p.host, args[args_i+1]);
+                                       for ( PhpBuild build : builds ) {
+                                               PhpResultPackWriter w = 
p.getWriter(build);
+                                               if (p.smoke(build, config, w))
+                                                       
System.out.println("Smoke: smoke tests passed: "+build.getBuildPath());
+                                               else
+                                                       
System.out.println("Smoke: smoke tests FAILED: "+build.getBuildPath());
+                                       }
+                               } else if (command.equals("info")) {
+                                       no_show_gui(show_gui, command);
+                                       
+                                       if (args.length<=args_i+1) {
+                                               System.out.println("Usage: info 
<path to PHP build(s);:>");
+                                               System.out.println("Usage: info 
-config <config name> <path to PHP build(s);:>");
+                                               
System.out.println("Tip(*nix|Windows) info <build> | more");
+                                               System.exit(-254);
+                                               return;
+                                       }
+                                       
+                                       PhpBuild[] builds = newBuilds(cm, 
p.host, args[args_i+1]);
+                                       for ( PhpBuild build : builds ) {
+                                               System.out.println(build);
+                                               
System.out.println(build.getBuildPath());
+                                               System.out.println();
+                                               if 
(p.host.exists(p.host.joinIntoOnePath(build.getBuildPath(), "php.ini"))) {
+                                                       
System.out.println("#Note: Using "+build.getBuildPath());
+                                                       
System.out.println(build.getPhpInfo(cm, p.host));
+                                               } else if (config_default) {
+                                                       
System.out.println("#Note: "+build.getBuildPath()+"/php.ini not found");
+                                                       
System.out.println("#Note: using PHP default INI values only! create php.ini or 
use -config PFTT option");
+                                                       
System.out.println(build.getPhpInfo(cm, p.host));
+                                               } else {
+                                                       
System.out.println("#Note: "+build.getBuildPath()+"/php.ini not found");
+                                                       
System.out.println("#Note: using INI from given PFTT configuration files");
+                                                       PhpIni ini = 
RequiredExtensionsSmokeTest.createDefaultIniCopy(cm, p.host, build);
+                                                       
+                                                       
System.out.println(build.getPhpInfo(cm, ini, p.host));
+                                               }
+                                       }
                                } else if (command.equals("upgrade")) {
                                        no_show_gui(show_gui, command);
                                        
diff --git a/src/com/mostc/pftt/model/core/PhpBuild.java 
b/src/com/mostc/pftt/model/core/PhpBuild.java
index 0f47cd5..af81f87 100644
--- a/src/com/mostc/pftt/model/core/PhpBuild.java
+++ b/src/com/mostc/pftt/model/core/PhpBuild.java
@@ -610,6 +610,10 @@ public class PhpBuild extends SAPIManager {
         * @throws Exception
         */
        public String getPhpInfo(ConsoleManager cm, AHost host) throws 
Exception {
+               return getPhpInfo(cm, null, host);
+       }
+       
+       public String getPhpInfo(ConsoleManager cm, PhpIni ini, AHost host) 
throws Exception {
                String php_info;
                if (this.php_info != null) {
                        php_info = this.php_info.get();
@@ -617,7 +621,7 @@ public class PhpBuild extends SAPIManager {
                                return php_info;
                }
                
-               PHPOutput eo = eval(host, "phpinfo();");
+               PHPOutput eo = eval(host, ini, "phpinfo();");
                eo.printOutputIfCrash(Host.toContext(getClass(), "getPhpInfo"), 
cm);
                php_info = eo.output;
                eo.cleanup(host);
diff --git a/src/com/mostc/pftt/results/PhpResultPack.java 
b/src/com/mostc/pftt/results/PhpResultPack.java
index 593fac7..1d4c2a3 100644
--- a/src/com/mostc/pftt/results/PhpResultPack.java
+++ b/src/com/mostc/pftt/results/PhpResultPack.java
@@ -39,12 +39,16 @@ public abstract class PhpResultPack {
                return parts[3]; // @see #makeName and 
PhpBuildInfo#toStringWithoutBuildBranch
        }
        
-       protected static File makeName(PhptSourceTestPack src_test_pack, File 
base, PhpBuildInfo build_info) throws Exception {
+       protected static File makeName(PhptSourceTestPack src_test_pack, File 
base, PhpBuildInfo build_info, int i) throws Exception {
                StringBuilder sb = new StringBuilder();
                sb.append("/");
                sb.append(build_info.getBuildBranch());
                sb.append("-Result-Pack-");
                sb.append(build_info.toStringWithoutBuildBranch());
+               if (i>1) {
+                       sb.append("-");
+                       sb.append(i);
+               }
                
                if 
(src_test_pack!=null&&src_test_pack.getNameAndVersionString()!=null&&src_test_pack.getNameAndVersionString().contains("sql"))
 {
                        // TODO temp
diff --git a/src/com/mostc/pftt/results/PhpResultPackWriter.java 
b/src/com/mostc/pftt/results/PhpResultPackWriter.java
index 2004458..6169a1d 100644
--- a/src/com/mostc/pftt/results/PhpResultPackWriter.java
+++ b/src/com/mostc/pftt/results/PhpResultPackWriter.java
@@ -128,7 +128,13 @@ public class PhpResultPackWriter extends PhpResultPack 
implements ITestResultRec
                this.local_host = local_host;
                this.cm = cm;
                this.build = build;
-               this.telem_dir = new File(makeName(src_test_pack, 
telem_base_dir, build_info).getAbsolutePath());
+               {
+                       int i=1;
+                       do {
+                               this.telem_dir = new 
File(makeName(src_test_pack, telem_base_dir, build_info, i).getAbsolutePath());
+                               i++;
+                       } while ( this.telem_dir.exists() );
+               }
                this.telem_dir.mkdirs();
                
                try {
@@ -166,7 +172,7 @@ public class PhpResultPackWriter extends PhpResultPack 
implements ITestResultRec
                        };
                writer_thread.start();
        }
-       
+
        protected abstract class ResultQueueEntry {
                public abstract void handle() throws IllegalArgumentException, 
IllegalStateException, IOException;
        }

Reply via email to