File: testing.html

package info (click to toggle)
privoxy 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,488 kB
  • sloc: ansic: 33,393; perl: 4,813; sh: 3,940; makefile: 146; awk: 18; xml: 14
file content (189 lines) | stat: -rw-r--r-- 8,940 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>Testing Guidelines</title>
  <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
  <link rel="HOME" title="Privoxy Developer Manual" href="index.html">
  <link rel="PREVIOUS" title="Coding Guidelines" href="coding.html">
  <link rel="NEXT" title="Releasing a New Version" href="newrelease.html">
  <link rel="STYLESHEET" type="text/css" href="../p_doc.css">
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
  <div class="NAVHEADER">
    <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <th colspan="3" align="center">Privoxy Developer Manual</th>
      </tr>
      <tr>
        <td width="10%" align="left" valign="bottom"><a href="coding.html" accesskey="P">Prev</a></td>
        <td width="80%" align="center" valign="bottom"></td>
        <td width="10%" align="right" valign="bottom"><a href="newrelease.html" accesskey="N">Next</a></td>
      </tr>
    </table>
    <hr align="left" width="100%">
  </div>
  <div class="SECT1">
    <h1 class="SECT1"><a name="TESTING" id="TESTING">5. Testing Guidelines</a></h1>
    <p>To be filled.</p>
    <div class="SECT2">
      <h2 class="SECT2"><a name="TESTING-PLAN" id="TESTING-PLAN">5.1. Testplan for releases</a></h2>
      <p>Explain release numbers. major, minor. developer releases. etc.</p>
      <ol type="1">
        <li>
          <p>Remove any existing rpm with rpm -e</p>
        </li>
        <li>
          <p>Remove any file that was left over. This includes (but is not limited to)</p>
          <ul>
            <li>
              <p>/var/log/privoxy</p>
            </li>
            <li>
              <p>/etc/privoxy</p>
            </li>
            <li>
              <p>/usr/sbin/privoxy</p>
            </li>
            <li>
              <p>/etc/init.d/privoxy</p>
            </li>
            <li>
              <p>/usr/doc/privoxy*</p>
            </li>
          </ul>
        </li>
        <li>
          <p>Install the rpm. Any error messages?</p>
        </li>
        <li>
          <p>start,stop,status <span class="APPLICATION">Privoxy</span> with the specific script (e.g.
          /etc/rc.d/init/privoxy stop). Reboot your machine. Does autostart work?</p>
        </li>
        <li>
          <p>Start browsing. Does <span class="APPLICATION">Privoxy</span> work? Logfile written?</p>
        </li>
        <li>
          <p>Remove the rpm. Any error messages? All files removed?</p>
        </li>
      </ol>
    </div>
    <div class="SECT2">
      <h2 class="SECT2"><a name="PRIVOXY-REGRESSION-TEST" id="PRIVOXY-REGRESSION-TEST">5.2. Testing with <span class=
      "APPLICATION">Privoxy-Regression-Test</span></a></h2>
      <p>If you compiled, packaged or merely installed Privoxy, it is recommended to run <span class=
      "APPLICATION">Privoxy-Regression-Test</span> to verify that at least the tested parts of <span class=
      "APPLICATION">Privoxy</span> are working as expected.</p>
      <p>This is actually pretty easy. For details, please see <b class="COMMAND">perldoc
      privoxy-regression-test.pl</b>.</p>
      <p>Here is an example of what <span class="APPLICATION">Privoxy-Regression-Test</span> can do for you:</p>
      <table border="0" bgcolor="#E0E0E0" width="100%">
        <tr>
          <td>
            <pre class="PROGRAMLISTING">  # Run all the tests
  fk@t520 ~ $privoxy-regression-test.pl
  2020-12-14 12:16:32: Asking Privoxy for the number of action files available ...
  2020-12-14 12:16:32: Gathering regression tests from 9 action file(s) delivered by Privoxy 3.0.30.
  2020-12-14 12:16:32: Executing regression tests ...
  2020-12-14 12:16:41: Ooops. Expected removal but: 'Referer: https://p.p/' is still there.
  2020-12-14 12:16:41: Failure for test 785. Header 'Referer: https://p.p/' and tag 'hide-referrer{conditional-block}'
  2020-12-14 12:16:41: Ooops. Got: 'Referer: https://p.p/' while expecting: 'Referer: http://p.p/'
  2020-12-14 12:16:41: Failure for test 791. Header 'Referer: https://p.p/' and tag 'hide-referrer{conditional-forge}'
  2020-12-14 12:16:44: Executed 1087 regression tests. Skipped 115. 1085 successes, 2 failures.
  # Repeat one of the failing tests and get a curl command to quickly reproduce the problem
  # without causing too much log noise.
  fk@t520 ~ $privoxy-regression-test.pl --test-number 785 --verbose --debug 4
  2020-12-14 12:17:55: Asking Privoxy for the number of action files available ...
  [...]
  2020-12-14 12:17:56: Executing regression tests ...
  2020-12-14 12:17:56: Executing: curl --include  -H 'Proxy-Connection:'  -H 'Connection: close'  -s  -S  --user-agent 'Privoxy-Regression-Test 0.7.2'  --max-time '5'  --globoff  -H 'X-Privoxy-Control: hide-referrer{conditional-block}' -H 'Referer: https://p.p/'  http://p.p/show-request 2&#62;&#38;1
  2020-12-14 12:17:56: Ooops. Expected removal but: 'Referer: https://p.p/' is still there.
  2020-12-14 12:17:56: Failure for test 785 (0/13/5). Header 'Referer: https://p.p/' and tag 'hide-referrer{conditional-block}'
  2020-12-14 12:17:56: Executed 1 regression tests. Skipped 1201. 0 successes, 1 failures.</pre>
          </td>
        </tr>
      </table>
      <p>Use the if the <b class="COMMAND">--privoxy-address</b> option if the http_proxy environment variable isn't
      configured and you don't want to use the default (http://127.0.0.1:8118/).</p>
    </div>
    <div class="SECT2">
      <h2 class="SECT2"><a name="FUZZING" id="FUZZING">5.3. Fuzzing Privoxy</a></h2>
      <p>To make fuzzing more convenient, Privoxy can be configured with --enable-fuzz which will result in the --fuzz
      option becoming available.</p>
      <p>Example (tested on ElectroBSD):</p>
      <table border="0" bgcolor="#E0E0E0" width="100%">
        <tr>
          <td>
            <pre class="PROGRAMLISTING">  # Compile Privoxy with instrumentation for afl
  $ export CC=afl-clang
  $ export CFLAGS="-fsanitize=address -ggdb"
  $ export CPPFLAGS=-I/usr/local/include/
  $ export LDFLAGS="-fsanitize=address -L/usr/local/lib"
  $ export AFL_USE_ASAN=1
  $ export AFL_HARDEN=1
  $ ./configure --with-debug --enable-extended-host-patterns --enable-accept-filter --enable-no-gifs --enable-compression --enable-strptime-sanity-checks --enable-external-filters --enable-fuzz

  $ ./privoxy --fuzz
  Privoxy version 3.0.24 (http://www.privoxy.org/)
  Usage: ./privoxy [--config-test] [--chroot] [--help] [--no-daemon] [--pidfile pidfile] [--pre-chroot-nslookup hostname] [--user user[.group]] [--version] [configfile]
         ./privoxy --fuzz fuzz-mode ./path/to/fuzzed/input [--stfu]

  Supported fuzz modes and the expected input:
   action: Text to parse as action file.
   client-request: Client request to parse. Currently incomplete
   client-header: Client header to parse.
   chunked-transfer-encoding: Chunk-encoded data to dechunk.
   deflate: deflate-compressed data to decompress.
   filter: Text to parse as filter file.
   gif: gif to deanimate.
   gzip: gzip-compressed data to decompress.
   pcrs-substitute: A pcrs-substitute to compile. Not a whole pcrs job! Example: Bla $1 bla C $3 blah.
   server-header: Server header to parse.
   server-response: Server response to parse.

  The following fuzz modes read data from stdin if the 'file' is '-'
   client-request
   client-header
   chunked-transfer-encoding
   deflate
   gif
   gzip
   pcrs-substitute
   server-header
   server-response

  Aborting

  $ export ASAN_OPTIONS='abort_on_error=1'
  $ mkdir input output
  $ echo '$1 bla fasel $2' &#62; input/pcrs
  $ afl-fuzz -i input -o output -m none ~/git/privoxy/privoxy --fuzz pcrs-substitute - --stfu

  $ cat &#62;input/pcrs.txt
  FILTER: bla fasel
  s@(.{1})[432](\d+)@$1$2$hostname@UgisT

  $ afl-fuzz -i input/ -o output/ -f bla.filter -m none privoxy --fuzz filter bla.filter --stfu</pre>
          </td>
        </tr>
      </table>
    </div>
  </div>
  <div class="NAVFOOTER">
    <hr align="left" width="100%">
    <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="33%" align="left" valign="top"><a href="coding.html" accesskey="P">Prev</a></td>
        <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
        <td width="33%" align="right" valign="top"><a href="newrelease.html" accesskey="N">Next</a></td>
      </tr>
      <tr>
        <td width="33%" align="left" valign="top">Coding Guidelines</td>
        <td width="34%" align="center" valign="top">&nbsp;</td>
        <td width="33%" align="right" valign="top">Releasing a New Version</td>
      </tr>
    </table>
  </div>
</body>
</html>