<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://planet-soc.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Planet SoC - </title>
 <link>http://planet-soc.com/organization/MySQL/planet</link>
 <description>Planet view per organization</description>
 <language>en</language>
<item>
 <title>SoC 2008 Beyond the End</title>
 <link>http://planet-soc.com/node/3717</link>
 <description>&lt;p&gt;Google Summer of Code 2008 officially ended on August 18th. Since that deadline, I have been working to solve a few non-functional problems I discovered during testing stage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;By week 11, Skoll Client was collecting runtime information for each of the MySQL tests. During the development stage, I only tested this feature with a few MySQL tests. However, during testing stage I discovered this feature would take way too much time and resources for majority of the users. To completely test one configuration of MySQL, it took Skoll Client over 10 hours because MySQL server must be restarted after each test. Also, the runtime information collected was over 3 GB (zipped!). If the user is only interested in the coverage of the MySQL test suite, the per-test runtime information is a major overkill. The solution was to have two runtime information collection flags in the Skoll Client, &amp;#8212;gcov and &amp;#8212;detailed_gcov, to collect runtime information for all tests and runtime information per test. I doubt any user besides me would want to use the &amp;#8212;detailed_gcov option.
&lt;/li&gt;
&lt;li&gt;Generating runtime information reports from the database has always been slow due to the large amount of data collected for MySQL. Now that the database structure and the SQL queries is more concrete, I can finally spend some time optimize for performance. With a few tweaks to the SQL and a few added indices, I was able to decrease the runtime of some queries from over 2 minutes down to 0.04 seconds. I am pretty new to optimizing database performance, learning about the ?explain? command really helped me understand what was going on with a query. However, even with this huge performance improvement, certain types of reports such as ?per source line? is still too slow for data collected for multiple configurations. The visualization techniques I am using is not mature enough to handle large software system like MySQL just yet.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My plans for this project after Summer of Code is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skoll Client is feature complete, I have no plans to add new features in the near future. Of course, bug fixes and patches will be added.
&lt;/li&gt;
&lt;li&gt;The visualization techniques I worked on look promising, but using them on MySQL right now is costly in both time and computing resources. I will continue to research ways to visualize multi-configuration runtime data, but on smaller software systems.
&lt;/li&gt;
&lt;li&gt;For future updates on the Skoll Project, visit &lt;a href=&quot;http://www.cs.umd.edu/projects/skoll/contribute/mysql.html&quot;&gt;http://www.cs.umd.edu/projects/skoll/contribute/mysql.html&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
 <comments>http://planet-soc.com/node/3717#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Mon, 08 Sep 2008 22:33:52 +0200</pubDate>
 <dc:creator>csfalcon</dc:creator>
 <guid isPermaLink="false">3717 at http://planet-soc.com</guid>
</item>
<item>
 <title>SoC 2008 Beyond the End</title>
 <link>http://planet-soc.com/node/3729</link>
 <description>&lt;p&gt;Google Summer of Code 2008 officially ended on August 18th. Since that deadline, I have been working to solve a few non-functional problems I discovered during testing stage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;By week 11, Skoll Client was collecting runtime information for each of the MySQL tests. During the development stage, I only tested this feature with a few MySQL tests. However, during testing stage I discovered this feature would take way too much time and resources for majority of the users. To completely test one configuration of MySQL, it took Skoll Client over 10 hours because MySQL server must be restarted after each test. Also, the runtime information collected was over 3 GB (zipped!). If the user is only interested in the coverage of the MySQL test suite, the per-test runtime information is a major overkill. The solution was to have two runtime information collection flags in the Skoll Client, &amp;#8212;gcov and &amp;#8212;detailed_gcov, to collect runtime information for all tests and runtime information per test. I doubt any user besides me would want to use the &amp;#8212;detailed_gcov option.
&lt;/li&gt;
&lt;li&gt;Generating runtime information reports from the database has always been slow due to the large amount of data collected for MySQL. Now that the database structure and the SQL queries is more concrete, I can finally spend some time optimize for performance. With a few tweaks to the SQL and a few added indices, I was able to decrease the runtime of some queries from over 2 minutes down to 0.04 seconds. I am pretty new to optimizing database performance, learning about the ?explain? command really helped me understand what was going on with a query. However, even with this huge performance improvement, certain types of reports such as &amp;#8220;per source line&amp;#8221; is still too slow for data collected for multiple configurations. The visualization techniques I am using is not mature enough to handle large software system like MySQL just yet.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My plans for this project after Summer of Code is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skoll Client is feature complete, I have no plans to add new features in the near future. Of course, bug fixes and patches will be added.
&lt;/li&gt;
&lt;li&gt;The visualization techniques I worked on look promising, but using them on MySQL right now is costly in both time and computing resources. I will continue to research ways to visualize multi-configuration runtime data, but on smaller software systems.
&lt;/li&gt;
&lt;li&gt;For future updates on the Skoll Project, visit &lt;a href=&quot;http://www.cs.umd.edu/projects/skoll/contribute/mysql.html&quot;&gt;http://www.cs.umd.edu/projects/skoll/contribute/mysql.html&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
 <comments>http://planet-soc.com/node/3729#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Mon, 08 Sep 2008 22:33:52 +0200</pubDate>
 <dc:creator>csfalcon</dc:creator>
 <guid isPermaLink="false">3729 at http://planet-soc.com</guid>
