annotate tools/load_tracker.py @ 4781:6e9b9743de89

Implementation for: http://issues.roundup-tracker.org/issue2550731 Add mechanism for the detectors to be able to tell the source of the data changes. Support for tx_Source property on database handle. Can be used by detectors to find out the source of a change in an auditor to block changes arriving by unauthenticated mechanisms (e.g. plain email where headers can be faked). The property db.tx_Source has the following values: * None - Default value set to None. May be valid if it's a script that is created by the user. Otherwise it's an error and indicates that some code path is not properly setting the tx_Source property. * "cli" - this string value is set when using roundup-admin and supplied scripts. * "web" - this string value is set when using any web based technique: html interface, xmlrpc .... * "email" - this string value is set when using an unauthenticated email based technique. * "email-sig-openpgp" - this string value is set when email with a valid pgp signature is used. (*NOTE* the testing for this mode is incomplete. If you have a pgp infrastructure you should test and verify that this is properly set.) This also includes some (possibly incomplete) tests cases for the modes above and an example of using ts_Source in the customization.txt document.
author John Rouillard <rouilj@ieee.org>
date Tue, 23 Apr 2013 23:06:09 -0400
parents 6e3e4f24c753
children 64b05e24dbd8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 #! /usr/bin/env python
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 '''
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 Usage: %s <tracker home> <N>
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
5 Load up the indicated tracker with N issues and N/100 users.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6 '''
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 import sys, os, random
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 from roundup import instance
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11 # open the instance
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12 if len(sys.argv) < 2:
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13 print "Error: Not enough arguments"
3343
53d278e1440f fix error message. backport candidate
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 2261
diff changeset
14 print __doc__.strip()%(sys.argv[0])
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15 sys.exit(1)
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16 tracker_home = sys.argv[1]
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
17 N = int(sys.argv[2])
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19 # open the tracker
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20 tracker = instance.open(tracker_home)
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21 db = tracker.open('admin')
4781
6e9b9743de89 Implementation for:
John Rouillard <rouilj@ieee.org>
parents: 4570
diff changeset
22 db.tx_Source = "cli"
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 priorities = db.priority.list()
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25 statuses = db.status.list()
2261
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
26 resolved_id = db.status.lookup('resolved')
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
27 statuses.remove(resolved_id)
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 names = ['alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta',
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi',
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31 'rho']
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
32
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 titles = '''Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 Duis nibh purus, bibendum sed, condimentum ut, bibendum ut, risus.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 Fusce pede enim, nonummy sit amet, dapibus a, blandit eget, metus.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36 Nulla risus.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37 Vivamus tincidunt.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 Donec consequat convallis quam.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 Sed convallis vehicula felis.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 Aliquam laoreet, dui quis pharetra vehicula, magna justo.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 Euismod felis, eu adipiscing eros metus id tortor.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42 Suspendisse et turpis.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
43 Aenean non felis.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 Nam egestas eros.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
45 Integer tellus quam, mattis ac, vestibulum sed, egestas quis, mauris.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
46 Nulla tincidunt diam sit amet dui.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 Nam odio mauris, dignissim vitae, eleifend eu, consectetuer id, risus.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48 Suspendisse potenti.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 Donec tincidunt.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50 Vestibulum gravida.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 Fusce luctus, neque id mattis fringilla, purus pede sodales pede.
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 Quis ultricies urna odio sed orci.'''.splitlines()
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 try:
2235
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
55 try:
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
56 db.user.lookup('alpha0')
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
57 except:
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
58 # add some users
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
59 M = N/100
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
60 for i in range(M):
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
61 print '\ruser', i, ' ',
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
62 sys.stdout.flush()
2261
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
63 if i/17 == 0:
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
64 db.user.create(username=names[i%17])
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
65 else:
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
66 db.user.create(username=names[i%17]+str(i/17))
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67
2235
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
68 # assignable user list
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 users = db.user.list()
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 users.remove(db.user.lookup('anonymous'))
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 print
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 # now create the issues
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 for i in range(N):
2235
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
75 print '\rissue', i, ' ',
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 sys.stdout.flush()
2261
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
77 # in practise, about 90% of issues are resolved
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
78 if random.random() > .9:
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
79 status = random.choice(statuses)
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
80 else:
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
81 status = resolved_id
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 db.issue.create(
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 title=random.choice(titles),
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84 priority=random.choice(priorities),
2261
1bbdd3407eff loader tweak
Richard Jones <richard@users.sourceforge.net>
parents: 2235
diff changeset
85 status=status,
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 assignedto=random.choice(users))
2235
87c238d8bc76 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 2234
diff changeset
87 if not i%1000:
2230
ca2664e095be disable forking server when os.fork() not available [SF#938586]
Richard Jones <richard@users.sourceforge.net>
parents: 2228
diff changeset
88 db.commit()
2228
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 print
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91 db.commit()
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
92 finally:
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93 db.close()
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94
1d1362c54c94 Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
95 # vim: set filetype=python ts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/