This commit is contained in:
whottgen 2004-10-14 14:08:11 +00:00
parent e64af682dc
commit ec14ad4e99
5 changed files with 133 additions and 0 deletions

View File

@ -0,0 +1,75 @@
import socket
import time
from threading import Thread, activeCount
class NetStringError(ValueError): pass
def NetStringDecode(s):
try:
length, data = s.split(':', 1)
except ValueError:
raise NetStringError, "Separator not found"
try:
length = int(length)
except ValueError:
raise NetStringError, "Can not read length"
if len(data) != length+1:
raise NetStringError, "Data has unexpected length"
if data[-1] != ',':
raise NetStringError, "End-delimiter not found"
return data[:-1]
def NetStringEncode(s):
return str(len(s)) + ":" + s + ","
class Connector (Thread):
def __init__(self, config, details):
Thread.__init__(self)
self.config = config
self.host = self.config.get('Global', 'Host')
self.port = int(self.config.get('Global', 'Port'))
self.klass = self.__class__.__name__
self.details = details
def connect(self):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect((self.host, self.port))
def query(self, request):
nets_request = NetStringEncode(self.klass + ' ' + request)
print(self.getName() + " REQUEST: " + nets_request)
self.sock.sendall(nets_request)
nets_response = self.sock.recv(8192)
print(self.getName() + " NETS_RESPONSE: " + nets_response)
response = NetStringDecode(nets_response)
print(self.getName() + " RESPONSE: " + response)
return response
def close(self):
self.sock.close()
def execute(self):
raise NotImplementedError
def run(self):
return self.execute()
def threadedExecute(config, klass, numOfThreads, details):
threads = []
while (1):
if activeCount() < numOfThreads:
t = klass(config, details)
t.start()
else:
time.sleep(1)

13
smmapdfw/test/test Executable file
View File

@ -0,0 +1,13 @@
#!/usr/bin/python
import ConfigParser
import Connector
import verifier
import test_worker1
config = ConfigParser.ConfigParser()
config.read("test.ini");
Connector.threadedExecute(config, verifier.verifier, int(config.get('Global', 'Threads')), {})

10
smmapdfw/test/test.ini Normal file
View File

@ -0,0 +1,10 @@
[Global]
Host: ddev1.eng.emea.uu.net
Port: 110
Threads: 20
[Verifier]
AddressFile: addresses.lst
QueriesPerSession: 2

View File

@ -0,0 +1,6 @@
from Connector import Connector
class test_worker1 (Connector):
def __init__(self, config):
Connector.__init__(self, config)

29
smmapdfw/test/verifier.py Normal file
View File

@ -0,0 +1,29 @@
import random
from Connector import Connector
class verifier (Connector):
addresses = None
def __init__(self, config, details):
Connector.__init__(self, config, details)
self.readAddressFile()
random.seed()
def readAddressFile(self):
if (verifier.addresses == None):
addressFile = self.config.get('Verifier', 'AddressFile')
f = open(addressFile)
l = f.readlines()
f.close()
verifier.addresses = map(lambda x: x[:-1].rstrip(), l)
def execute(self):
queriesPerSession = int(self.config.get('Verifier', 'QueriesPerSession'))
self.connect()
for i in range(queriesPerSession):
a = verifier.addresses[int(random.random()*len(verifier.addresses))]
self.query(a)
self.close()