</item>
<item>
 <title>Week 12 - A Test Scheduler for the MySQL Build Farm Initiative</title>
 <link>http://planet-soc.com/node/3633</link>
 <description>&lt;p&gt;KEY ACCOMPLISHMENTS LAST WEEK&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refactored and cleaned up source code.
&lt;/li&gt;
&lt;li&gt;Updated JavaDoc.
&lt;/li&gt;
&lt;li&gt;Uploaded source code to code.google.com.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;KEY TASKS THAT STALLED LAST WEEK&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tried to upload source code to launchpad, but code.google.com was easier to use.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;KEY CONCERNS&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;None
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;TASKS IN THE UPCOMING WEEK&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep working on the project until the semester starts (Sept 2nd), at least.
&lt;/li&gt;
&lt;li&gt;Integrate all server side processing scripts and tools (Java, Perl, R, HTML).
&lt;/li&gt;
&lt;li&gt;Collect and analyze MySQL runtime information.&lt;/li&gt;
&lt;/ul&gt;
</description>
 <comments>http://planet-soc.com/node/3633#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Tue, 19 Aug 2008 05:04:37 +0200</pubDate>
 <dc:creator>csfalcon</dc:creator>
 <guid isPermaLink="false">3633 at http://planet-soc.com</guid>
</item>
<item>
 <title>Final GSoC revision of SIGAR I_S plugin</title>
 <link>http://planet-soc.com/node/3501</link>
 <description>&lt;p&gt;The GSoC is about to end up and it is time to sum up what has been done within the last weeks. &lt;/p&gt;

&lt;p&gt;News&lt;/p&gt;

&lt;p&gt;*Error handling added. Plugin uses the following mechanism to gather and report errors. When we can&amp;#8217;t load/open SIGAR library or get any information from it we pass the error to user informing about that. On the other hand when only some information is not available we rather print warning about that to MySQL .err file.&lt;br /&gt;Also we check for return value for each schema_store_record function.&lt;/p&gt;

&lt;p&gt;*Plugin has been merged into the MySQL 6 server code. Now you can download and compile the MySQL server with SIGAR plugin already being there.&lt;/p&gt;

&lt;p&gt;Downloads&lt;/p&gt;

&lt;p&gt;Standalone SIGAR plugin is available at lp:~m.ch/mysql-server/sigar-plugin.&lt;br /&gt;SIGAR plugin merged into the MySQL server is available at lp:~m.ch/mysql-server/mysql-6.0-sigar-plugin.&lt;/p&gt;

&lt;p&gt;Updated installation guideline and documentation is available in README file.&lt;/p&gt;

&lt;p&gt;I hope you will like it and enjoy using it.&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/3501#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/182">Universe SoC</category>
 <pubDate>Sat, 16 Aug 2008 20:35:00 +0200</pubDate>
 <dc:creator>m_ch</dc:creator>
 <guid isPermaLink="false">3501 at http://planet-soc.com</guid>
</item>
<item>
 <title>Running Shell Commands in Java</title>
 <link>http://planet-soc.com/node/3455</link>
 <description>&lt;p&gt;The Skoll Client retrieves a set of commands from the Skoll Server to compile and test MySQL; these commands are UNIX shell commands. My Google Summer of Code project is to work on the Java Skoll Client, I spent a great deal of time and effort getting these shell commands to run well in Java. Running shell commands in Java is not always straightforward, here are some techniques I learned to get the job done.&lt;/p&gt;

&lt;p&gt;Use Java&amp;#8217;s  ProcessBuilder class instead of Runtime class for Java 5.0+ projects. There are two reasons. First, ProcessBuilder has redirectErrorStream() method that automatically merges the standard output and standard error together so the output of a command would make more sense and more importantly the process won&amp;#8217;t freeze if the developer doesn&amp;#8217;t clear the error output stream. Second, the environment() method returns a nice Map the developer can use to manipulate the environment in which the command should run. Unfortunately, I must support Java 1.4 and 5.0 so I had to do everything the hard way.&lt;/p&gt;

