root / pykota / trunk / tests / filldb.py @ 2773

Revision 2773, 5.6 kB (checked in by jerome, 18 years ago)

pkusers is now optimized like pkprinters, pkbcodes and edpykota.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
RevLine 
[2682]1#! /usr/bin/env python
2# -*- coding: ISO-8859-15 -*-
3
4# $Id$
5
6
7import sys
8import os
9import time
10
[2702]11def showTiming(number, before) :
12    """Displays timing information."""
13    elapsed = time.time() - before
14    persecond = int(float(number) / elapsed)
15    sys.stdout.write("\nTime elapsed : %.2f seconds (%i entries per second)\n\n" % (elapsed, persecond))
16   
[2682]17def createBillingCodes(number) :
18    """Creates a number of billing codes."""
[2683]19    sys.stdout.write("Adding %i billing codes...\n" % number)
20    billingcodes = [ "test-billingcode-%05i" % i for i in range(number) ]
21    argsfile = open("arguments.list", "w")
22    argsfile.write('--add\n--reset\n--description\n"a billing code"\n')
23    for bname in billingcodes :
24        argsfile.write("%s\n" % bname)
25    argsfile.close()   
26    before = time.time()
27    os.system('pkbcodes --arguments arguments.list') 
[2702]28    showTiming(number, before)
[2729]29    return billingcodes
[2682]30
[2729]31def deleteBillingCodes(billingcodes) :
[2682]32    """Deletes all test billing codes."""
33    sys.stdout.write("Deleting billing codes...\n")
[2729]34    argsfile = open("arguments.list", "w")
35    argsfile.write('--delete\n')
36    for bname in billingcodes :
37        argsfile.write("%s\n" % bname)
38    argsfile.close()   
[2682]39    before = time.time()
[2729]40    os.system('pkbcodes --arguments arguments.list') 
41    showTiming(len(billingcodes), before)
[2682]42   
43def createPrinters(number) :
44    """Creates a number of printers."""
[2683]45    sys.stdout.write("Adding %i printers...\n" % number)
46    printernames = [ "test-printer-%05i" % i for i in range(number) ]
47    argsfile = open("arguments.list", "w")
48    argsfile.write('--add\n--charge\n0.05\n--maxjobsize\n5\n--passthrough\n--description\n"a printer"\n')
49    for pname in printernames :
50        argsfile.write("%s\n" % pname)
51    argsfile.close()   
52    before = time.time()
53    os.system('pkprinters --arguments arguments.list') 
[2702]54    showTiming(number, before)
[2729]55    return printernames
[2682]56
[2729]57def deletePrinters(printernames) :
[2682]58    """Deletes all test printers."""
59    sys.stdout.write("Deleting printers...\n")
[2729]60    argsfile = open("arguments.list", "w")
61    argsfile.write('--delete\n')
62    for pname in printernames :
63        argsfile.write("%s\n" % pname)
64    argsfile.close()   
[2682]65    before = time.time()
[2729]66    os.system('pkprinters --arguments arguments.list') 
67    showTiming(len(printernames), before)
[2682]68   
69def createUsers(number) :
70    """Creates a number of users."""
[2683]71    sys.stdout.write("Adding %i users...\n" % number)
72    usernames = [ "test-user-%05i" % i for i in range(number) ]
73    argsfile = open("arguments.list", "w")
[2773]74    argsfile.write('--add\n--limitby\nbalance\n--balance\n50.0\n--description\n"an user"\n--comment\n"fake payment"\n')
[2683]75    for uname in usernames :
76        argsfile.write("%s\n" % uname)
77    argsfile.close()   
78    before = time.time()
[2706]79    os.system('pkusers --arguments arguments.list') 
[2702]80    showTiming(number, before)
[2729]81    return usernames
[2682]82
[2729]83def deleteUsers(usernames) :
[2682]84    """Deletes all test users."""
85    sys.stdout.write("Deleting users...\n")
[2729]86    argsfile = open("arguments.list", "w")
87    argsfile.write('--delete\n')
88    for uname in usernames :
89        argsfile.write("%s\n" % uname)
90    argsfile.close()   
[2682]91    before = time.time()
[2729]92    os.system('pkusers --arguments arguments.list') 
93    showTiming(len(usernames), before)
94   
95def createUserPQuotas(usernames, printernames) :
96    """Creates a number of user print quota entries."""
97    number = len(usernames) * len(printernames)
98    sys.stdout.write("Adding %i user print quota entries...\n" % number)
99    argsfile = open("arguments.list", "w")
100    argsfile.write('--add\n--softlimit\n100\n--hardlimit\n110\n--reset\n--hardreset\n--printer\n')
101    argsfile.write("%s\n" % ",".join(printernames))
102    for uname in usernames :
103        argsfile.write("%s\n" % uname)
104    argsfile.close()   
105    before = time.time()
106    os.system('edpykota --arguments arguments.list') 
[2702]107    showTiming(number, before)
[2729]108
109def deleteUserPQuotas(usernames, printernames) :
110    """Deletes all test user print quota entries."""
111    number = len(usernames) * len(printernames)
112    sys.stdout.write("Deleting user print quota entries...\n")
113    argsfile = open("arguments.list", "w")
114    argsfile.write('--delete\n--printer\n')
115    argsfile.write("%s\n" % ",".join(printernames))
116    for uname in usernames :
117        argsfile.write("%s\n" % uname)
118    argsfile.close()   
119    before = time.time()
120    os.system('edpykota --arguments arguments.list') 
[2740]121    showTiming(number, before)
[2682]122   
123if __name__ == "__main__" :   
124    if len(sys.argv) == 1 :
[2748]125        sys.stderr.write("usage :  %s  [--nodelete]  NbBillingCodes  NbPrinters  NbUsers\n" % sys.argv[0])
[2682]126    else :   
[2748]127        delete = True
128        args = sys.argv[1:]
129        if args[0] == "--nodelete" :
130            args = args[1:]
131            delete = False
132        nbbillingcodes = int(args[0])
133        nbprinters = int(args[1])
134        nbusers = int(args[2])
[2683]135        if nbbillingcodes :
[2729]136            bcodes = createBillingCodes(nbbillingcodes)
[2683]137        if nbprinters :
[2729]138            printers = createPrinters(nbprinters)
[2683]139        if nbusers :   
[2729]140            users = createUsers(nbusers)
141           
[2730]142        if nbusers and nbprinters :   
[2729]143            createUserPQuotas(users, printers)
[2748]144            if delete :
145                deleteUserPQuotas(users, printers)
[2729]146           
[2748]147        if delete :   
148            if nbbillingcodes :   
149                deleteBillingCodes(bcodes)
150            if nbusers :   
151                deleteUsers(users)           # NB : either this one or the one below
152            if nbprinters :   
153                deletePrinters(printers)     # also delete user print quota entries.
[2682]154        os.remove("arguments.list")
155       
Note: See TracBrowser for help on using the browser.