diff options
| author | Enrico Zini <enrico@enricozini.org> | 2009-09-29 15:08:02 +0100 |
|---|---|---|
| committer | Enrico Zini <enrico@enricozini.org> | 2009-09-29 15:08:02 +0100 |
| commit | 006621455482edd8abf46a05292120745f99f7ec (patch) | |
| tree | ff1318ccc409a3dd0519035ce2949ac8a48e969e /rep/ept/popcon | |
| download | libept-006621455482edd8abf46a05292120745f99f7ec.tar.gz | |
Initial import
Diffstat (limited to 'rep/ept/popcon')
| -rw-r--r-- | rep/ept/popcon/index.html | 128 | ||||
| -rw-r--r-- | rep/ept/popcon/local.cc.gcov.html | 235 | ||||
| -rw-r--r-- | rep/ept/popcon/local.h.gcov.html | 154 | ||||
| -rw-r--r-- | rep/ept/popcon/local.test.h.gcov.html | 178 | ||||
| -rw-r--r-- | rep/ept/popcon/maint/index.html | 128 | ||||
| -rw-r--r-- | rep/ept/popcon/maint/path.cc.gcov.html | 182 | ||||
| -rw-r--r-- | rep/ept/popcon/maint/path.h.gcov.html | 194 | ||||
| -rw-r--r-- | rep/ept/popcon/maint/popconindexer.cc.gcov.html | 314 | ||||
| -rw-r--r-- | rep/ept/popcon/maint/popconindexer.h.gcov.html | 142 | ||||
| -rw-r--r-- | rep/ept/popcon/maint/sourcedir.cc.gcov.html | 210 | ||||
| -rw-r--r-- | rep/ept/popcon/maint/sourcedir.h.gcov.html | 130 | ||||
| -rw-r--r-- | rep/ept/popcon/popcon.cc.gcov.html | 162 | ||||
| -rw-r--r-- | rep/ept/popcon/popcon.h.gcov.html | 220 | ||||
| -rw-r--r-- | rep/ept/popcon/popcon.test.h.gcov.html | 175 |
14 files changed, 2552 insertions, 0 deletions
diff --git a/rep/ept/popcon/index.html b/rep/ept/popcon/index.html new file mode 100644 index 0000000..d87cf3d --- /dev/null +++ b/rep/ept/popcon/index.html @@ -0,0 +1,128 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon</title> + <link rel="stylesheet" type="text/css" href="../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/popcon</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">161</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">83.2 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">134</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <center> + <table width="80%" cellpadding=2 cellspacing=1 border=0> + + <tr> + <td width="50%"><br></td> + <td width="15%"></td> + <td width="15%"></td> + <td width="20%"></td> + </tr> + + <tr> + <td class="tableHead">Filename</td> + <td class="tableHead" colspan=3>Coverage</td> + </tr> + + <tr> + <td class="coverFile"><a href="local.cc.gcov.html">local.cc</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=62 height=10 alt="62.1%"><img src="../../snow.png" width=38 height=10 alt="62.1%"></td></tr></table> + </td> + <td class="coverPerHi">62.1 %</td> + <td class="coverNumHi">41 / 66 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="local.h.gcov.html">local.h</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> + </td> + <td class="coverPerHi">100.0 %</td> + <td class="coverNumHi">1 / 1 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="local.test.h.gcov.html">local.test.h</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> + </td> + <td class="coverPerHi">100.0 %</td> + <td class="coverNumHi">8 / 8 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="popcon.cc.gcov.html">popcon.cc</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=96 height=10 alt="95.7%"><img src="../../snow.png" width=4 height=10 alt="95.7%"></td></tr></table> + </td> + <td class="coverPerHi">95.7 %</td> + <td class="coverNumHi">22 / 23 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="popcon.h.gcov.html">popcon.h</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=96 height=10 alt="96.0%"><img src="../../snow.png" width=4 height=10 alt="96.0%"></td></tr></table> + </td> + <td class="coverPerHi">96.0 %</td> + <td class="coverNumHi">24 / 25 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="popcon.test.h.gcov.html">popcon.test.h</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> + </td> + <td class="coverPerHi">100.0 %</td> + <td class="coverNumHi">38 / 38 lines</td> + </tr> + + </table> + </center> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/local.cc.gcov.html b/rep/ept/popcon/local.cc.gcov.html new file mode 100644 index 0000000..e6b44b8 --- /dev/null +++ b/rep/ept/popcon/local.cc.gcov.html @@ -0,0 +1,235 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/local.cc</title> + <link rel="stylesheet" type="text/css" href="../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - local.cc</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">66</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">62.1 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">41</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : /** @file +<span class="lineNum"> 2 </span> : * @author Enrico Zini <enrico@enricozini.org> +<span class="lineNum"> 3 </span> : * Correlate popcon data with local popcon information +<span class="lineNum"> 4 </span> : */ +<span class="lineNum"> 5 </span> : +<span class="lineNum"> 6 </span> : /* +<span class="lineNum"> 7 </span> : * Copyright (C) 2007 Enrico Zini <enrico@debian.org> +<span class="lineNum"> 8 </span> : * +<span class="lineNum"> 9 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 10 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 11 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 12 </span> : * (at your option) any later version. +<span class="lineNum"> 13 </span> : * +<span class="lineNum"> 14 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 15 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 16 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 17 </span> : * GNU General Public License for more details. +<span class="lineNum"> 18 </span> : * +<span class="lineNum"> 19 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 20 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 21 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 22 </span> : */ +<span class="lineNum"> 23 </span> : +<span class="lineNum"> 24 </span> : #include <ept/popcon/local.h> +<span class="lineNum"> 25 </span> : #include <ept/popcon/popcon.h> +<span class="lineNum"> 26 </span> : #include <ept/popcon/maint/path.h> +<span class="lineNum"> 27 </span> : +<span class="lineNum"> 28 </span> : #include <wibble/exception.h> +<span class="lineNum"> 29 </span> : +<span class="lineNum"> 30 </span> : #include <algorithm> +<span class="lineNum"> 31 </span> : #include <fstream> +<span class="lineNum"> 32 </span> : #include <cmath> +<span class="lineNum"> 33 </span> : +<span class="lineNum"> 34 </span> : //#include <iostream> +<span class="lineNum"> 35 </span> : +<span class="lineNum"> 36 </span> : using namespace std; +<span class="lineNum"> 37 </span> : +<span class="lineNum"> 38 </span> : namespace ept { +<span class="lineNum"> 39 </span> : namespace popcon { +<span class="lineNum"> 40 </span> : +<span class="lineNum"> 41 </span> : // Split a string where there are separators +<span class="lineNum"> 42 </span><span class="lineCov"> 1903 : static vector<string> split(const std::string& str, char sep = ' ')</span> +<span class="lineNum"> 43 </span> : { +<span class="lineNum"> 44 </span><span class="lineCov"> 1903 : vector<string> res;</span> +<span class="lineNum"> 45 </span><span class="lineCov"> 1903 : size_t start = 0;</span> +<span class="lineNum"> 46 </span><span class="lineCov"> 10435 : while (start < str.size())</span> +<span class="lineNum"> 47 </span> : { +<span class="lineNum"> 48 </span><span class="lineCov"> 8531 : size_t end = str.find(sep, start);</span> +<span class="lineNum"> 49 </span><span class="lineCov"> 8531 : if (end == string::npos)</span> +<span class="lineNum"> 50 </span> : { +<span class="lineNum"> 51 </span><span class="lineCov"> 1902 : res.push_back(str.substr(start));</span> +<span class="lineNum"> 52 </span><span class="lineCov"> 1902 : break;</span> +<span class="lineNum"> 53 </span> : } +<span class="lineNum"> 54 </span> : else +<span class="lineNum"> 55 </span> : { +<span class="lineNum"> 56 </span><span class="lineCov"> 6629 : res.push_back(str.substr(start, end-start));</span> +<span class="lineNum"> 57 </span><span class="lineCov"> 6629 : start = end + 1;</span> +<span class="lineNum"> 58 </span> : } +<span class="lineNum"> 59 </span> : } +<span class="lineNum"> 60 </span><span class="lineNoCov"> 0 : return res;</span> +<span class="lineNum"> 61 </span> : } +<span class="lineNum"> 62 </span> : +<span class="lineNum"> 63 </span> : // Reverse sort pairs by comparing their second element +<span class="lineNum"> 64 </span> : struct secondsort +<span class="lineNum"> 65 </span> : { +<span class="lineNum"> 66 </span><span class="lineNoCov"> 0 : bool operator()(const pair<string, float>& a, const pair<string, float>& b) const</span> +<span class="lineNum"> 67 </span> : { +<span class="lineNum"> 68 </span><span class="lineNoCov"> 0 : if (a.second == b.second)</span> +<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : return a.first > b.first;</span> +<span class="lineNum"> 70 </span> : else +<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : return a.second > b.second;</span> +<span class="lineNum"> 72 </span> : } +<span class="lineNum"> 73 </span> : }; +<span class="lineNum"> 74 </span> : +<span class="lineNum"> 75 </span><span class="lineCov"> 1 : Local::Local(const std::string& file)</span> +<span class="lineNum"> 76 </span> : { +<span class="lineNum"> 77 </span><span class="lineCov"> 1 : m_timestamp = Path::timestamp(file);</span> +<span class="lineNum"> 78 </span><span class="lineCov"> 1 : if (m_timestamp == 0)</span> +<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : return;</span> +<span class="lineNum"> 80 </span> : +<span class="lineNum"> 81 </span><span class="lineCov"> 1 : ifstream in;</span> +<span class="lineNum"> 82 </span><span class="lineCov"> 1 : in.open(file.c_str());</span> +<span class="lineNum"> 83 </span><span class="lineCov"> 1 : if (!in.good())</span> +<span class="lineNum"> 84 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(file, "opening file for reading");</span> +<span class="lineNum"> 85 </span> : +<span class="lineNum"> 86 </span><span class="lineCov"> 1907 : while (!in.eof())</span> +<span class="lineNum"> 87 </span> : { +<span class="lineNum"> 88 </span><span class="lineCov"> 1905 : std::string line;</span> +<span class="lineNum"> 89 </span><span class="lineCov"> 1905 : getline(in, line);</span> +<span class="lineNum"> 90 </span><span class="lineCov"> 1905 : if (line.substr(0, 10) == "POPULARITY")</span> +<span class="lineNum"> 91 </span><span class="lineCov"> 3 : continue;</span> +<span class="lineNum"> 92 </span><span class="lineCov"> 1904 : if (line.substr(0, 14) == "END-POPULARITY")</span> +<span class="lineNum"> 93 </span> : continue; +<span class="lineNum"> 94 </span><span class="lineCov"> 1903 : vector<string> data = split(line);</span> +<span class="lineNum"> 95 </span><span class="lineCov"> 1903 : if (data.size() < 4)</span> +<span class="lineNum"> 96 </span> : continue; +<span class="lineNum"> 97 </span><span class="lineCov"> 1902 : if (data[3] == "<NOFILES>")</span> +<span class="lineNum"> 98 </span> : // This is an empty / virtual package +<span class="lineNum"> 99 </span><span class="lineCov"> 979 : m_scores.insert(make_pair(data[2], 0.1));</span> +<span class="lineNum"> 100 </span><span class="lineCov"> 923 : else if (data.size() == 4)</span> +<span class="lineNum"> 101 </span> : // Package normally in use +<span class="lineNum"> 102 </span><span class="lineNoCov"> 0 : m_scores.insert(make_pair(data[2], 1.0));</span> +<span class="lineNum"> 103 </span><span class="lineCov"> 923 : else if (data[4] == "<OLD>")</span> +<span class="lineNum"> 104 </span> : // Unused packages +<span class="lineNum"> 105 </span><span class="lineCov"> 745 : m_scores.insert(make_pair(data[2], 0.3));</span> +<span class="lineNum"> 106 </span><span class="lineCov"> 178 : else if (data[4] == "<RECENT-CTIME>")</span> +<span class="lineNum"> 107 </span> : // Recently installed packages +<span class="lineNum"> 108 </span><span class="lineCov"> 178 : m_scores.insert(make_pair(data[2], 0.5));</span> +<span class="lineNum"> 109 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 110 </span><span class="lineNoCov"> 0 : }</span> +<span class="lineNum"> 111 </span> : +<span class="lineNum"> 112 </span><span class="lineCov"> 2 : float Local::score(const std::string& pkg) const</span> +<span class="lineNum"> 113 </span> : { +<span class="lineNum"> 114 </span><span class="lineCov"> 2 : std::map<std::string, float>::const_iterator i = m_scores.find(pkg);</span> +<span class="lineNum"> 115 </span><span class="lineCov"> 2 : if (i == m_scores.end())</span> +<span class="lineNum"> 116 </span><span class="lineNoCov"> 0 : return 0;</span> +<span class="lineNum"> 117 </span> : else +<span class="lineNum"> 118 </span><span class="lineCov"> 2 : return i->second;</span> +<span class="lineNum"> 119 </span> : } +<span class="lineNum"> 120 </span> : +<span class="lineNum"> 121 </span> : /** +<span class="lineNum"> 122 </span> : * Return the TFIDF score of the package computed against the popcon +<span class="lineNum"> 123 </span> : * information. +<span class="lineNum"> 124 </span> : */ +<span class="lineNum"> 125 </span><span class="lineCov"> 1 : float Local::tfidf(const Popcon& popcon, const std::string& pkg) const</span> +<span class="lineNum"> 126 </span> : { +<span class="lineNum"> 127 </span><span class="lineCov"> 1 : float popconScore = popcon.score(pkg);</span> +<span class="lineNum"> 128 </span> : //cerr << pkg << ": " << score(pkg) << " * log(" << (float)popcon.submissions() << " / " << popconScore << ") = " << score(pkg) * log((float)popcon.submissions() / popconScore) << endl; +<span class="lineNum"> 129 </span><span class="lineCov"> 1 : if (popconScore == 0)</span> +<span class="lineNum"> 130 </span><span class="lineNoCov"> 0 : return 0;</span> +<span class="lineNum"> 131 </span> : else +<span class="lineNum"> 132 </span><span class="lineCov"> 1 : return score(pkg) * log((float)popcon.submissions() / popconScore);</span> +<span class="lineNum"> 133 </span> : +<span class="lineNum"> 134 </span> : } +<span class="lineNum"> 135 </span> : +<span class="lineNum"> 136 </span><span class="lineNoCov"> 0 : std::vector< std::pair<std::string, float> > Local::scores() const</span> +<span class="lineNum"> 137 </span> : { +<span class="lineNum"> 138 </span><span class="lineNoCov"> 0 : vector< pair<string, float> > res;</span> +<span class="lineNum"> 139 </span> : // Copy the scores in res +<span class="lineNum"> 140 </span><span class="lineNoCov"> 0 : copy(m_scores.begin(), m_scores.end(), back_inserter(res));</span> +<span class="lineNum"> 141 </span> : // Sort res by score +<span class="lineNum"> 142 </span><span class="lineNoCov"> 0 : sort(res.begin(), res.end(), secondsort());</span> +<span class="lineNum"> 143 </span><span class="lineNoCov"> 0 : return res;</span> +<span class="lineNum"> 144 </span> : } +<span class="lineNum"> 145 </span> : +<span class="lineNum"> 146 </span><span class="lineNoCov"> 0 : std::vector< std::pair<std::string, float> > Local::tfidf(const Popcon& popcon) const</span> +<span class="lineNum"> 147 </span> : { +<span class="lineNum"> 148 </span><span class="lineNoCov"> 0 : vector< pair<string, float> > res;</span> +<span class="lineNum"> 149 </span> : // Compute the tfidf scores and store them into res +<span class="lineNum"> 150 </span><span class="lineNoCov"> 0 : for (std::map<std::string, float>::const_iterator i = m_scores.begin();</span> +<span class="lineNum"> 151 </span> : i != m_scores.end(); ++i) +<span class="lineNum"> 152 </span> : { +<span class="lineNum"> 153 </span><span class="lineNoCov"> 0 : float popconScore = popcon.score(i->first);</span> +<span class="lineNum"> 154 </span><span class="lineNoCov"> 0 : if (popconScore == 0)</span> +<span class="lineNum"> 155 </span><span class="lineNoCov"> 0 : res.push_back(make_pair(i->first, 0.0f));</span> +<span class="lineNum"> 156 </span> : else +<span class="lineNum"> 157 </span> : res.push_back(make_pair(i->first, +<span class="lineNum"> 158 </span><span class="lineNoCov"> 0 : i->second * log((float)popcon.submissions() / popconScore)));</span> +<span class="lineNum"> 159 </span> : } +<span class="lineNum"> 160 </span> : // Sort res by score +<span class="lineNum"> 161 </span><span class="lineNoCov"> 0 : sort(res.begin(), res.end(), secondsort());</span> +<span class="lineNum"> 162 </span><span class="lineNoCov"> 0 : return res;</span> +<span class="lineNum"> 163 </span> : } +<span class="lineNum"> 164 </span> : +<span class="lineNum"> 165 </span> : } +<span class="lineNum"> 166 </span><span class="lineCov"> 6 : }</span> +<span class="lineNum"> 167 </span> : +<span class="lineNum"> 168 </span> : // vim:set ts=4 sw=4: +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/local.h.gcov.html b/rep/ept/popcon/local.h.gcov.html new file mode 100644 index 0000000..a8cb45d --- /dev/null +++ b/rep/ept/popcon/local.h.gcov.html @@ -0,0 +1,154 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/local.h</title> + <link rel="stylesheet" type="text/css" href="../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - local.h</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">1</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">100.0 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">1</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : #ifndef EPT_POPCON_LOCAL_H +<span class="lineNum"> 2 </span> : #define EPT_POPCON_LOCAL_H +<span class="lineNum"> 3 </span> : +<span class="lineNum"> 4 </span> : /** @file +<span class="lineNum"> 5 </span> : * @author Enrico Zini <enrico@enricozini.org> +<span class="lineNum"> 6 </span> : * Correlate popcon data with local popcon information +<span class="lineNum"> 7 </span> : */ +<span class="lineNum"> 8 </span> : +<span class="lineNum"> 9 </span> : /* +<span class="lineNum"> 10 </span> : * Copyright (C) 2007 Enrico Zini <enrico@debian.org> +<span class="lineNum"> 11 </span> : * +<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 15 </span> : * (at your option) any later version. +<span class="lineNum"> 16 </span> : * +<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 20 </span> : * GNU General Public License for more details. +<span class="lineNum"> 21 </span> : * +<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 25 </span> : */ +<span class="lineNum"> 26 </span> : +<span class="lineNum"> 27 </span> : #include <string> +<span class="lineNum"> 28 </span> : #include <vector> +<span class="lineNum"> 29 </span> : #include <map> +<span class="lineNum"> 30 </span> : +<span class="lineNum"> 31 </span> : namespace ept { +<span class="lineNum"> 32 </span> : namespace popcon { +<span class="lineNum"> 33 </span> : +<span class="lineNum"> 34 </span> : class Popcon; +<span class="lineNum"> 35 </span> : +<span class="lineNum"> 36 </span> : /** +<span class="lineNum"> 37 </span> : * Access the results of the local daily popcon scan. +<span class="lineNum"> 38 </span> : */ +<span class="lineNum"> 39 </span> : class Local +<span class="lineNum"> 40 </span><span class="lineCov"> 1 : {</span> +<span class="lineNum"> 41 </span> : protected: +<span class="lineNum"> 42 </span> : std::map<std::string, float> m_scores; +<span class="lineNum"> 43 </span> : time_t m_timestamp; +<span class="lineNum"> 44 </span> : +<span class="lineNum"> 45 </span> : public: +<span class="lineNum"> 46 </span> : Local(const std::string& file = std::string("/var/log/popularity-contest")); +<span class="lineNum"> 47 </span> : +<span class="lineNum"> 48 </span> : /// Get the timestamp of the local popcon information +<span class="lineNum"> 49 </span> : time_t timestamp() const { return m_timestamp; } +<span class="lineNum"> 50 </span> : +<span class="lineNum"> 51 </span> : /// Return true if this data source has data, false if it's empty +<span class="lineNum"> 52 </span> : bool hasData() const { return m_timestamp != 0; } +<span class="lineNum"> 53 </span> : +<span class="lineNum"> 54 </span> : /** +<span class="lineNum"> 55 </span> : * Return the local score of the package +<span class="lineNum"> 56 </span> : */ +<span class="lineNum"> 57 </span> : float score(const std::string& pkg) const; +<span class="lineNum"> 58 </span> : +<span class="lineNum"> 59 </span> : /** +<span class="lineNum"> 60 </span> : * Return the TFIDF score of the package computed against the popcon +<span class="lineNum"> 61 </span> : * information. +<span class="lineNum"> 62 </span> : * +<span class="lineNum"> 63 </span> : * The TFIDF score is high when a package is representative of this system, +<span class="lineNum"> 64 </span> : * that is, it is used in this system and not much used in other systems. +<span class="lineNum"> 65 </span> : */ +<span class="lineNum"> 66 </span> : float tfidf(const Popcon& popcon, const std::string& pkg) const; +<span class="lineNum"> 67 </span> : +<span class="lineNum"> 68 </span> : /** +<span class="lineNum"> 69 </span> : * Read the local popcon vote and return the list of packages and their +<span class="lineNum"> 70 </span> : * local scores, sorted by ascending score. +<span class="lineNum"> 71 </span> : */ +<span class="lineNum"> 72 </span> : std::vector< std::pair<std::string, float> > scores() const; +<span class="lineNum"> 73 </span> : +<span class="lineNum"> 74 </span> : /** +<span class="lineNum"> 75 </span> : * Read the local popcon vote and return the list of packages and their +<span class="lineNum"> 76 </span> : * TFIDF scores computed against the popcon information. +<span class="lineNum"> 77 </span> : * +<span class="lineNum"> 78 </span> : * The packages will be sorted by ascending score. +<span class="lineNum"> 79 </span> : */ +<span class="lineNum"> 80 </span> : std::vector< std::pair<std::string, float> > tfidf(const Popcon& popcon) const; +<span class="lineNum"> 81 </span> : }; +<span class="lineNum"> 82 </span> : +<span class="lineNum"> 83 </span> : } +<span class="lineNum"> 84 </span> : } +<span class="lineNum"> 85 </span> : +<span class="lineNum"> 86 </span> : // vim:set ts=4 sw=4: +<span class="lineNum"> 87 </span> : #endif +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/local.test.h.gcov.html b/rep/ept/popcon/local.test.h.gcov.html new file mode 100644 index 0000000..05ce32e --- /dev/null +++ b/rep/ept/popcon/local.test.h.gcov.html @@ -0,0 +1,178 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/local.test.h</title> + <link rel="stylesheet" type="text/css" href="../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - local.test.h</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">8</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">100.0 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">8</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- +<span class="lineNum"> 2 </span> : /* +<span class="lineNum"> 3 </span> : * popcon/local test +<span class="lineNum"> 4 </span> : * +<span class="lineNum"> 5 </span> : * Copyright (C) 2007 Enrico Zini <enrico@debian.org> +<span class="lineNum"> 6 </span> : * +<span class="lineNum"> 7 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 8 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 9 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 10 </span> : * (at your option) any later version. +<span class="lineNum"> 11 </span> : * +<span class="lineNum"> 12 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 13 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 14 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 15 </span> : * GNU General Public License for more details. +<span class="lineNum"> 16 </span> : * +<span class="lineNum"> 17 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 18 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 19 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 20 </span> : */ +<span class="lineNum"> 21 </span> : +<span class="lineNum"> 22 </span> : #include <ept/popcon/local.h> +<span class="lineNum"> 23 </span> : #include <ept/popcon/popcon.h> +<span class="lineNum"> 24 </span> : #include <ept/popcon/maint/path.h> +<span class="lineNum"> 25 </span> : +<span class="lineNum"> 26 </span> : #include <ept/test.h> +<span class="lineNum"> 27 </span> : +<span class="lineNum"> 28 </span> : using namespace std; +<span class="lineNum"> 29 </span> : using namespace ept; +<span class="lineNum"> 30 </span> : using namespace ept::popcon; +<span class="lineNum"> 31 </span> : +<span class="lineNum"> 32 </span> : struct TestPopconLocal +<span class="lineNum"> 33 </span><span class="lineCov"> 1 : {</span> +<span class="lineNum"> 34 </span> : Path::OverridePopconSourceDir odsd; +<span class="lineNum"> 35 </span> : Path::OverridePopconIndexDir odid; +<span class="lineNum"> 36 </span> : Path::OverridePopconUserSourceDir odusd; +<span class="lineNum"> 37 </span> : Path::OverridePopconUserIndexDir oduid; +<span class="lineNum"> 38 </span> : +<span class="lineNum"> 39 </span> : Popcon popcon; +<span class="lineNum"> 40 </span> : Local local; +<span class="lineNum"> 41 </span> : +<span class="lineNum"> 42 </span><span class="lineCov"> 1 : TestPopconLocal()</span> +<span class="lineNum"> 43 </span> : : odsd( TEST_ENV_DIR "popcon" ), +<span class="lineNum"> 44 </span> : odid( TEST_ENV_DIR "popcon" ), +<span class="lineNum"> 45 </span> : odusd( TEST_ENV_DIR "popcon" ), +<span class="lineNum"> 46 </span> : oduid( TEST_ENV_DIR "popcon" ), +<span class="lineNum"> 47 </span><span class="lineCov"> 1 : local( TEST_ENV_DIR "popcon/popularity-contest" )</span> +<span class="lineNum"> 48 </span><span class="lineCov"> 1 : {}</span> +<span class="lineNum"> 49 </span> : +<span class="lineNum"> 50 </span> : // Very basic access +<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test basicAccess()</span> +<span class="lineNum"> 52 </span> : { +<span class="lineNum"> 53 </span><span class="lineCov"> 1 : assert(local.score("apt") > 0);</span> +<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert(local.tfidf(popcon, "apt") > 0);</span> +<span class="lineNum"> 55 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 56 </span> : +<span class="lineNum"> 57 </span> : #if 0 // mornfall: apparently left out by enrico, leaving as it is +<span class="lineNum"> 58 </span> : // Check that every valid index is accessible +<span class="lineNum"> 59 </span> : template<> template<> +<span class="lineNum"> 60 </span> : void to::test< 2 >() +<span class="lineNum"> 61 </span> : { +<span class="lineNum"> 62 </span> : for (size_t i = 0; i < popcon.size(); ++i) +<span class="lineNum"> 63 </span> : { +<span class="lineNum"> 64 </span> : //cerr << popcon.name(i) << " " << popcon.score(i) << endl; +<span class="lineNum"> 65 </span> : assert(popcon.score(i) > 0); +<span class="lineNum"> 66 </span> : } +<span class="lineNum"> 67 </span> : } +<span class="lineNum"> 68 </span> : +<span class="lineNum"> 69 </span> : // Check that we can get a score for every package +<span class="lineNum"> 70 </span> : template<> template<> +<span class="lineNum"> 71 </span> : void to::test< 3 >() +<span class="lineNum"> 72 </span> : { +<span class="lineNum"> 73 </span> : int has = 0; +<span class="lineNum"> 74 </span> : for (Apt::iterator i = apt.begin(); i != apt.end(); ++i) +<span class="lineNum"> 75 </span> : { +<span class="lineNum"> 76 </span> : float score = popcon.score(*i); +<span class="lineNum"> 77 </span> : if (score > 0) +<span class="lineNum"> 78 </span> : ++has; +<span class="lineNum"> 79 </span> : } +<span class="lineNum"> 80 </span> : // At least 1000 packages should have a score +<span class="lineNum"> 81 </span> : assert(has > 1000); +<span class="lineNum"> 82 </span> : } +<span class="lineNum"> 83 </span> : +<span class="lineNum"> 84 </span> : // Check that scores are meaningful +<span class="lineNum"> 85 </span> : template<> template<> +<span class="lineNum"> 86 </span> : void to::test< 4 >() +<span class="lineNum"> 87 </span> : { +<span class="lineNum"> 88 </span> : assert(popcon["apt"] > popcon["libapt-pkg-dev"]); +<span class="lineNum"> 89 </span> : } +<span class="lineNum"> 90 </span> : +<span class="lineNum"> 91 </span> : // If there is no data, Popcon should work as if all scores were 0 +<span class="lineNum"> 92 </span> : template<> template<> +<span class="lineNum"> 93 </span> : void to::test<5>() +<span class="lineNum"> 94 </span> : { +<span class="lineNum"> 95 </span> : Path::OverridePopconSourceDir odsd("./empty"); +<span class="lineNum"> 96 </span> : Path::OverridePopconIndexDir odid("./empty"); +<span class="lineNum"> 97 </span> : Path::OverridePopconUserSourceDir odusd("./empty"); +<span class="lineNum"> 98 </span> : Path::OverridePopconUserIndexDir oduid("./empty"); +<span class="lineNum"> 99 </span> : Popcon empty; +<span class="lineNum"> 100 </span> : +<span class="lineNum"> 101 </span> : assert_eq(empty.timestamp(), 0); +<span class="lineNum"> 102 </span> : assert(!empty.hasData()); +<span class="lineNum"> 103 </span> : +<span class="lineNum"> 104 </span> : assert(empty.size() == 0); +<span class="lineNum"> 105 </span> : assert(empty.score("apt") == 0.0); +<span class="lineNum"> 106 </span> : } +<span class="lineNum"> 107 </span> : #endif +<span class="lineNum"> 108 </span> : +<span class="lineNum"> 109 </span> : }; +<span class="lineNum"> 110 </span> : +<span class="lineNum"> 111 </span> : // vim:set ts=4 sw=4: +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/maint/index.html b/rep/ept/popcon/maint/index.html new file mode 100644 index 0000000..f507903 --- /dev/null +++ b/rep/ept/popcon/maint/index.html @@ -0,0 +1,128 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/maint</title> + <link rel="stylesheet" type="text/css" href="../../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - ept/popcon/maint</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">258</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">88.4 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">228</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <center> + <table width="80%" cellpadding=2 cellspacing=1 border=0> + + <tr> + <td width="50%"><br></td> + <td width="15%"></td> + <td width="15%"></td> + <td width="20%"></td> + </tr> + + <tr> + <td class="tableHead">Filename</td> + <td class="tableHead" colspan=3>Coverage</td> + </tr> + + <tr> + <td class="coverFile"><a href="path.cc.gcov.html">path.cc</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=98 height=10 alt="97.6%"><img src="../../../snow.png" width=2 height=10 alt="97.6%"></td></tr></table> + </td> + <td class="coverPerHi">97.6 %</td> + <td class="coverNumHi">41 / 42 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="path.h.gcov.html">path.h</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> + </td> + <td class="coverPerHi">100.0 %</td> + <td class="coverNumHi">17 / 17 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="popconindexer.cc.gcov.html">popconindexer.cc</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=79 height=10 alt="79.3%"><img src="../../../snow.png" width=21 height=10 alt="79.3%"></td></tr></table> + </td> + <td class="coverPerHi">79.3 %</td> + <td class="coverNumHi">92 / 116 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="popconindexer.h.gcov.html">popconindexer.h</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> + </td> + <td class="coverPerHi">100.0 %</td> + <td class="coverNumHi">5 / 5 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="sourcedir.cc.gcov.html">sourcedir.cc</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=93 height=10 alt="93.4%"><img src="../../../snow.png" width=7 height=10 alt="93.4%"></td></tr></table> + </td> + <td class="coverPerHi">93.4 %</td> + <td class="coverNumHi">71 / 76 lines</td> + </tr> + + <tr> + <td class="coverFile"><a href="sourcedir.h.gcov.html">sourcedir.h</a></td> + <td class="coverBar" align="center"> + <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> + </td> + <td class="coverPerHi">100.0 %</td> + <td class="coverNumHi">2 / 2 lines</td> + </tr> + + </table> + </center> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/maint/path.cc.gcov.html b/rep/ept/popcon/maint/path.cc.gcov.html new file mode 100644 index 0000000..b332e8d --- /dev/null +++ b/rep/ept/popcon/maint/path.cc.gcov.html @@ -0,0 +1,182 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/maint/path.cc</title> + <link rel="stylesheet" type="text/css" href="../../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - path.cc</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">42</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">97.6 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">41</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : // -*- mode: c++; indent-tabs-mode: t -*- +<span class="lineNum"> 2 </span> : +<span class="lineNum"> 3 </span> : /** \file +<span class="lineNum"> 4 </span> : * popcon paths +<span class="lineNum"> 5 </span> : */ +<span class="lineNum"> 6 </span> : +<span class="lineNum"> 7 </span> : /* +<span class="lineNum"> 8 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini <enrico@debian.org>, Peter Rockai <me@mornfall.net> +<span class="lineNum"> 9 </span> : * +<span class="lineNum"> 10 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 11 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 12 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 13 </span> : * (at your option) any later version. +<span class="lineNum"> 14 </span> : * +<span class="lineNum"> 15 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 16 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 17 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 18 </span> : * GNU General Public License for more details. +<span class="lineNum"> 19 </span> : * +<span class="lineNum"> 20 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 21 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 22 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 23 </span> : */ +<span class="lineNum"> 24 </span> : +<span class="lineNum"> 25 </span> : #include <ept/config.h> +<span class="lineNum"> 26 </span> : #include <ept/popcon/maint/path.h> +<span class="lineNum"> 27 </span> : +<span class="lineNum"> 28 </span> : #include <wibble/sys/fs.h> +<span class="lineNum"> 29 </span> : #include <wibble/string.h> +<span class="lineNum"> 30 </span> : +<span class="lineNum"> 31 </span> : #include <sys/types.h> // getpwuid, stat, mkdir, getuid +<span class="lineNum"> 32 </span> : #include <sys/stat.h> // stat, mkdir +<span class="lineNum"> 33 </span> : #include <pwd.h> // getpwuid +<span class="lineNum"> 34 </span> : #include <unistd.h> // stat, getuid +<span class="lineNum"> 35 </span> : +<span class="lineNum"> 36 </span> : using namespace wibble; +<span class="lineNum"> 37 </span> : +<span class="lineNum"> 38 </span> : namespace ept { +<span class="lineNum"> 39 </span> : namespace popcon { +<span class="lineNum"> 40 </span> : +<span class="lineNum"> 41 </span><span class="lineCov"> 2 : static std::string userdir()</span> +<span class="lineNum"> 42 </span> : { +<span class="lineNum"> 43 </span><span class="lineCov"> 2 : std::string rcdir;</span> +<span class="lineNum"> 44 </span> : +<span class="lineNum"> 45 </span><span class="lineCov"> 2 : struct passwd* udata = getpwuid(getuid());</span> +<span class="lineNum"> 46 </span><span class="lineCov"> 2 : rcdir = str::joinpath(udata->pw_dir, ".popcon");</span> +<span class="lineNum"> 47 </span> : +<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : return rcdir;</span> +<span class="lineNum"> 49 </span> : } +<span class="lineNum"> 50 </span> : +<span class="lineNum"> 51 </span> : +<span class="lineNum"> 52 </span><span class="lineCov"> 178 : Path &Path::instance() {</span> +<span class="lineNum"> 53 </span><span class="lineCov"> 178 : if (!s_instance) {</span> +<span class="lineNum"> 54 </span><span class="lineCov"> 1 : s_instance = new Path;</span> +<span class="lineNum"> 55 </span><span class="lineCov"> 1 : instance().m_popconSourceDir = POPCON_DB_DIR;</span> +<span class="lineNum"> 56 </span><span class="lineCov"> 1 : instance().m_popconIndexDir = POPCON_DB_DIR;</span> +<span class="lineNum"> 57 </span><span class="lineCov"> 2 : instance().m_popconUserSourceDir = userdir();</span> +<span class="lineNum"> 58 </span><span class="lineCov"> 2 : instance().m_popconUserIndexDir = userdir();</span> +<span class="lineNum"> 59 </span> : } +<span class="lineNum"> 60 </span><span class="lineCov"> 178 : return *s_instance;</span> +<span class="lineNum"> 61 </span> : } +<span class="lineNum"> 62 </span> : +<span class="lineNum"> 63 </span><span class="lineCov"> 2 : int Path::access( const std::string &s, int m ) {</span> +<span class="lineNum"> 64 </span><span class="lineCov"> 2 : return ::access( s.c_str(), m );</span> +<span class="lineNum"> 65 </span> : } +<span class="lineNum"> 66 </span> : +<span class="lineNum"> 67 </span><span class="lineCov"> 49 : time_t Path::timestamp( const std::string& file ) {</span> +<span class="lineNum"> 68 </span><span class="lineCov"> 49 : std::auto_ptr<struct stat> st = wibble::sys::fs::stat(file);</span> +<span class="lineNum"> 69 </span><span class="lineCov"> 90 : return st.get() == NULL ? 0 : st->st_mtime;</span> +<span class="lineNum"> 70 </span> : } +<span class="lineNum"> 71 </span> : +<span class="lineNum"> 72 </span><span class="lineCov"> 14 : void Path::setPopconSourceDir( const std::string &s )</span> +<span class="lineNum"> 73 </span> : { +<span class="lineNum"> 74 </span><span class="lineCov"> 14 : instance().m_popconSourceDir = s;</span> +<span class="lineNum"> 75 </span><span class="lineCov"> 14 : }</span> +<span class="lineNum"> 76 </span><span class="lineCov"> 14 : void Path::setPopconIndexDir( const std::string &s )</span> +<span class="lineNum"> 77 </span> : { +<span class="lineNum"> 78 </span><span class="lineCov"> 14 : instance().m_popconIndexDir = s;</span> +<span class="lineNum"> 79 </span><span class="lineCov"> 14 : }</span> +<span class="lineNum"> 80 </span><span class="lineCov"> 14 : void Path::setPopconUserSourceDir( const std::string &s )</span> +<span class="lineNum"> 81 </span> : { +<span class="lineNum"> 82 </span><span class="lineCov"> 14 : instance().m_popconUserSourceDir = s;</span> +<span class="lineNum"> 83 </span><span class="lineCov"> 14 : }</span> +<span class="lineNum"> 84 </span><span class="lineCov"> 14 : void Path::setPopconUserIndexDir( const std::string &s )</span> +<span class="lineNum"> 85 </span> : { +<span class="lineNum"> 86 </span><span class="lineCov"> 14 : instance().m_popconUserIndexDir = s;</span> +<span class="lineNum"> 87 </span><span class="lineCov"> 14 : }</span> +<span class="lineNum"> 88 </span> : +<span class="lineNum"> 89 </span><span class="lineCov"> 14 : std::string Path::popconSourceDir() { return instance().m_popconSourceDir; }</span> +<span class="lineNum"> 90 </span><span class="lineCov"> 43 : std::string Path::popconIndexDir() { return instance().m_popconIndexDir; }</span> +<span class="lineNum"> 91 </span><span class="lineCov"> 14 : std::string Path::popconUserSourceDir() { return instance().m_popconUserSourceDir; }</span> +<span class="lineNum"> 92 </span><span class="lineCov"> 47 : std::string Path::popconUserIndexDir() { return instance().m_popconUserIndexDir; }</span> +<span class="lineNum"> 93 </span> : +<span class="lineNum"> 94 </span><span class="lineCov"> 17 : std::string Path::scores() {</span> +<span class="lineNum"> 95 </span><span class="lineCov"> 17 : return str::joinpath(popconIndexDir(), "scores");</span> +<span class="lineNum"> 96 </span> : } +<span class="lineNum"> 97 </span> : +<span class="lineNum"> 98 </span><span class="lineCov"> 17 : std::string Path::scoresIndex() {</span> +<span class="lineNum"> 99 </span><span class="lineCov"> 17 : return str::joinpath(popconIndexDir(), "scores.idx");</span> +<span class="lineNum"> 100 </span> : } +<span class="lineNum"> 101 </span> : +<span class="lineNum"> 102 </span><span class="lineCov"> 20 : std::string Path::userScores() {</span> +<span class="lineNum"> 103 </span><span class="lineCov"> 20 : return str::joinpath(popconUserIndexDir(), "scores");</span> +<span class="lineNum"> 104 </span> : } +<span class="lineNum"> 105 </span> : +<span class="lineNum"> 106 </span><span class="lineCov"> 20 : std::string Path::userScoresIndex() {</span> +<span class="lineNum"> 107 </span><span class="lineCov"> 20 : return str::joinpath(popconUserIndexDir(), "scores.idx");</span> +<span class="lineNum"> 108 </span> : } +<span class="lineNum"> 109 </span> : +<span class="lineNum"> 110 </span> : Path *Path::s_instance = 0; +<span class="lineNum"> 111 </span> : +<span class="lineNum"> 112 </span> : } +<span class="lineNum"> 113 </span> : } +<span class="lineNum"> 114 </span> : +<span class="lineNum"> 115 </span> : // vim:set ts=4 sw=4: +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/maint/path.h.gcov.html b/rep/ept/popcon/maint/path.h.gcov.html new file mode 100644 index 0000000..557613c --- /dev/null +++ b/rep/ept/popcon/maint/path.h.gcov.html @@ -0,0 +1,194 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/maint/path.h</title> + <link rel="stylesheet" type="text/css" href="../../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - path.h</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">17</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">100.0 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">17</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : // -*- mode: c++; indent-tabs-mode: t -*- +<span class="lineNum"> 2 </span> : /** \file +<span class="lineNum"> 3 </span> : * popcon paths +<span class="lineNum"> 4 </span> : */ +<span class="lineNum"> 5 </span> : +<span class="lineNum"> 6 </span> : /* +<span class="lineNum"> 7 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini <enrico@debian.org> +<span class="lineNum"> 8 </span> : * +<span class="lineNum"> 9 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 10 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 11 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 12 </span> : * (at your option) any later version. +<span class="lineNum"> 13 </span> : * +<span class="lineNum"> 14 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 15 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 16 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 17 </span> : * GNU General Public License for more details. +<span class="lineNum"> 18 </span> : * +<span class="lineNum"> 19 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 20 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 21 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 22 </span> : */ +<span class="lineNum"> 23 </span> : +<span class="lineNum"> 24 </span> : #ifndef EPT_POPCON_PATH_H +<span class="lineNum"> 25 </span> : #define EPT_POPCON_PATH_H +<span class="lineNum"> 26 </span> : +<span class="lineNum"> 27 </span> : #include <string> +<span class="lineNum"> 28 </span> : +<span class="lineNum"> 29 </span> : struct stat; +<span class="lineNum"> 30 </span> : +<span class="lineNum"> 31 </span> : namespace ept { +<span class="lineNum"> 32 </span> : namespace popcon { +<span class="lineNum"> 33 </span> : +<span class="lineNum"> 34 </span> : /** +<span class="lineNum"> 35 </span> : * Singleton class to configure and access the various Popcon paths +<span class="lineNum"> 36 </span> : */ +<span class="lineNum"> 37 </span> : class Path +<span class="lineNum"> 38 </span><span class="lineCov"> 1 : {</span> +<span class="lineNum"> 39 </span> : public: +<span class="lineNum"> 40 </span> : static std::string scores(); +<span class="lineNum"> 41 </span> : static std::string scoresIndex(); +<span class="lineNum"> 42 </span> : static std::string userScores(); +<span class="lineNum"> 43 </span> : static std::string userScoresIndex(); +<span class="lineNum"> 44 </span> : +<span class="lineNum"> 45 </span> : static std::string popconSourceDir(); +<span class="lineNum"> 46 </span> : static std::string popconIndexDir(); +<span class="lineNum"> 47 </span> : static std::string popconUserSourceDir(); +<span class="lineNum"> 48 </span> : static std::string popconUserIndexDir(); +<span class="lineNum"> 49 </span> : +<span class="lineNum"> 50 </span> : // Directory where Popcon source data is found +<span class="lineNum"> 51 </span> : static void setPopconSourceDir( const std::string &s ); +<span class="lineNum"> 52 </span> : +<span class="lineNum"> 53 </span> : // Directory where Popcon indexes are kept +<span class="lineNum"> 54 </span> : static void setPopconIndexDir( const std::string &s ); +<span class="lineNum"> 55 </span> : +<span class="lineNum"> 56 </span> : // User-specific directory for Popcon source data +<span class="lineNum"> 57 </span> : static void setPopconUserSourceDir( const std::string &s ); +<span class="lineNum"> 58 </span> : +<span class="lineNum"> 59 </span> : // User-specific directory for Popcon index data +<span class="lineNum"> 60 </span> : static void setPopconUserIndexDir( const std::string &s ); +<span class="lineNum"> 61 </span> : +<span class="lineNum"> 62 </span> : static int access( const std::string &, int ); +<span class="lineNum"> 63 </span> : static time_t timestamp( const std::string& ); +<span class="lineNum"> 64 </span> : +<span class="lineNum"> 65 </span> : // RAII-style classes to temporarily override directories +<span class="lineNum"> 66 </span> : class OverridePopconSourceDir +<span class="lineNum"> 67 </span> : { +<span class="lineNum"> 68 </span> : std::string old; +<span class="lineNum"> 69 </span> : public: +<span class="lineNum"> 70 </span><span class="lineCov"> 7 : OverridePopconSourceDir(const std::string& path) : old(Path::popconSourceDir())</span> +<span class="lineNum"> 71 </span> : { +<span class="lineNum"> 72 </span><span class="lineCov"> 7 : Path::setPopconSourceDir(path);</span> +<span class="lineNum"> 73 </span><span class="lineCov"> 7 : }</span> +<span class="lineNum"> 74 </span><span class="lineCov"> 7 : ~OverridePopconSourceDir() { Path::setPopconSourceDir(old); }</span> +<span class="lineNum"> 75 </span> : }; +<span class="lineNum"> 76 </span> : class OverridePopconIndexDir +<span class="lineNum"> 77 </span> : { +<span class="lineNum"> 78 </span> : std::string old; +<span class="lineNum"> 79 </span> : public: +<span class="lineNum"> 80 </span><span class="lineCov"> 7 : OverridePopconIndexDir(const std::string& path) : old(Path::popconIndexDir())</span> +<span class="lineNum"> 81 </span> : { +<span class="lineNum"> 82 </span><span class="lineCov"> 7 : Path::setPopconIndexDir(path);</span> +<span class="lineNum"> 83 </span><span class="lineCov"> 7 : }</span> +<span class="lineNum"> 84 </span><span class="lineCov"> 7 : ~OverridePopconIndexDir() { Path::setPopconIndexDir(old); }</span> +<span class="lineNum"> 85 </span> : }; +<span class="lineNum"> 86 </span> : class OverridePopconUserSourceDir +<span class="lineNum"> 87 </span> : { +<span class="lineNum"> 88 </span> : std::string old; +<span class="lineNum"> 89 </span> : public: +<span class="lineNum"> 90 </span><span class="lineCov"> 7 : OverridePopconUserSourceDir(const std::string& path) : old(Path::popconUserSourceDir())</span> +<span class="lineNum"> 91 </span> : { +<span class="lineNum"> 92 </span><span class="lineCov"> 7 : Path::setPopconUserSourceDir(path);</span> +<span class="lineNum"> 93 </span><span class="lineCov"> 7 : }</span> +<span class="lineNum"> 94 </span><span class="lineCov"> 7 : ~OverridePopconUserSourceDir() { Path::setPopconUserSourceDir(old); }</span> +<span class="lineNum"> 95 </span> : }; +<span class="lineNum"> 96 </span> : class OverridePopconUserIndexDir +<span class="lineNum"> 97 </span> : { +<span class="lineNum"> 98 </span> : std::string old; +<span class="lineNum"> 99 </span> : public: +<span class="lineNum"> 100 </span><span class="lineCov"> 7 : OverridePopconUserIndexDir(const std::string& path) : old(Path::popconUserIndexDir())</span> +<span class="lineNum"> 101 </span> : { +<span class="lineNum"> 102 </span><span class="lineCov"> 7 : Path::setPopconUserIndexDir(path);</span> +<span class="lineNum"> 103 </span><span class="lineCov"> 7 : }</span> +<span class="lineNum"> 104 </span><span class="lineCov"> 7 : ~OverridePopconUserIndexDir() { Path::setPopconUserIndexDir(old); }</span> +<span class="lineNum"> 105 </span> : }; +<span class="lineNum"> 106 </span> : protected: +<span class="lineNum"> 107 </span> : static Path *s_instance; +<span class="lineNum"> 108 </span> : static Path &instance(); +<span class="lineNum"> 109 </span> : +<span class="lineNum"> 110 </span> : // Directory where Popcon source data is found +<span class="lineNum"> 111 </span> : std::string m_popconSourceDir; +<span class="lineNum"> 112 </span> : +<span class="lineNum"> 113 </span> : // Directory where Popcon indexes are kept +<span class="lineNum"> 114 </span> : std::string m_popconIndexDir; +<span class="lineNum"> 115 </span> : +<span class="lineNum"> 116 </span> : // User-specific directory for Popcon source data +<span class="lineNum"> 117 </span> : std::string m_popconUserSourceDir; +<span class="lineNum"> 118 </span> : +<span class="lineNum"> 119 </span> : // User-specific directory for Popcon index data +<span class="lineNum"> 120 </span> : std::string m_popconUserIndexDir; +<span class="lineNum"> 121 </span> : }; +<span class="lineNum"> 122 </span> : +<span class="lineNum"> 123 </span> : } +<span class="lineNum"> 124 </span> : } +<span class="lineNum"> 125 </span> : +<span class="lineNum"> 126 </span> : // vim:set ts=4 sw=4: +<span class="lineNum"> 127 </span> : #endif +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/maint/popconindexer.cc.gcov.html b/rep/ept/popcon/maint/popconindexer.cc.gcov.html new file mode 100644 index 0000000..28d6298 --- /dev/null +++ b/rep/ept/popcon/maint/popconindexer.cc.gcov.html @@ -0,0 +1,314 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/maint/popconindexer.cc</title> + <link rel="stylesheet" type="text/css" href="../../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - popconindexer.cc</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">116</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">79.3 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">92</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : #include <ept/popcon/popcon.h> +<span class="lineNum"> 2 </span> : #include <ept/popcon/maint/popconindexer.h> +<span class="lineNum"> 3 </span> : #include <ept/popcon/maint/path.h> +<span class="lineNum"> 4 </span> : +<span class="lineNum"> 5 </span> : #include <wibble/exception.h> +<span class="lineNum"> 6 </span> : #include <wibble/sys/fs.h> +<span class="lineNum"> 7 </span> : +<span class="lineNum"> 8 </span> : #include <tagcoll/diskindex/mmap.h> +<span class="lineNum"> 9 </span> : +<span class="lineNum"> 10 </span> : #include <set> +<span class="lineNum"> 11 </span> : #include <string> +<span class="lineNum"> 12 </span> : #include <cstdio> +<span class="lineNum"> 13 </span> : #include <cstring> +<span class="lineNum"> 14 </span> : +<span class="lineNum"> 15 </span> : using namespace std; +<span class="lineNum"> 16 </span> : +<span class="lineNum"> 17 </span> : namespace ept { +<span class="lineNum"> 18 </span> : namespace popcon { +<span class="lineNum"> 19 </span> : +<span class="lineNum"> 20 </span> : template<typename STRUCT> +<span class="lineNum"> 21 </span> : struct StructIndexer : public tagcoll::diskindex::MMapIndexer +<span class="lineNum"> 22 </span><span class="lineCov"> 1 : {</span> +<span class="lineNum"> 23 </span> : const STRUCT& data; +<span class="lineNum"> 24 </span><span class="lineCov"> 1 : StructIndexer(const STRUCT& data) : data(data) {}</span> +<span class="lineNum"> 25 </span> : +<span class="lineNum"> 26 </span><span class="lineCov"> 1 : int encodedSize() const { return sizeof(STRUCT); }</span> +<span class="lineNum"> 27 </span><span class="lineCov"> 1 : void encode(char* buf) const { *(STRUCT*)buf = data; }</span> +<span class="lineNum"> 28 </span> : }; +<span class="lineNum"> 29 </span> : +<span class="lineNum"> 30 </span> : /// MMapIndexer that indexes the package names +<span class="lineNum"> 31 </span> : struct PopconGenerator : public tagcoll::diskindex::MMapIndexer +<span class="lineNum"> 32 </span><span class="lineCov"> 4 : {</span> +<span class="lineNum"> 33 </span> : // Sorted set of all available package names and data +<span class="lineNum"> 34 </span> : std::map<std::string, Score> data; +<span class="lineNum"> 35 </span> : +<span class="lineNum"> 36 </span><span class="lineCov"> 1 : int encodedSize() const</span> +<span class="lineNum"> 37 </span> : { +<span class="lineNum"> 38 </span><span class="lineCov"> 1 : int size = data.size() * sizeof(Score);</span> +<span class="lineNum"> 39 </span><span class="lineCov"> 69911 : for (std::map<std::string, Score>::const_iterator i = data.begin();</span> +<span class="lineNum"> 40 </span> : i != data.end(); ++i) +<span class="lineNum"> 41 </span><span class="lineCov"> 69910 : size += i->first.size() + 1;</span> +<span class="lineNum"> 42 </span><span class="lineCov"> 1 : return tagcoll::diskindex::MMap::align(size);</span> +<span class="lineNum"> 43 </span> : } +<span class="lineNum"> 44 </span> : +<span class="lineNum"> 45 </span><span class="lineCov"> 1 : void encode(char* buf) const</span> +<span class="lineNum"> 46 </span> : { +<span class="lineNum"> 47 </span><span class="lineCov"> 1 : int pos = data.size() * sizeof(Score);</span> +<span class="lineNum"> 48 </span><span class="lineCov"> 1 : int idx = 0;</span> +<span class="lineNum"> 49 </span><span class="lineCov"> 69911 : for (std::map<std::string, Score>::const_iterator i = data.begin();</span> +<span class="lineNum"> 50 </span> : i != data.end(); ++i) +<span class="lineNum"> 51 </span> : { +<span class="lineNum"> 52 </span><span class="lineCov"> 69910 : ((Score*)buf)[idx] = i->second;</span> +<span class="lineNum"> 53 </span><span class="lineCov"> 69910 : ((Score*)buf)[idx].offset = pos;</span> +<span class="lineNum"> 54 </span><span class="lineCov"> 69910 : memcpy(buf + pos, i->first.c_str(), i->first.size() + 1);</span> +<span class="lineNum"> 55 </span><span class="lineCov"> 69910 : pos += i->first.size() + 1;</span> +<span class="lineNum"> 56 </span><span class="lineCov"> 69910 : ++idx;</span> +<span class="lineNum"> 57 </span> : } +<span class="lineNum"> 58 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 59 </span> : }; +<span class="lineNum"> 60 </span> : +<span class="lineNum"> 61 </span> : +<span class="lineNum"> 62 </span><span class="lineCov"> 7 : PopconIndexer::PopconIndexer()</span> +<span class="lineNum"> 63 </span> : : mainSource(Path::popconSourceDir()), +<span class="lineNum"> 64 </span><span class="lineCov"> 7 : userSource(Path::popconUserSourceDir())</span> +<span class="lineNum"> 65 </span> : { +<span class="lineNum"> 66 </span><span class="lineCov"> 7 : rescan();</span> +<span class="lineNum"> 67 </span><span class="lineCov"> 7 : }</span> +<span class="lineNum"> 68 </span> : +<span class="lineNum"> 69 </span><span class="lineCov"> 7 : void PopconIndexer::rescan()</span> +<span class="lineNum"> 70 </span> : { +<span class="lineNum"> 71 </span><span class="lineCov"> 7 : ts_main_src = mainSource.timestamp();</span> +<span class="lineNum"> 72 </span><span class="lineCov"> 7 : ts_user_src = userSource.timestamp();</span> +<span class="lineNum"> 73 </span><span class="lineCov"> 7 : ts_main_sco = Path::timestamp(Path::scores());</span> +<span class="lineNum"> 74 </span><span class="lineCov"> 14 : ts_user_sco = Path::timestamp(Path::userScores());</span> +<span class="lineNum"> 75 </span><span class="lineCov"> 14 : ts_main_idx = Path::timestamp(Path::scoresIndex());</span> +<span class="lineNum"> 76 </span><span class="lineCov"> 14 : ts_user_idx = Path::timestamp(Path::userScoresIndex());</span> +<span class="lineNum"> 77 </span><span class="lineCov"> 7 : }</span> +<span class="lineNum"> 78 </span> : +<span class="lineNum"> 79 </span><span class="lineCov"> 7 : bool PopconIndexer::needsRebuild() const</span> +<span class="lineNum"> 80 </span> : { +<span class="lineNum"> 81 </span> : // If there are no indexes of any kind, then we need rebuilding +<span class="lineNum"> 82 </span><span class="lineCov"> 7 : if (ts_user_sco == 0 || ts_main_sco == 0 || ts_user_idx == 0 && ts_main_idx == 0)</span> +<span class="lineNum"> 83 </span><span class="lineCov"> 2 : return true;</span> +<span class="lineNum"> 84 </span> : +<span class="lineNum"> 85 </span> : // If the user index is ok, then we are fine +<span class="lineNum"> 86 </span><span class="lineCov"> 5 : if (ts_user_sco >= sourceTimestamp() && ts_user_idx >= sourceTimestamp())</span> +<span class="lineNum"> 87 </span><span class="lineCov"> 5 : return false;</span> +<span class="lineNum"> 88 </span> : +<span class="lineNum"> 89 </span> : // If there are user sources, then we cannot use the system index +<span class="lineNum"> 90 </span><span class="lineNoCov"> 0 : if (ts_user_src > 0)</span> +<span class="lineNum"> 91 </span><span class="lineNoCov"> 0 : return true;</span> +<span class="lineNum"> 92 </span> : +<span class="lineNum"> 93 </span> : // If there are no user sources, then we can fallback on the system +<span class="lineNum"> 94 </span> : // indexes in case the user indexes are not up to date +<span class="lineNum"> 95 </span><span class="lineNoCov"> 0 : if (ts_main_sco >= sourceTimestamp() && ts_main_idx >= sourceTimestamp())</span> +<span class="lineNum"> 96 </span><span class="lineNoCov"> 0 : return false;</span> +<span class="lineNum"> 97 </span> : +<span class="lineNum"> 98 </span><span class="lineNoCov"> 0 : return true;</span> +<span class="lineNum"> 99 </span> : } +<span class="lineNum"> 100 </span> : +<span class="lineNum"> 101 </span><span class="lineCov"> 7 : bool PopconIndexer::userIndexIsRedundant() const</span> +<span class="lineNum"> 102 </span> : { +<span class="lineNum"> 103 </span> : // If there is no user index, then it is not redundant +<span class="lineNum"> 104 </span><span class="lineCov"> 7 : if (ts_user_idx == 0)</span> +<span class="lineNum"> 105 </span><span class="lineCov"> 1 : return false;</span> +<span class="lineNum"> 106 </span> : +<span class="lineNum"> 107 </span> : // If the system index is not up to date, then the user index is not +<span class="lineNum"> 108 </span> : // redundant +<span class="lineNum"> 109 </span><span class="lineCov"> 6 : if (ts_main_idx < sourceTimestamp())</span> +<span class="lineNum"> 110 </span><span class="lineNoCov"> 0 : return false;</span> +<span class="lineNum"> 111 </span> : +<span class="lineNum"> 112 </span><span class="lineCov"> 6 : return true;</span> +<span class="lineNum"> 113 </span> : } +<span class="lineNum"> 114 </span> : +<span class="lineNum"> 115 </span><span class="lineCov"> 2 : bool PopconIndexer::rebuild(const std::string& scofname, const std::string& idxfname)</span> +<span class="lineNum"> 116 </span> : { +<span class="lineNum"> 117 </span><span class="lineCov"> 2 : PopconGenerator gen;</span> +<span class="lineNum"> 118 </span> : InfoStruct is; +<span class="lineNum"> 119 </span><span class="lineCov"> 2 : is.submissions = 0;</span> +<span class="lineNum"> 120 </span><span class="lineCov"> 2 : if (!mainSource.readScores(gen.data, is.submissions))</span> +<span class="lineNum"> 121 </span><span class="lineCov"> 1 : userSource.readScores(gen.data, is.submissions);</span> +<span class="lineNum"> 122 </span><span class="lineCov"> 2 : if (gen.data.empty())</span> +<span class="lineNum"> 123 </span><span class="lineCov"> 1 : return false;</span> +<span class="lineNum"> 124 </span> : +<span class="lineNum"> 125 </span><span class="lineCov"> 1 : StructIndexer<InfoStruct> infoStruct(is);</span> +<span class="lineNum"> 126 </span> : +<span class="lineNum"> 127 </span> : // Create the index +<span class="lineNum"> 128 </span><span class="lineCov"> 1 : tagcoll::diskindex::MasterMMapIndexer master(idxfname);</span> +<span class="lineNum"> 129 </span><span class="lineCov"> 1 : master.append(gen);</span> +<span class="lineNum"> 130 </span><span class="lineCov"> 1 : master.append(infoStruct);</span> +<span class="lineNum"> 131 </span><span class="lineCov"> 1 : master.commit();</span> +<span class="lineNum"> 132 </span> : +<span class="lineNum"> 133 </span> : // for (map<string, Score>::const_iterator i = gen.data.begin(); i != gen.data.end(); ++i) +<span class="lineNum"> 134 </span> : // { +<span class="lineNum"> 135 </span> : // fprintf(stderr, "%s %d %f\n", i->first.c_str(), i->second.offset, i->second.score); +<span class="lineNum"> 136 </span> : // } +<span class="lineNum"> 137 </span> : +<span class="lineNum"> 138 </span> : // Create the score file +<span class="lineNum"> 139 </span><span class="lineCov"> 1 : FILE* out = fopen(scofname.c_str(), "wt");</span> +<span class="lineNum"> 140 </span><span class="lineCov"> 1 : if (out == NULL)</span> +<span class="lineNum"> 141 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(scofname, "opening and truncating file for writing");</span> +<span class="lineNum"> 142 </span><span class="lineCov"> 69911 : for (map<string, Score>::const_iterator i = gen.data.begin();</span> +<span class="lineNum"> 143 </span> : i != gen.data.end(); ++i) +<span class="lineNum"> 144 </span> : { +<span class="lineNum"> 145 </span><span class="lineCov"> 69910 : fprintf(out, "%s %f\n", i->first.c_str(), i->second.score);</span> +<span class="lineNum"> 146 </span> : } +<span class="lineNum"> 147 </span><span class="lineCov"> 1 : fclose(out);</span> +<span class="lineNum"> 148 </span><span class="lineCov"> 1 : return true;</span> +<span class="lineNum"> 149 </span> : } +<span class="lineNum"> 150 </span> : +<span class="lineNum"> 151 </span><span class="lineCov"> 7 : bool PopconIndexer::rebuildIfNeeded()</span> +<span class="lineNum"> 152 </span> : { +<span class="lineNum"> 153 </span><span class="lineCov"> 7 : if (needsRebuild())</span> +<span class="lineNum"> 154 </span> : { +<span class="lineNum"> 155 </span> : // Decide if we rebuild the user index or the system index +<span class="lineNum"> 156 </span><span class="lineCov"> 2 : if (Path::access(Path::popconIndexDir(), W_OK) == 0)</span> +<span class="lineNum"> 157 </span> : { +<span class="lineNum"> 158 </span> : // Since we can write on the system index directory, we rebuild +<span class="lineNum"> 159 </span> : // the system index +<span class="lineNum"> 160 </span><span class="lineCov"> 2 : if (!rebuild(Path::scores(), Path::scoresIndex()))</span> +<span class="lineNum"> 161 </span><span class="lineCov"> 1 : return false;</span> +<span class="lineNum"> 162 </span><span class="lineCov"> 1 : ts_main_sco = Path::timestamp(Path::scores());</span> +<span class="lineNum"> 163 </span><span class="lineCov"> 2 : ts_main_idx = Path::timestamp(Path::scoresIndex());</span> +<span class="lineNum"> 164 </span><span class="lineCov"> 2 : if (Path::scores() == Path::userScores())</span> +<span class="lineNum"> 165 </span><span class="lineCov"> 1 : ts_user_sco = ts_main_sco;</span> +<span class="lineNum"> 166 </span><span class="lineCov"> 1 : if (Path::scoresIndex() == Path::userScoresIndex())</span> +<span class="lineNum"> 167 </span><span class="lineCov"> 1 : ts_user_idx = ts_main_idx;</span> +<span class="lineNum"> 168 </span> : } else { +<span class="lineNum"> 169 </span><span class="lineNoCov"> 0 : wibble::sys::fs::mkFilePath(Path::userScores());</span> +<span class="lineNum"> 170 </span><span class="lineNoCov"> 0 : wibble::sys::fs::mkFilePath(Path::userScoresIndex());</span> +<span class="lineNum"> 171 </span><span class="lineNoCov"> 0 : if (!rebuild(Path::userScores(), Path::userScoresIndex()))</span> +<span class="lineNum"> 172 </span><span class="lineNoCov"> 0 : return false;</span> +<span class="lineNum"> 173 </span><span class="lineNoCov"> 0 : ts_user_sco = Path::timestamp(Path::userScores());</span> +<span class="lineNum"> 174 </span><span class="lineNoCov"> 0 : ts_user_idx = Path::timestamp(Path::userScoresIndex());</span> +<span class="lineNum"> 175 </span> : } +<span class="lineNum"> 176 </span><span class="lineCov"> 1 : return true;</span> +<span class="lineNum"> 177 </span> : } +<span class="lineNum"> 178 </span><span class="lineCov"> 5 : return false;</span> +<span class="lineNum"> 179 </span> : } +<span class="lineNum"> 180 </span> : +<span class="lineNum"> 181 </span><span class="lineCov"> 7 : bool PopconIndexer::deleteRedundantUserIndex()</span> +<span class="lineNum"> 182 </span> : { +<span class="lineNum"> 183 </span><span class="lineCov"> 7 : if (userIndexIsRedundant())</span> +<span class="lineNum"> 184 </span> : { +<span class="lineNum"> 185 </span> : // Delete the user indexes if they exist +<span class="lineNum"> 186 </span><span class="lineCov"> 6 : if (Path::scores() != Path::userScores())</span> +<span class="lineNum"> 187 </span> : { +<span class="lineNum"> 188 </span><span class="lineNoCov"> 0 : unlink(Path::userScores().c_str());</span> +<span class="lineNum"> 189 </span><span class="lineNoCov"> 0 : ts_user_sco = 0;</span> +<span class="lineNum"> 190 </span> : } +<span class="lineNum"> 191 </span><span class="lineCov"> 6 : if (Path::scoresIndex() != Path::userScoresIndex())</span> +<span class="lineNum"> 192 </span> : { +<span class="lineNum"> 193 </span><span class="lineNoCov"> 0 : unlink(Path::userScoresIndex().c_str());</span> +<span class="lineNum"> 194 </span><span class="lineNoCov"> 0 : ts_user_idx = 0;</span> +<span class="lineNum"> 195 </span> : } +<span class="lineNum"> 196 </span><span class="lineCov"> 6 : return true;</span> +<span class="lineNum"> 197 </span> : } +<span class="lineNum"> 198 </span><span class="lineCov"> 1 : return false;</span> +<span class="lineNum"> 199 </span> : } +<span class="lineNum"> 200 </span> : +<span class="lineNum"> 201 </span><span class="lineCov"> 7 : bool PopconIndexer::getUpToDatePopcon(std::string& scofname, std::string& idxfname)</span> +<span class="lineNum"> 202 </span> : { +<span class="lineNum"> 203 </span> : // If there are no indexes of any kind, then we have nothing to return +<span class="lineNum"> 204 </span><span class="lineCov"> 7 : if (ts_user_sco == 0 && ts_main_sco == 0 && ts_user_idx == 0 && ts_main_idx == 0)</span> +<span class="lineNum"> 205 </span><span class="lineCov"> 1 : return false;</span> +<span class="lineNum"> 206 </span> : +<span class="lineNum"> 207 </span> : // If the user index is up to date, use it +<span class="lineNum"> 208 </span><span class="lineCov"> 6 : if (ts_user_sco >= sourceTimestamp() &&</span> +<span class="lineNum"> 209 </span> : ts_user_idx >= sourceTimestamp()) +<span class="lineNum"> 210 </span> : { +<span class="lineNum"> 211 </span><span class="lineCov"> 6 : scofname = Path::userScores();</span> +<span class="lineNum"> 212 </span><span class="lineCov"> 12 : idxfname = Path::userScoresIndex();</span> +<span class="lineNum"> 213 </span><span class="lineCov"> 6 : return true;</span> +<span class="lineNum"> 214 </span> : } +<span class="lineNum"> 215 </span> : +<span class="lineNum"> 216 </span> : // If the user index is not up to date and we have user sources, we cannot +<span class="lineNum"> 217 </span> : // fall back to the system index +<span class="lineNum"> 218 </span><span class="lineNoCov"> 0 : if (ts_user_src != 0)</span> +<span class="lineNum"> 219 </span><span class="lineNoCov"> 0 : return false;</span> +<span class="lineNum"> 220 </span> : +<span class="lineNum"> 221 </span> : // Fallback to the system index +<span class="lineNum"> 222 </span><span class="lineNoCov"> 0 : if (ts_main_sco >= sourceTimestamp() &&</span> +<span class="lineNum"> 223 </span> : ts_main_idx >= sourceTimestamp()) +<span class="lineNum"> 224 </span> : { +<span class="lineNum"> 225 </span><span class="lineNoCov"> 0 : scofname = Path::scores();</span> +<span class="lineNum"> 226 </span><span class="lineNoCov"> 0 : idxfname = Path::scoresIndex();</span> +<span class="lineNum"> 227 </span><span class="lineNoCov"> 0 : return true;</span> +<span class="lineNum"> 228 </span> : } +<span class="lineNum"> 229 </span> : +<span class="lineNum"> 230 </span><span class="lineNoCov"> 0 : return false;</span> +<span class="lineNum"> 231 </span> : } +<span class="lineNum"> 232 </span> : +<span class="lineNum"> 233 </span> : +<span class="lineNum"> 234 </span><span class="lineCov"> 7 : bool PopconIndexer::obtainWorkingPopcon(std::string& scofname, std::string& idxfname)</span> +<span class="lineNum"> 235 </span> : { +<span class="lineNum"> 236 </span><span class="lineCov"> 7 : PopconIndexer indexer;</span> +<span class="lineNum"> 237 </span> : +<span class="lineNum"> 238 </span><span class="lineCov"> 7 : indexer.rebuildIfNeeded();</span> +<span class="lineNum"> 239 </span><span class="lineCov"> 7 : indexer.deleteRedundantUserIndex();</span> +<span class="lineNum"> 240 </span><span class="lineCov"> 7 : return indexer.getUpToDatePopcon(scofname, idxfname);</span> +<span class="lineNum"> 241 </span> : } +<span class="lineNum"> 242 </span> : +<span class="lineNum"> 243 </span> : +<span class="lineNum"> 244 </span> : } +<span class="lineNum"> 245 </span><span class="lineCov"> 6 : }</span> +<span class="lineNum"> 246 </span> : +<span class="lineNum"> 247 </span> : // vim:set ts=4 sw=4: +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/maint/popconindexer.h.gcov.html b/rep/ept/popcon/maint/popconindexer.h.gcov.html new file mode 100644 index 0000000..fe36a9d --- /dev/null +++ b/rep/ept/popcon/maint/popconindexer.h.gcov.html @@ -0,0 +1,142 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/maint/popconindexer.h</title> + <link rel="stylesheet" type="text/css" href="../../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - popconindexer.h</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">5</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">100.0 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">5</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : #ifndef EPT_DEBTAGS_PKGIDINDEXER_H +<span class="lineNum"> 2 </span> : #define EPT_DEBTAGS_PKGIDINDEXER_H +<span class="lineNum"> 3 </span> : +<span class="lineNum"> 4 </span> : /** @file +<span class="lineNum"> 5 </span> : * @author Enrico Zini <enrico@enricozini.org> +<span class="lineNum"> 6 </span> : * Rebuild and maintain the map from package IDs to package names +<span class="lineNum"> 7 </span> : */ +<span class="lineNum"> 8 </span> : +<span class="lineNum"> 9 </span> : /* +<span class="lineNum"> 10 </span> : * Copyright (C) 2003-2007 Enrico Zini <enrico@debian.org> +<span class="lineNum"> 11 </span> : * +<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 15 </span> : * (at your option) any later version. +<span class="lineNum"> 16 </span> : * +<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 20 </span> : * GNU General Public License for more details. +<span class="lineNum"> 21 </span> : * +<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 25 </span> : */ +<span class="lineNum"> 26 </span> : +<span class="lineNum"> 27 </span> : #include <ept/popcon/maint/sourcedir.h> +<span class="lineNum"> 28 </span> : #include <string> +<span class="lineNum"> 29 </span> : +<span class="lineNum"> 30 </span> : namespace ept { +<span class="lineNum"> 31 </span> : namespace popcon { +<span class="lineNum"> 32 </span> : +<span class="lineNum"> 33 </span> : struct InfoStruct +<span class="lineNum"> 34 </span> : { +<span class="lineNum"> 35 </span> : size_t submissions; +<span class="lineNum"> 36 </span> : }; +<span class="lineNum"> 37 </span> : +<span class="lineNum"> 38 </span> : struct PopconIndexer +<span class="lineNum"> 39 </span><span class="lineCov"> 7 : {</span> +<span class="lineNum"> 40 </span> : SourceDir mainSource; +<span class="lineNum"> 41 </span> : SourceDir userSource; +<span class="lineNum"> 42 </span> : time_t ts_main_src; +<span class="lineNum"> 43 </span> : time_t ts_user_src; +<span class="lineNum"> 44 </span> : time_t ts_main_sco; +<span class="lineNum"> 45 </span> : time_t ts_user_sco; +<span class="lineNum"> 46 </span> : time_t ts_main_idx; +<span class="lineNum"> 47 </span> : time_t ts_user_idx; +<span class="lineNum"> 48 </span> : +<span class="lineNum"> 49 </span><span class="lineCov"> 28 : time_t sourceTimestamp() const</span> +<span class="lineNum"> 50 </span> : { +<span class="lineNum"> 51 </span><span class="lineCov"> 28 : time_t res = ts_main_src;</span> +<span class="lineNum"> 52 </span><span class="lineCov"> 28 : if (ts_user_src > res) res = ts_user_src;</span> +<span class="lineNum"> 53 </span><span class="lineCov"> 28 : return res;</span> +<span class="lineNum"> 54 </span> : +<span class="lineNum"> 55 </span> : } +<span class="lineNum"> 56 </span> : bool needsRebuild() const; +<span class="lineNum"> 57 </span> : bool rebuild(const std::string& scofname, const std::string& idxfname); +<span class="lineNum"> 58 </span> : bool rebuildIfNeeded(); +<span class="lineNum"> 59 </span> : bool getUpToDatePopcon(std::string& scofname, std::string& idxfname); +<span class="lineNum"> 60 </span> : +<span class="lineNum"> 61 </span> : bool userIndexIsRedundant() const; +<span class="lineNum"> 62 </span> : bool deleteRedundantUserIndex(); +<span class="lineNum"> 63 </span> : +<span class="lineNum"> 64 </span> : void rescan(); +<span class="lineNum"> 65 </span> : +<span class="lineNum"> 66 </span> : PopconIndexer(); +<span class="lineNum"> 67 </span> : +<span class="lineNum"> 68 </span> : static bool obtainWorkingPopcon(std::string& scofname, std::string& idxfname); +<span class="lineNum"> 69 </span> : }; +<span class="lineNum"> 70 </span> : +<span class="lineNum"> 71 </span> : } +<span class="lineNum"> 72 </span> : } +<span class="lineNum"> 73 </span> : +<span class="lineNum"> 74 </span> : // vim:set ts=4 sw=4: +<span class="lineNum"> 75 </span> : #endif +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/maint/sourcedir.cc.gcov.html b/rep/ept/popcon/maint/sourcedir.cc.gcov.html new file mode 100644 index 0000000..80a1a4e --- /dev/null +++ b/rep/ept/popcon/maint/sourcedir.cc.gcov.html @@ -0,0 +1,210 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/maint/sourcedir.cc</title> + <link rel="stylesheet" type="text/css" href="../../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - sourcedir.cc</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">76</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">93.4 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">71</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : #include <ept/popcon/maint/sourcedir.h> +<span class="lineNum"> 2 </span> : #include <ept/popcon/maint/path.h> +<span class="lineNum"> 3 </span> : +<span class="lineNum"> 4 </span> : #include <wibble/string.h> +<span class="lineNum"> 5 </span> : +<span class="lineNum"> 6 </span> : #include <tagcoll/input/zlib.h> +<span class="lineNum"> 7 </span> : #include <tagcoll/input/stdio.h> +<span class="lineNum"> 8 </span> : +<span class="lineNum"> 9 </span> : #include <cstdlib> +<span class="lineNum"> 10 </span> : +<span class="lineNum"> 11 </span> : using namespace std; +<span class="lineNum"> 12 </span> : using namespace wibble; +<span class="lineNum"> 13 </span> : +<span class="lineNum"> 14 </span> : namespace ept { +<span class="lineNum"> 15 </span> : namespace popcon { +<span class="lineNum"> 16 </span> : +<span class="lineNum"> 17 </span><span class="lineCov"> 93 : SourceDir::FileType SourceDir::fileType(const std::string& name)</span> +<span class="lineNum"> 18 </span> : { +<span class="lineNum"> 19 </span><span class="lineCov"> 93 : if (name[0] == '.') return SKIP;</span> +<span class="lineNum"> 20 </span> : +<span class="lineNum"> 21 </span><span class="lineCov"> 59 : if (name == "all-popcon-results.txt") return RAW;</span> +<span class="lineNum"> 22 </span><span class="lineCov"> 59 : if (name == "all-popcon-results.txt.gz") return RAWGZ;</span> +<span class="lineNum"> 23 </span> : +<span class="lineNum"> 24 </span><span class="lineCov"> 46 : return SKIP;</span> +<span class="lineNum"> 25 </span> : } +<span class="lineNum"> 26 </span> : +<span class="lineNum"> 27 </span><span class="lineCov"> 14 : time_t SourceDir::timestamp()</span> +<span class="lineNum"> 28 </span> : { +<span class="lineNum"> 29 </span><span class="lineCov"> 14 : if (!valid()) return 0;</span> +<span class="lineNum"> 30 </span> : +<span class="lineNum"> 31 </span><span class="lineCov"> 14 : time_t max = 0;</span> +<span class="lineNum"> 32 </span><span class="lineCov"> 98 : for (const_iterator d = begin(); d != end(); ++d)</span> +<span class="lineNum"> 33 </span> : { +<span class="lineNum"> 34 </span><span class="lineCov"> 84 : FileType type = fileType(d->d_name);</span> +<span class="lineNum"> 35 </span><span class="lineCov"> 84 : if (type == SKIP) continue;</span> +<span class="lineNum"> 36 </span> : +<span class="lineNum"> 37 </span><span class="lineCov"> 12 : time_t ts = Path::timestamp(str::joinpath(path(), d->d_name));</span> +<span class="lineNum"> 38 </span><span class="lineCov"> 24 : if (ts > max) max = ts;</span> +<span class="lineNum"> 39 </span><span class="lineCov"> 14 : }</span> +<span class="lineNum"> 40 </span> : +<span class="lineNum"> 41 </span><span class="lineCov"> 14 : return max;</span> +<span class="lineNum"> 42 </span> : } +<span class="lineNum"> 43 </span> : +<span class="lineNum"> 44 </span><span class="lineCov"> 70200 : bool readLine(tagcoll::input::Input& in, string& str)</span> +<span class="lineNum"> 45 </span> : { +<span class="lineNum"> 46 </span><span class="lineCov"> 70200 : str.clear();</span> +<span class="lineNum"> 47 </span> : int c; +<span class="lineNum"> 48 </span><span class="lineCov"> 4594913 : while ((c = in.nextChar()) != tagcoll::input::Input::Eof && c != '\n')</span> +<span class="lineNum"> 49 </span><span class="lineCov"> 4454513 : str += c;</span> +<span class="lineNum"> 50 </span><span class="lineCov"> 70200 : return c != tagcoll::input::Input::Eof;</span> +<span class="lineNum"> 51 </span> : } +<span class="lineNum"> 52 </span> : +<span class="lineNum"> 53 </span><span class="lineCov"> 1 : static void parseScores(tagcoll::input::Input& in, map<std::string, Score>& out, size_t& submissions)</span> +<span class="lineNum"> 54 </span> : { +<span class="lineNum"> 55 </span><span class="lineCov"> 1 : string line;</span> +<span class="lineNum"> 56 </span><span class="lineCov"> 140349 : while (readLine(in, line))</span> +<span class="lineNum"> 57 </span> : { +<span class="lineNum"> 58 </span><span class="lineCov"> 70199 : if (line.size() < 10)</span> +<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : continue;</span> +<span class="lineNum"> 60 </span><span class="lineCov"> 70199 : if (line.substr(0, 13) == "Submissions: ")</span> +<span class="lineNum"> 61 </span> : { +<span class="lineNum"> 62 </span><span class="lineCov"> 1 : submissions = strtoul(line.substr(13).c_str(), 0, 10);</span> +<span class="lineNum"> 63 </span><span class="lineCov"> 1 : continue;</span> +<span class="lineNum"> 64 </span> : } +<span class="lineNum"> 65 </span><span class="lineCov"> 70198 : if (line.substr(0, 9) != "Package: ")</span> +<span class="lineNum"> 66 </span><span class="lineCov"> 50 : continue;</span> +<span class="lineNum"> 67 </span><span class="lineCov"> 70148 : size_t start = 9;</span> +<span class="lineNum"> 68 </span><span class="lineCov"> 70148 : size_t end = line.find(' ', start);</span> +<span class="lineNum"> 69 </span><span class="lineCov"> 70148 : if (end == string::npos)</span> +<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : continue;</span> +<span class="lineNum"> 71 </span><span class="lineCov"> 70148 : string name = line.substr(start, end-start);</span> +<span class="lineNum"> 72 </span> : // Skip packages not in the apt index +<span class="lineNum"> 73 </span> : //if (!apt.isValid(name)) +<span class="lineNum"> 74 </span> : //continue; +<span class="lineNum"> 75 </span> : +<span class="lineNum"> 76 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span> +<span class="lineNum"> 77 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span> +<span class="lineNum"> 78 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span> +<span class="lineNum"> 79 </span><span class="lineCov"> 70148 : if (end == string::npos) continue;</span> +<span class="lineNum"> 80 </span><span class="lineCov"> 70148 : string vote = line.substr(start, end-start);</span> +<span class="lineNum"> 81 </span> : +<span class="lineNum"> 82 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span> +<span class="lineNum"> 83 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span> +<span class="lineNum"> 84 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span> +<span class="lineNum"> 85 </span><span class="lineCov"> 70148 : if (end == string::npos) continue;</span> +<span class="lineNum"> 86 </span><span class="lineCov"> 70148 : string old = line.substr(start, end-start);</span> +<span class="lineNum"> 87 </span> : +<span class="lineNum"> 88 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span> +<span class="lineNum"> 89 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span> +<span class="lineNum"> 90 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span> +<span class="lineNum"> 91 </span><span class="lineCov"> 70148 : if (end == string::npos) continue;</span> +<span class="lineNum"> 92 </span><span class="lineCov"> 70148 : string recent = line.substr(start, end-start);</span> +<span class="lineNum"> 93 </span> : +<span class="lineNum"> 94 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span> +<span class="lineNum"> 95 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span> +<span class="lineNum"> 96 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span> +<span class="lineNum"> 97 </span><span class="lineCov"> 70148 : if (end == string::npos) end = line.size();</span> +<span class="lineNum"> 98 </span><span class="lineCov"> 70148 : string nofiles = line.substr(start, end-start);</span> +<span class="lineNum"> 99 </span> : +<span class="lineNum"> 100 </span> : float score = (float)strtoul(vote.c_str(), NULL, 10) +<span class="lineNum"> 101 </span> : + (float)strtoul(recent.c_str(), NULL, 10) * 0.5f +<span class="lineNum"> 102 </span> : + (float)strtoul(old.c_str(), NULL, 10) * 0.3f +<span class="lineNum"> 103 </span><span class="lineCov"> 70148 : + (float)strtoul(nofiles.c_str(), NULL, 10) * 0.8f;</span> +<span class="lineNum"> 104 </span> : +<span class="lineNum"> 105 </span><span class="lineCov"> 70148 : if (score > 0)</span> +<span class="lineNum"> 106 </span><span class="lineCov"> 69910 : out.insert(make_pair(name, Score(score)));</span> +<span class="lineNum"> 107 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 108 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 109 </span> : +<span class="lineNum"> 110 </span><span class="lineCov"> 3 : bool SourceDir::readScores(map<std::string, Score>& out, size_t& submissions)</span> +<span class="lineNum"> 111 </span> : { +<span class="lineNum"> 112 </span><span class="lineCov"> 3 : if (!valid()) return false;</span> +<span class="lineNum"> 113 </span><span class="lineCov"> 3 : bool done = false;</span> +<span class="lineNum"> 114 </span> : +<span class="lineNum"> 115 </span><span class="lineCov"> 12 : for (const_iterator d = begin(); d != end(); ++d)</span> +<span class="lineNum"> 116 </span> : { +<span class="lineNum"> 117 </span><span class="lineCov"> 9 : FileType type = fileType(d->d_name);</span> +<span class="lineNum"> 118 </span><span class="lineCov"> 9 : if (type == RAW)</span> +<span class="lineNum"> 119 </span> : { +<span class="lineNum"> 120 </span> : // Read uncompressed data +<span class="lineNum"> 121 </span><span class="lineNoCov"> 0 : tagcoll::input::Stdio in(str::joinpath(path(), d->d_name));</span> +<span class="lineNum"> 122 </span> : +<span class="lineNum"> 123 </span> : // Read the scores +<span class="lineNum"> 124 </span><span class="lineNoCov"> 0 : parseScores(in, out, submissions);</span> +<span class="lineNum"> 125 </span><span class="lineNoCov"> 0 : done = true;</span> +<span class="lineNum"> 126 </span> : } +<span class="lineNum"> 127 </span><span class="lineCov"> 9 : else if (type == RAWGZ)</span> +<span class="lineNum"> 128 </span> : { +<span class="lineNum"> 129 </span> : // Read compressed data +<span class="lineNum"> 130 </span><span class="lineCov"> 1 : tagcoll::input::Zlib in(str::joinpath(path(), d->d_name));</span> +<span class="lineNum"> 131 </span> : +<span class="lineNum"> 132 </span> : // Read the scores +<span class="lineNum"> 133 </span><span class="lineCov"> 1 : parseScores(in, out, submissions);</span> +<span class="lineNum"> 134 </span><span class="lineCov"> 1 : done = true;</span> +<span class="lineNum"> 135 </span> : } +<span class="lineNum"> 136 </span><span class="lineCov"> 3 : }</span> +<span class="lineNum"> 137 </span><span class="lineCov"> 3 : return done;</span> +<span class="lineNum"> 138 </span> : } +<span class="lineNum"> 139 </span> : +<span class="lineNum"> 140 </span> : } +<span class="lineNum"> 141 </span><span class="lineCov"> 6 : }</span> +<span class="lineNum"> 142 </span> : +<span class="lineNum"> 143 </span> : // vim:set ts=4 sw=4: +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/maint/sourcedir.h.gcov.html b/rep/ept/popcon/maint/sourcedir.h.gcov.html new file mode 100644 index 0000000..56c0640 --- /dev/null +++ b/rep/ept/popcon/maint/sourcedir.h.gcov.html @@ -0,0 +1,130 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/maint/sourcedir.h</title> + <link rel="stylesheet" type="text/css" href="../../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - sourcedir.h</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">2</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">100.0 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">2</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : #ifndef EPT_POPCON_SOURCEDIR_H +<span class="lineNum"> 2 </span> : #define EPT_POPCON_SOURCEDIR_H +<span class="lineNum"> 3 </span> : +<span class="lineNum"> 4 </span> : /** @file +<span class="lineNum"> 5 </span> : * @author Enrico Zini <enrico@enricozini.org> +<span class="lineNum"> 6 </span> : * Popcon data source directory access +<span class="lineNum"> 7 </span> : */ +<span class="lineNum"> 8 </span> : +<span class="lineNum"> 9 </span> : /* +<span class="lineNum"> 10 </span> : * Copyright (C) 2003,2004,2005,2006,2007 Enrico Zini <enrico@debian.org> +<span class="lineNum"> 11 </span> : * +<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 15 </span> : * (at your option) any later version. +<span class="lineNum"> 16 </span> : * +<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 20 </span> : * GNU General Public License for more details. +<span class="lineNum"> 21 </span> : * +<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 25 </span> : */ +<span class="lineNum"> 26 </span> : +<span class="lineNum"> 27 </span> : #include <ept/popcon/popcon.h> +<span class="lineNum"> 28 </span> : #include <wibble/sys/fs.h> +<span class="lineNum"> 29 </span> : #include <string> +<span class="lineNum"> 30 </span> : #include <map> +<span class="lineNum"> 31 </span> : +<span class="lineNum"> 32 </span> : namespace ept { +<span class="lineNum"> 33 </span> : namespace popcon { +<span class="lineNum"> 34 </span> : +<span class="lineNum"> 35 </span> : /** +<span class="lineNum"> 36 </span> : * Access a directory containing Debtags data files +<span class="lineNum"> 37 </span> : */ +<span class="lineNum"> 38 </span> : class SourceDir : public wibble::sys::fs::Directory +<span class="lineNum"> 39 </span><span class="lineCov"> 14 : {</span> +<span class="lineNum"> 40 </span> : protected: +<span class="lineNum"> 41 </span> : enum FileType { SKIP, RAW, RAWGZ }; +<span class="lineNum"> 42 </span> : +<span class="lineNum"> 43 </span> : // Check if a file name is a tag file, a vocabulary file or a file to skip. +<span class="lineNum"> 44 </span> : // Please notice that it works on file names, not paths. +<span class="lineNum"> 45 </span> : FileType fileType(const std::string& name); +<span class="lineNum"> 46 </span> : +<span class="lineNum"> 47 </span> : public: +<span class="lineNum"> 48 </span><span class="lineCov"> 14 : SourceDir(const std::string& path) : Directory(path) {}</span> +<span class="lineNum"> 49 </span> : +<span class="lineNum"> 50 </span> : /// Return the time of the newest file in the source directory +<span class="lineNum"> 51 </span> : time_t timestamp(); +<span class="lineNum"> 52 </span> : +<span class="lineNum"> 53 </span> : /** +<span class="lineNum"> 54 </span> : * Read the tag files in the directory and output their content to the map +<span class="lineNum"> 55 </span> : */ +<span class="lineNum"> 56 </span> : bool readScores(std::map<std::string, Score>& out, size_t& submissions); +<span class="lineNum"> 57 </span> : }; +<span class="lineNum"> 58 </span> : +<span class="lineNum"> 59 </span> : } +<span class="lineNum"> 60 </span> : } +<span class="lineNum"> 61 </span> : +<span class="lineNum"> 62 </span> : // vim:set ts=4 sw=4: +<span class="lineNum"> 63 </span> : #endif +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/popcon.cc.gcov.html b/rep/ept/popcon/popcon.cc.gcov.html new file mode 100644 index 0000000..f38fb61 --- /dev/null +++ b/rep/ept/popcon/popcon.cc.gcov.html @@ -0,0 +1,162 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/popcon.cc</title> + <link rel="stylesheet" type="text/css" href="../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - popcon.cc</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">23</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">95.7 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">22</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- +<span class="lineNum"> 2 </span> : +<span class="lineNum"> 3 </span> : /** @file +<span class="lineNum"> 4 </span> : * @author Enrico Zini <enrico@enricozini.org> +<span class="lineNum"> 5 </span> : * Quick map from package IDs to package names +<span class="lineNum"> 6 </span> : */ +<span class="lineNum"> 7 </span> : +<span class="lineNum"> 8 </span> : /* +<span class="lineNum"> 9 </span> : * Copyright (C) 2007 Enrico Zini <enrico@debian.org> +<span class="lineNum"> 10 </span> : * +<span class="lineNum"> 11 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 12 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 13 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 14 </span> : * (at your option) any later version. +<span class="lineNum"> 15 </span> : * +<span class="lineNum"> 16 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 19 </span> : * GNU General Public License for more details. +<span class="lineNum"> 20 </span> : * +<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 22 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 24 </span> : */ +<span class="lineNum"> 25 </span> : +<span class="lineNum"> 26 </span> : #include <ept/popcon/popcon.h> +<span class="lineNum"> 27 </span> : #include <ept/popcon/maint/popconindexer.h> +<span class="lineNum"> 28 </span> : #include <ept/popcon/maint/path.h> +<span class="lineNum"> 29 </span> : +<span class="lineNum"> 30 </span> : //#include <iostream> +<span class="lineNum"> 31 </span> : +<span class="lineNum"> 32 </span> : using namespace std; +<span class="lineNum"> 33 </span> : +<span class="lineNum"> 34 </span> : namespace ept { +<span class="lineNum"> 35 </span> : namespace popcon { +<span class="lineNum"> 36 </span> : +<span class="lineNum"> 37 </span><span class="lineCov"> 3 : size_t Popcon::GeneralInfo::submissions() const</span> +<span class="lineNum"> 38 </span> : { +<span class="lineNum"> 39 </span><span class="lineCov"> 3 : if (!m_buf) return 0;</span> +<span class="lineNum"> 40 </span><span class="lineCov"> 2 : return ((InfoStruct*)m_buf)->submissions;</span> +<span class="lineNum"> 41 </span> : } +<span class="lineNum"> 42 </span> : +<span class="lineNum"> 43 </span><span class="lineCov"> 7 : Popcon::Popcon()</span> +<span class="lineNum"> 44 </span> : { +<span class="lineNum"> 45 </span><span class="lineCov"> 7 : std::string scofname, idxfname;</span> +<span class="lineNum"> 46 </span> : +<span class="lineNum"> 47 </span><span class="lineCov"> 7 : if (!PopconIndexer::obtainWorkingPopcon(scofname, idxfname))</span> +<span class="lineNum"> 48 </span> : { +<span class="lineNum"> 49 </span><span class="lineCov"> 1 : m_timestamp = 0;</span> +<span class="lineNum"> 50 </span><span class="lineCov"> 1 : return;</span> +<span class="lineNum"> 51 </span> : } +<span class="lineNum"> 52 </span> : +<span class="lineNum"> 53 </span> : //cerr << "GOT " << scofname << " " << idxfname << endl; +<span class="lineNum"> 54 </span> : +<span class="lineNum"> 55 </span><span class="lineCov"> 6 : m_timestamp = Path::timestamp(idxfname);</span> +<span class="lineNum"> 56 </span> : +<span class="lineNum"> 57 </span><span class="lineCov"> 6 : mastermmap.init(idxfname);</span> +<span class="lineNum"> 58 </span><span class="lineCov"> 6 : tagcoll::diskindex::MMap::init(mastermmap, 0);</span> +<span class="lineNum"> 59 </span> : +<span class="lineNum"> 60 </span><span class="lineCov"> 6 : m_info.init(mastermmap, 1);</span> +<span class="lineNum"> 61 </span> : +<span class="lineNum"> 62 </span> : //cerr << "SIZE " << size() << endl; +<span class="lineNum"> 63 </span> : //for (size_t i = 0; i < size(); ++i) +<span class="lineNum"> 64 </span> : //{ +<span class="lineNum"> 65 </span> : // cerr << "EL " << i << ": " << ((Score*)m_buf)[i].offset << " " << ((Score*)m_buf)[i].score << endl; +<span class="lineNum"> 66 </span> : //} +<span class="lineNum"> 67 </span><span class="lineNoCov"> 0 : }</span> +<span class="lineNum"> 68 </span> : +<span class="lineNum"> 69 </span><span class="lineCov"> 1792 : float Popcon::scoreByName(const std::string& name) const</span> +<span class="lineNum"> 70 </span> : { +<span class="lineNum"> 71 </span> : // Binary search the index to find the package ID +<span class="lineNum"> 72 </span> : int begin, end; +<span class="lineNum"> 73 </span> : +<span class="lineNum"> 74 </span> : /* Binary search */ +<span class="lineNum"> 75 </span><span class="lineCov"> 1792 : begin = -1, end = size();</span> +<span class="lineNum"> 76 </span><span class="lineCov"> 32470 : while (end - begin > 1)</span> +<span class="lineNum"> 77 </span> : { +<span class="lineNum"> 78 </span><span class="lineCov"> 28886 : int cur = (end + begin) / 2;</span> +<span class="lineNum"> 79 </span><span class="lineCov"> 28886 : if (this->name(cur) > name)</span> +<span class="lineNum"> 80 </span><span class="lineCov"> 14367 : end = cur;</span> +<span class="lineNum"> 81 </span> : else +<span class="lineNum"> 82 </span><span class="lineCov"> 14519 : begin = cur;</span> +<span class="lineNum"> 83 </span> : } +<span class="lineNum"> 84 </span> : +<span class="lineNum"> 85 </span><span class="lineCov"> 1792 : if (begin == -1 || this->name(begin) != name)</span> +<span class="lineNum"> 86 </span> : //throw NotFoundException(string("looking for the ID of string ") + str); +<span class="lineNum"> 87 </span><span class="lineCov"> 31 : return 0;</span> +<span class="lineNum"> 88 </span> : else +<span class="lineNum"> 89 </span><span class="lineCov"> 1761 : return score(begin);</span> +<span class="lineNum"> 90 </span> : } +<span class="lineNum"> 91 </span> : +<span class="lineNum"> 92 </span> : } +<span class="lineNum"> 93 </span> : } +<span class="lineNum"> 94 </span> : +<span class="lineNum"> 95 </span> : // vim:set ts=4 sw=4: +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/popcon.h.gcov.html b/rep/ept/popcon/popcon.h.gcov.html new file mode 100644 index 0000000..270736f --- /dev/null +++ b/rep/ept/popcon/popcon.h.gcov.html @@ -0,0 +1,220 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/popcon.h</title> + <link rel="stylesheet" type="text/css" href="../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - popcon.h</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">25</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">96.0 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">24</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- +<span class="lineNum"> 2 </span> : #ifndef EPT_POPCON_POPCON_H +<span class="lineNum"> 3 </span> : #define EPT_POPCON_POPCON_H +<span class="lineNum"> 4 </span> : +<span class="lineNum"> 5 </span> : /** @file +<span class="lineNum"> 6 </span> : * @author Enrico Zini <enrico@enricozini.org> +<span class="lineNum"> 7 </span> : * Access popcon data +<span class="lineNum"> 8 </span> : */ +<span class="lineNum"> 9 </span> : +<span class="lineNum"> 10 </span> : /* +<span class="lineNum"> 11 </span> : * Copyright (C) 2007 Enrico Zini <enrico@debian.org> +<span class="lineNum"> 12 </span> : * +<span class="lineNum"> 13 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 14 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 15 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 16 </span> : * (at your option) any later version. +<span class="lineNum"> 17 </span> : * +<span class="lineNum"> 18 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 19 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 20 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 21 </span> : * GNU General Public License for more details. +<span class="lineNum"> 22 </span> : * +<span class="lineNum"> 23 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 24 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 25 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 26 </span> : */ +<span class="lineNum"> 27 </span> : +<span class="lineNum"> 28 </span> : #include <tagcoll/diskindex/mmap.h> +<span class="lineNum"> 29 </span> : #include <string> +<span class="lineNum"> 30 </span> : +<span class="lineNum"> 31 </span> : namespace ept { +<span class="lineNum"> 32 </span> : namespace apt { +<span class="lineNum"> 33 </span> : class Apt; +<span class="lineNum"> 34 </span> : } +<span class="lineNum"> 35 </span> : +<span class="lineNum"> 36 </span> : namespace popcon { +<span class="lineNum"> 37 </span> : +<span class="lineNum"> 38 </span> : /** +<span class="lineNum"> 39 </span> : * Store the score information in the popcon cache. +<span class="lineNum"> 40 </span> : * +<span class="lineNum"> 41 </span> : * Currently, this is only one float; more can be added in the future. +<span class="lineNum"> 42 </span> : */ +<span class="lineNum"> 43 </span> : class Score +<span class="lineNum"> 44 </span> : { +<span class="lineNum"> 45 </span> : protected: +<span class="lineNum"> 46 </span> : unsigned offset; +<span class="lineNum"> 47 </span> : +<span class="lineNum"> 48 </span> : public: +<span class="lineNum"> 49 </span> : float score; +<span class="lineNum"> 50 </span> : +<span class="lineNum"> 51 </span><span class="lineCov"> 69910 : Score(float score) : offset(offset), score(score) {}</span> +<span class="lineNum"> 52 </span> : +<span class="lineNum"> 53 </span> : friend class Popcon; +<span class="lineNum"> 54 </span> : friend class PopconIndexer; +<span class="lineNum"> 55 </span> : friend class PopconGenerator; +<span class="lineNum"> 56 </span> : }; +<span class="lineNum"> 57 </span> : +<span class="lineNum"> 58 </span> : /** +<span class="lineNum"> 59 </span> : * Maps Packages to IDs and vice-versa. +<span class="lineNum"> 60 </span> : * +<span class="lineNum"> 61 </span> : * This is used in building the Debtags fast index, which works representing +<span class="lineNum"> 62 </span> : * tags and packages as int IDs. +<span class="lineNum"> 63 </span> : * +<span class="lineNum"> 64 </span> : * Index building works like this: +<span class="lineNum"> 65 </span> : * 1. The file all-popcon-results.txt.gz is downloaded from +<span class="lineNum"> 66 </span> : * http://popcon.debian.org/all-popcon-results.txt.gz +<span class="lineNum"> 67 </span> : * 2. The file is put in either ~/.popcon/all-popcon-results.txt.gz +<span class="lineNum"> 68 </span> : * or in /var/lib/popcon/all-popcon-results.txt.gz +<span class="lineNum"> 69 </span> : * 3. If the file is newer than the index, it will be automatically used to +<span class="lineNum"> 70 </span> : * recompute the scores and rebuild the index. +<span class="lineNum"> 71 </span> : */ +<span class="lineNum"> 72 </span> : class Popcon : public tagcoll::diskindex::MMap +<span class="lineNum"> 73 </span><span class="lineCov"> 7 : {</span> +<span class="lineNum"> 74 </span> : struct GeneralInfo : public tagcoll::diskindex::MMap +<span class="lineNum"> 75 </span><span class="lineCov"> 7 : {</span> +<span class="lineNum"> 76 </span> : size_t submissions() const; +<span class="lineNum"> 77 </span> : }; +<span class="lineNum"> 78 </span> : +<span class="lineNum"> 79 </span> : tagcoll::diskindex::MasterMMap mastermmap; +<span class="lineNum"> 80 </span> : time_t m_timestamp; +<span class="lineNum"> 81 </span> : +<span class="lineNum"> 82 </span> : GeneralInfo m_info; +<span class="lineNum"> 83 </span> : +<span class="lineNum"> 84 </span> : /// Get the score structure by index +<span class="lineNum"> 85 </span><span class="lineCov"> 102350 : const Score* structByIndex(size_t idx) const</span> +<span class="lineNum"> 86 </span> : { +<span class="lineNum"> 87 </span><span class="lineCov"> 102350 : if (idx >= 0 && idx < size())</span> +<span class="lineNum"> 88 </span><span class="lineCov"> 102350 : return (Score*)m_buf + idx;</span> +<span class="lineNum"> 89 </span><span class="lineNoCov"> 0 : return 0;</span> +<span class="lineNum"> 90 </span> : } +<span class="lineNum"> 91 </span> : +<span class="lineNum"> 92 </span> : public: +<span class="lineNum"> 93 </span> : Popcon(); +<span class="lineNum"> 94 </span> : +<span class="lineNum"> 95 </span> : /// Get the timestamp of when the index was last updated +<span class="lineNum"> 96 </span><span class="lineCov"> 1 : time_t timestamp() const { return m_timestamp; }</span> +<span class="lineNum"> 97 </span> : +<span class="lineNum"> 98 </span> : /// Return true if this data source has data, false if it's empty +<span class="lineNum"> 99 </span><span class="lineCov"> 1 : bool hasData() const { return m_timestamp != 0; }</span> +<span class="lineNum"> 100 </span> : +<span class="lineNum"> 101 </span> : /// Return the total number of popcon submissions +<span class="lineNum"> 102 </span><span class="lineCov"> 3 : size_t submissions() const { return m_info.submissions(); }</span> +<span class="lineNum"> 103 </span> : +<span class="lineNum"> 104 </span> : /// Get the number of packages in the index +<span class="lineNum"> 105 </span><span class="lineCov"> 174055 : size_t size() const</span> +<span class="lineNum"> 106 </span> : { +<span class="lineNum"> 107 </span><span class="lineCov"> 174055 : if (m_buf)</span> +<span class="lineNum"> 108 </span><span class="lineCov"> 174053 : return ((Score*)m_buf)->offset / sizeof(Score);</span> +<span class="lineNum"> 109 </span> : else +<span class="lineNum"> 110 </span><span class="lineCov"> 2 : return 0;</span> +<span class="lineNum"> 111 </span> : } +<span class="lineNum"> 112 </span> : +<span class="lineNum"> 113 </span> : /** +<span class="lineNum"> 114 </span> : * Get a package name by index +<span class="lineNum"> 115 </span> : * +<span class="lineNum"> 116 </span> : * If the index is not valid, returns the empty string. +<span class="lineNum"> 117 </span> : */ +<span class="lineNum"> 118 </span><span class="lineCov"> 30678 : std::string name(size_t idx) const</span> +<span class="lineNum"> 119 </span> : { +<span class="lineNum"> 120 </span><span class="lineCov"> 30678 : const Score* s = structByIndex(idx);</span> +<span class="lineNum"> 121 </span><span class="lineCov"> 30678 : if (s == 0) return std::string();</span> +<span class="lineNum"> 122 </span><span class="lineCov"> 30678 : return std::string(m_buf + s->offset);</span> +<span class="lineNum"> 123 </span> : } +<span class="lineNum"> 124 </span> : +<span class="lineNum"> 125 </span> : /// Get the score by index +<span class="lineNum"> 126 </span><span class="lineCov"> 71672 : float scoreByIndex(size_t idx) const</span> +<span class="lineNum"> 127 </span> : { +<span class="lineNum"> 128 </span><span class="lineCov"> 71672 : const Score* s = structByIndex(idx);</span> +<span class="lineNum"> 129 </span><span class="lineCov"> 71672 : if (!s) return 0;</span> +<span class="lineNum"> 130 </span><span class="lineCov"> 71672 : return s->score;</span> +<span class="lineNum"> 131 </span> : } +<span class="lineNum"> 132 </span> : +<span class="lineNum"> 133 </span> : /// Get the score structure by package name +<span class="lineNum"> 134 </span> : float scoreByName(const std::string& name) const; +<span class="lineNum"> 135 </span> : +<span class="lineNum"> 136 </span> : /// Get the score by index +<span class="lineNum"> 137 </span><span class="lineCov"> 71672 : float score(size_t idx) const { return scoreByIndex(idx); }</span> +<span class="lineNum"> 138 </span> : +<span class="lineNum"> 139 </span> : /// Get the score by index +<span class="lineNum"> 140 </span> : float operator[](int idx) const { return scoreByIndex(idx); } +<span class="lineNum"> 141 </span> : +<span class="lineNum"> 142 </span> : /// Get the score by name +<span class="lineNum"> 143 </span><span class="lineCov"> 1790 : float score(const std::string& name) const { return scoreByName(name); }</span> +<span class="lineNum"> 144 </span> : +<span class="lineNum"> 145 </span> : /// Get the score structure by package name +<span class="lineNum"> 146 </span><span class="lineCov"> 2 : float operator[](const std::string& name) const { return scoreByName(name); }</span> +<span class="lineNum"> 147 </span> : }; +<span class="lineNum"> 148 </span> : +<span class="lineNum"> 149 </span> : } +<span class="lineNum"> 150 </span> : } +<span class="lineNum"> 151 </span> : +<span class="lineNum"> 152 </span> : // vim:set ts=4 sw=4: +<span class="lineNum"> 153 </span> : #endif +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> diff --git a/rep/ept/popcon/popcon.test.h.gcov.html b/rep/ept/popcon/popcon.test.h.gcov.html new file mode 100644 index 0000000..65387fc --- /dev/null +++ b/rep/ept/popcon/popcon.test.h.gcov.html @@ -0,0 +1,175 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>LCOV - lcov.info - ept/popcon/popcon.test.h</title> + <link rel="stylesheet" type="text/css" href="../../gcov.css"> +</head> + +<body> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + + <tr> + <td width="100%"> + <table cellpadding=1 border=0 width="100%"> + <tr> + <td class="headerItem" width="20%">Current view:</td> + <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - popcon.test.h</td> + </tr> + <tr> + <td class="headerItem" width="20%">Test:</td> + <td class="headerValue" width="80%" colspan=4>lcov.info</td> + </tr> + <tr> + <td class="headerItem" width="20%">Date:</td> + <td class="headerValue" width="20%">2008-08-14</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Instrumented lines:</td> + <td class="headerValue" width="20%">38</td> + </tr> + <tr> + <td class="headerItem" width="20%">Code covered:</td> + <td class="headerValue" width="20%">100.0 %</td> + <td width="20%"></td> + <td class="headerItem" width="20%">Executed lines:</td> + <td class="headerValue" width="20%">38</td> + </tr> + </table> + </td> + </tr> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + </table> + + <table cellpadding=0 cellspacing=0 border=0> + <tr> + <td><br></td> + </tr> + <tr> + <td><pre class="source"> +<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- +<span class="lineNum"> 2 </span> : /* +<span class="lineNum"> 3 </span> : * popcon test +<span class="lineNum"> 4 </span> : * +<span class="lineNum"> 5 </span> : * Copyright (C) 2007 Enrico Zini <enrico@debian.org> +<span class="lineNum"> 6 </span> : * +<span class="lineNum"> 7 </span> : * This program is free software; you can redistribute it and/or modify +<span class="lineNum"> 8 </span> : * it under the terms of the GNU General Public License as published by +<span class="lineNum"> 9 </span> : * the Free Software Foundation; either version 2 of the License, or +<span class="lineNum"> 10 </span> : * (at your option) any later version. +<span class="lineNum"> 11 </span> : * +<span class="lineNum"> 12 </span> : * This program is distributed in the hope that it will be useful, +<span class="lineNum"> 13 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of +<span class="lineNum"> 14 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<span class="lineNum"> 15 </span> : * GNU General Public License for more details. +<span class="lineNum"> 16 </span> : * +<span class="lineNum"> 17 </span> : * You should have received a copy of the GNU General Public License +<span class="lineNum"> 18 </span> : * along with this program; if not, write to the Free Software +<span class="lineNum"> 19 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +<span class="lineNum"> 20 </span> : */ +<span class="lineNum"> 21 </span> : +<span class="lineNum"> 22 </span> : #include <ept/popcon/popcon.h> +<span class="lineNum"> 23 </span> : #include <ept/popcon/maint/path.h> +<span class="lineNum"> 24 </span> : #include <ept/apt/apt.h> +<span class="lineNum"> 25 </span> : #include <set> +<span class="lineNum"> 26 </span> : +<span class="lineNum"> 27 </span> : #include <ept/test.h> +<span class="lineNum"> 28 </span> : +<span class="lineNum"> 29 </span> : using namespace std; +<span class="lineNum"> 30 </span> : using namespace ept; +<span class="lineNum"> 31 </span> : using namespace ept::popcon; +<span class="lineNum"> 32 </span> : using namespace ept::apt; +<span class="lineNum"> 33 </span> : +<span class="lineNum"> 34 </span> : struct TestPopcon +<span class="lineNum"> 35 </span><span class="lineCov"> 5 : {</span> +<span class="lineNum"> 36 </span> : popcon::Path::OverridePopconSourceDir odsd; +<span class="lineNum"> 37 </span> : popcon::Path::OverridePopconIndexDir odid; +<span class="lineNum"> 38 </span> : popcon::Path::OverridePopconUserSourceDir odusd; +<span class="lineNum"> 39 </span> : popcon::Path::OverridePopconUserIndexDir oduid; +<span class="lineNum"> 40 </span> : +<span class="lineNum"> 41 </span> : Apt apt; +<span class="lineNum"> 42 </span> : Popcon popcon; +<span class="lineNum"> 43 </span> : +<span class="lineNum"> 44 </span><span class="lineCov"> 5 : TestPopcon()</span> +<span class="lineNum"> 45 </span> : : odsd( TEST_ENV_DIR "popcon" ), +<span class="lineNum"> 46 </span> : odid( TEST_ENV_DIR "popcon" ), +<span class="lineNum"> 47 </span> : odusd( TEST_ENV_DIR "popcon" ), +<span class="lineNum"> 48 </span><span class="lineCov"> 5 : oduid( TEST_ENV_DIR "popcon" )</span> +<span class="lineNum"> 49 </span><span class="lineCov"> 5 : {}</span> +<span class="lineNum"> 50 </span> : +<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test basicAccess()</span> +<span class="lineNum"> 52 </span> : { +<span class="lineNum"> 53 </span><span class="lineCov"> 1 : assert_eq(popcon.submissions(), 52024);</span> +<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert(popcon.size() > 0);</span> +<span class="lineNum"> 55 </span><span class="lineCov"> 2 : assert(popcon.score(0) > 0);</span> +<span class="lineNum"> 56 </span><span class="lineCov"> 2 : assert(!popcon.name(0).empty());</span> +<span class="lineNum"> 57 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 58 </span> : +<span class="lineNum"> 59 </span> : // Check that every valid index is accessible +<span class="lineNum"> 60 </span><span class="lineCov"> 1 : Test accessibility()</span> +<span class="lineNum"> 61 </span> : { +<span class="lineNum"> 62 </span><span class="lineCov"> 139822 : for (size_t i = 0; i < popcon.size(); ++i)</span> +<span class="lineNum"> 63 </span> : { +<span class="lineNum"> 64 </span> : //cerr << popcon.name(i) << " " << popcon.score(i) << endl; +<span class="lineNum"> 65 </span><span class="lineCov"> 69910 : assert(popcon.score(i) > 0);</span> +<span class="lineNum"> 66 </span> : } +<span class="lineNum"> 67 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 68 </span> : +<span class="lineNum"> 69 </span> : // Check that we can get a score for every package +<span class="lineNum"> 70 </span><span class="lineCov"> 1 : Test haveScores()</span> +<span class="lineNum"> 71 </span> : { +<span class="lineNum"> 72 </span><span class="lineCov"> 1 : int has = 0;</span> +<span class="lineNum"> 73 </span><span class="lineCov"> 1789 : for (Apt::iterator i = apt.begin(); i != apt.end(); ++i)</span> +<span class="lineNum"> 74 </span> : { +<span class="lineNum"> 75 </span><span class="lineCov"> 1788 : float score = popcon.score(*i);</span> +<span class="lineNum"> 76 </span><span class="lineCov"> 1788 : if (score > 0)</span> +<span class="lineNum"> 77 </span><span class="lineCov"> 1758 : ++has;</span> +<span class="lineNum"> 78 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 79 </span> : // At least 1000 packages should have a score +<span class="lineNum"> 80 </span><span class="lineCov"> 2 : assert(has > 1000);</span> +<span class="lineNum"> 81 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 82 </span> : +<span class="lineNum"> 83 </span> : // Check that scores are meaningful +<span class="lineNum"> 84 </span><span class="lineCov"> 1 : Test validScores()</span> +<span class="lineNum"> 85 </span> : { +<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert(popcon["apt"] > popcon["libapt-pkg-dev"]);</span> +<span class="lineNum"> 87 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 88 </span> : +<span class="lineNum"> 89 </span> : // If there is no data, Popcon should work as if all scores were 0 +<span class="lineNum"> 90 </span><span class="lineCov"> 1 : Test fallbackValues()</span> +<span class="lineNum"> 91 </span> : { +<span class="lineNum"> 92 </span><span class="lineCov"> 1 : popcon::Path::OverridePopconSourceDir odsd("./empty");</span> +<span class="lineNum"> 93 </span><span class="lineCov"> 2 : popcon::Path::OverridePopconIndexDir odid("./empty");</span> +<span class="lineNum"> 94 </span><span class="lineCov"> 2 : popcon::Path::OverridePopconUserSourceDir odusd("./empty");</span> +<span class="lineNum"> 95 </span><span class="lineCov"> 2 : popcon::Path::OverridePopconUserIndexDir oduid("./empty");</span> +<span class="lineNum"> 96 </span><span class="lineCov"> 1 : Popcon empty;</span> +<span class="lineNum"> 97 </span> : +<span class="lineNum"> 98 </span><span class="lineCov"> 1 : assert_eq(empty.timestamp(), 0);</span> +<span class="lineNum"> 99 </span><span class="lineCov"> 2 : assert(!empty.hasData());</span> +<span class="lineNum"> 100 </span> : +<span class="lineNum"> 101 </span><span class="lineCov"> 2 : assert_eq(empty.submissions(), 0);</span> +<span class="lineNum"> 102 </span><span class="lineCov"> 2 : assert(empty.size() == 0);</span> +<span class="lineNum"> 103 </span><span class="lineCov"> 2 : assert(empty.score("apt") == 0.0);</span> +<span class="lineNum"> 104 </span><span class="lineCov"> 1 : }</span> +<span class="lineNum"> 105 </span> : +<span class="lineNum"> 106 </span> : }; +<span class="lineNum"> 107 </span> : +<span class="lineNum"> 108 </span> : // vim:set ts=4 sw=4: +</pre> + </td> + </tr> + </table> + <br> + + <table width="100%" border=0 cellspacing=0 cellpadding=0> + <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> + <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> + </table> + <br> + +</body> +</html> |