&lt;p&gt;Modifying the PATH environment variable does not add a location for Java to locate executables, at least not the way I expected it to. I was trying to run the &amp;#8220;bzr&amp;#8221; command which is not in my default path, I thought setting the PATH environment variable to include the non-default path would allow Java to find &amp;#8220;bzr&amp;#8221;. That did not work. The environment settings do not take affect until the process has started, but Java cannot start the process because it cannot find the &amp;#8220;bzr&amp;#8221; command. For now, I set the PATH in the shell script that starts the Skoll Client. But one possible solution is to set the environment variables, then run the command &amp;#8220;sh -c &amp;#8216;bzr&amp;#8217;&amp;#8221; (not yet tested).&lt;/p&gt;

&lt;p&gt;Passing a shell command to Java does not always work. The way Java parses the commands does unexpected things, at least to me at first. I found that parsing the commands myself then passing them to Java guarantees correct execution. This command parsing algorithm divides one command string into an array of command parts; the command parts are divided by whitespace, unless the whitespace appears in quotation. Here is a simple method that prepares the command for Java.&lt;/p&gt;

&lt;pre&gt;
private String[] prepareCommand(String command)
{
   ArrayList commandParts = new ArrayList();
   StringBuffer currPart = new StringBuffer();
   boolean inQuote = false;

   for (int x = 0; x &amp;lt; command.length(); x++)
   {
      char ch = command.charAt(x);

      if (ch == &#039;&#039;&#039; || ch == &#039;&quot;&#039;)
      {
         inQuote = !inQuote;
      }
      else if (Character.isWhitespace(ch) &amp;amp;&amp;amp; !inQuote)
      {
         commandParts.add(currPart.toString());
         currPart = new StringBuffer();
      }
      else
      {
         currPart.append(ch);
      }

      // get the last part of the command
      if (x == command.length() - 1)
      {
         commandParts.add(currPart.toString());
      }
   }

   String[] coms = new String[commandParts.size()];
   commandParts.toArray(coms);

   return coms;
}
&lt;/pre&gt;
</description>
 <comments>http://planet-soc.com/node/3455#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Tue, 12 Aug 2008 06:54:21 +0200</pubDate>
 <dc:creator>csfalcon</dc:creator>
 <guid isPermaLink="false">3455 at http://planet-soc.com</guid>
</item>
<item>
 <title>Running Shell Commands in Java</title>
 <link>http://planet-soc.com/node/3730</link>
 <description>&lt;p&gt;The Skoll Client retrieves a set of commands from the Skoll Server to compile and test MySQL; these commands are UNIX shell commands. My Google Summer of Code project is to work on the Java Skoll Client, I spent a great deal of time and effort getting these shell commands to run well in Java. Running shell commands in Java is not always straightforward, here are some techniques I learned to get the job done.&lt;/p&gt;

&lt;p&gt;Use Java&amp;#8217;s  ProcessBuilder class instead of Runtime class for Java 5.0+ projects. There are two reasons. First, ProcessBuilder has redirectErrorStream() method that automatically merges the standard output and standard error together so the output of a command would make more sense and more importantly the process won&amp;#8217;t freeze if the developer doesn&amp;#8217;t clear the error output stream. Second, the environment() method returns a nice Map the developer can use to manipulate the environment in which the command should run. Unfortunately, I must support Java 1.4 and 5.0 so I had to do everything the hard way.&lt;/p&gt;

&lt;p&gt;Modifying the PATH environment variable does not add a location for Java to locate executables, at least not the way I expected it to. I was trying to run the &amp;#8220;bzr&amp;#8221; command which is not in my default path, I thought setting the PATH environment variable to include the non-default path would allow Java to find &amp;#8220;bzr&amp;#8221;. That did not work. The environment settings do not take affect until the process has started, but Java cannot start the process because it cannot find the &amp;#8220;bzr&amp;#8221; command. For now, I set the PATH in the shell script that starts the Skoll Client. But one possible solution is to set the environment variables, then run the command &amp;#8220;sh -c &amp;#8216;bzr&amp;#8217;&amp;#8221; (not yet tested).&lt;/p&gt;

&lt;p&gt;Passing a shell command to Java does not always work. The way Java parses the commands does unexpected things, at least to me at first. I found that parsing the commands myself then passing them to Java guarantees correct execution. This command parsing algorithm divides one command string into an array of command parts; the command parts are divided by whitespace, unless the whitespace appears in quotation. Here is a simple method that prepares the command for Java.&lt;/p&gt;

&lt;pre&gt;
private String[] prepareCommand(String command)
{
   ArrayList commandParts = new ArrayList();
   StringBuffer currPart = new StringBuffer();
   boolean inQuote = false;

   for (int x = 0; x &amp;lt; command.length(); x++)
   {
      char ch = command.charAt(x);

&lt;pre&gt;&lt;code&gt;  if (ch == &#039;&#039;&#039; || ch == &#039;&quot;&#039;)
  {
     inQuote = !inQuote;
  }
  else if (Character.isWhitespace(ch) &amp;amp;amp;&amp;amp;amp; !inQuote)
  {
     commandParts.add(currPart.toString());
     currPart = new StringBuffer();
  }
  else
  {
     currPart.append(ch);
  }

  // get the last part of the command
  if (x == command.length() - 1)
  {
     commandParts.add(currPart.toString());
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;String[] coms = new String[commandParts.size()];
   commandParts.toArray(coms);&lt;/p&gt;

&lt;p&gt;return coms;
}
&lt;/pre&gt;&lt;p&gt;
For more information and source code related to running shell commands in Java, see &lt;a href=&quot;http://www.csfalcon.com:80/wiki/csfalcon/ShellCommandsWithJava&quot;&gt;ShellCommandsWithJava&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/3730#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Tue, 12 Aug 2008 06:54:21 +0200</pubDate>
 <dc:creator>csfalcon</dc:creator>
 <guid isPermaLink="false">3730 at http://planet-soc.com</guid>
</item>
<item>
 <title>Running Shell Commands in Java</title>
 <link>http://planet-soc.com/node/3731</link>
 <description>&lt;p&gt;The Skoll Client retrieves a set of commands from the Skoll Server to compile and test MySQL; these commands are UNIX shell commands. My Google Summer of Code project is to work on the Java Skoll Client, I spent a great deal of time and effort getting these shell commands to run well in Java. Running shell commands in Java is not always straightforward, here are some techniques I learned to get the job done.&lt;/p&gt;

&lt;p&gt;Use Java&amp;#8217;s  ProcessBuilder class instead of Runtime class for Java 5.0+ projects. There are two reasons. First, ProcessBuilder has redirectErrorStream() method that automatically merges the standard output and standard error together so the output of a command would make more sense and more importantly the process won&amp;#8217;t freeze if the developer doesn&amp;#8217;t clear the error output stream. Second, the environment() method returns a nice Map the developer can use to manipulate the environment in which the command should run. Unfortunately, I must support Java 1.4 and 5.0 so I had to do everything the hard way.&lt;/p&gt;

&lt;p&gt;Modifying the PATH environment variable does not add a location for Java to locate executables, at least not the way I expected it to. I was trying to run the &amp;#8220;bzr&amp;#8221; command which is not in my default path, I thought setting the PATH environment variable to include the non-default path would allow Java to find &amp;#8220;bzr&amp;#8221;. That did not work. The environment settings do not take affect until the process has started, but Java cannot start the process because it cannot find the &amp;#8220;bzr&amp;#8221; command. For now, I set the PATH in the shell script that starts the Skoll Client. But one possible solution is to set the environment variables, then run the command &amp;#8220;sh -c &amp;#8216;bzr&amp;#8217;&amp;#8221; (not yet tested).&lt;/p&gt;

&lt;p&gt;Passing a shell command to Java does not always work. The way Java parses the commands does unexpected things, at least to me at first. I found that parsing the commands myself then passing them to Java guarantees correct execution. This command parsing algorithm divides one command string into an array of command parts; the command parts are divided by whitespace, unless the whitespace appears in quotation. Here is a simple method that prepares the command for Java.&lt;/p&gt;

&lt;pre&gt;
private String[] prepareCommand(String command)
{
   ArrayList commandParts = new ArrayList();
   StringBuffer currPart = new StringBuffer();
   boolean inQuote = false;

   for (int x = 0; x &amp;lt; command.length(); x++)
   {
      char ch = command.charAt(x);

&lt;pre&gt;&lt;code&gt;  if (ch == &#039;&#039;&#039; || ch == &#039;&quot;&#039;)
  {
     inQuote = !inQuote;
  }
  else if (Character.isWhitespace(ch) &amp;amp;amp;&amp;amp;amp; !inQuote)
  {
     commandParts.add(currPart.toString());
     currPart = new StringBuffer();
  }
  else
  {
     currPart.append(ch);
  }

  // get the last part of the command
  if (x == command.length() - 1)
  {
     commandParts.add(currPart.toString());
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;String[] coms = new String[commandParts.size()];
   commandParts.toArray(coms);&lt;/p&gt;

&lt;p&gt;return coms;
}
&lt;/pre&gt;&lt;p&gt;
For more information and source code related to running shell commands in Java, see &lt;a href=&quot;http://www.csfalcon.com:80/wiki/null/ShellCommandsWithJava&quot;&gt;ShellCommandsWithJava&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/3731#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Tue, 12 Aug 2008 06:54:21 +0200</pubDate>
 <dc:creator>csfalcon</dc:creator>
 <guid isPermaLink="false">3731 at http://planet-soc.com</guid>
</item>
<item>
 <title>Running Shell Commands in Java</title>
 <link>http://planet-soc.com/node/3941</link>
 <description>&lt;p&gt;Error while rendering page:null&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/3941#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Tue, 12 Aug 2008 06:54:21 +0200</pubDate>
 <dc:creator>csfalcon</dc:creator>
 <guid isPermaLink="false">3941 at http://planet-soc.com</guid>
</item>
<item>
 <title>Week 11 - A Test Scheduler for the MySQL Build Farm Initiative</title>
 <link>http://planet-soc.com/node/3540</link>
 <description>&lt;p&gt;KEY ACCOMPLISHMENTS LAST WEEK&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finished per test runtime information collection modifications.
&lt;/li&gt;
&lt;li&gt;Collected and analyzed per test runtime information for a few suspicious configurations and tests.
&lt;/li&gt;
&lt;li&gt;Refactored and cleaned up source code.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;KEY TASKS THAT STALLED LAST WEEK&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;None
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;KEY CONCERNS&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;None
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;TASKS IN THE UPCOMING WEEK&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refactor and clean up source code.
&lt;/li&gt;
&lt;li&gt;Update JavaDoc.&lt;/li&gt;
&lt;/ul&gt;
</description>
 <comments>http://planet-soc.com/node/3540#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Tue, 12 Aug 2008 06:47:57 +0200</pubDate>
 <dc:creator>csfalcon</dc:creator>
 <guid isPermaLink="false">3540 at http://planet-soc.com</guid>
</item>
<item>
 <title>Collect Runtime Information for Each MySQL Test</title>
 <link>http://planet-soc.com/node/3297</link>
 <description>&lt;p&gt;In a previous post, I talked about the method &lt;a href=&quot;http://www.cs.umd.edu/projects/skoll/contribute/mysql.html&quot;&gt;Skoll&lt;/a&gt; used to &lt;a href=&quot;http://www.csfalcon.com/post/109&quot;&gt;collect MySQL runtime information for non-default configurations&lt;/a&gt;. At the time, the runtime information was collected after all of the MySQL tests were executed, which means the runtime information was accumulated from all tests run. There was no way to decipher how each test contributed to this accumulated runtime information. A greater degree of granularity can provide better understanding of the MySQL runtime behavior.&lt;/p&gt;

&lt;p&gt;To collect runtime information for each MySQL test, the Skoll client still compiles MySQL as described in the previous post. Instead of running the &amp;#8220;mysql-test-run&amp;#8221; script with no arguments (which runs all available tests in the source tree), Skoll client calls &amp;#8220;mysql-test-run [TESTCASE]&amp;#8221; to run one specific test. After this test finishes, Skoll client collects the runtime information and then repeats the process for other tests. However, to make this work, two tasks must be handled:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Skoll client needs to know which tests are available in the MySQL source tree. The tests are located in the &amp;#8220;mysql-test/t&amp;#8221; directory. Each test is in a file &amp;#8220;[TESTCASE].test&amp;#8221;, and the filename is the test name (additional test suites are in &amp;#8220;mysql-test/suite/[TESTSUITE]/t&amp;#8221; directories). It&amp;#8217;s pretty straight forward for Skoll client to browse through the directory to make a list of tests.
&lt;/li&gt;
&lt;li&gt;Runtime information from the previous test must be cleared before the next test starts, because gcov accumulates runtime information from numerous executions in data files with extension *.gcda. Therefore, after each test Skoll client must recursively go through the source directories and delete those files in order to collect per test runtime information.&lt;/li&gt;
&lt;/ol&gt;
</description>
 <comments>http://planet-soc.com/node/3297#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/75">MySQL</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Tue, 05 Aug 2008 06:34:03 +0200</pubDate>
 <dc:creator>csfalcon</dc:creator>
 <guid isPermaLink="false">3297 at http://planet-soc.com</guid>
</item>
</channel>
</rss>
