Hiya,
I found this code snippet(reference http://www.goldb.org) and wish to do more 
with it than just send out a Http Get request.I would like to introduce more 
traffic -say by downloading files,crawling through all the links,logging in etc 
etc,and wish to see how the web server reacts.I'm trying to stress the server 
to its limits....appreciate if anyone could provide me code/ideas to inject 
into this.
the website -http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ selected as 
example has many downloads.i tried from urllib import urlretrieve
urlretrieve('http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ruby-1.6.4-i586-mswin32.zip','ruby-1.6.4-i586-mswin32.zip'),but
 didnt work.....

[QUOTE]import time
import os
import sys, urllib, re
import httplib
#from urllib import urlretrieve
import urllib2
from threading import Thread

class LoadManager:
    def __init__(self):
        self.thread_refs = []
        self.msg = ('localhost') # default
    
    def stop(self):
        for thread in self.thread_refs:
            thread.stop()
            
    def start(self, threads=1, interval=0, rampup=1):
        for i in range(threads):
            spacing = (i * (float(rampup) / float(threads)))
            time.sleep(spacing)
            agent = LoadAgent(interval, self.msg)
            agent.setDaemon(True)
            agent.start()
            # print 'started thread # ' + str(i + 1)
            self.thread_refs.append(agent)
        
class LoadAgent(Thread):
    def __init__(self, interval, msg):
        Thread.__init__(self)
        self.running = True
        self.interval = interval
        self.msg = msg
        
    def stop(self):
        self.running = False
        
    def run(self):
        while self.running:
            start_time = time.time()
            if self.send(self.msg):
                end_time = time.time()
                raw_latency = end_time - start_time
                expire_time = (self.interval - raw_latency)
                latency = ('%.3f' % raw_latency)
                print latency
            else:
                raw_latency = 0
                expire_time = (self.interval - raw_latency)
            if expire_time > 0:
                time.sleep(expire_time)
                
    def send(self, msg):
        
        try:
            
            req = urllib2.Request(msg)
            response = urllib2.urlopen(req)
            the_page = response.read()
            
            return True
        except:
            print 'failed request'
            return False
 
def main():
    # sample usage
    manager = LoadManager()
    manager.msg = ('http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32')
    manager.start(threads=5, interval=2, rampup=2)

if __name__ == '__main__':
    main()[/QUOTE]


      
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to