new
This commit is contained in:
parent
e64af682dc
commit
ec14ad4e99
75
smmapdfw/test/Connector.py
Normal file
75
smmapdfw/test/Connector.py
Normal 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
13
smmapdfw/test/test
Executable 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
10
smmapdfw/test/test.ini
Normal file
@ -0,0 +1,10 @@
|
||||
[Global]
|
||||
Host: ddev1.eng.emea.uu.net
|
||||
Port: 110
|
||||
Threads: 20
|
||||
|
||||
[Verifier]
|
||||
AddressFile: addresses.lst
|
||||
QueriesPerSession: 2
|
||||
|
||||
|
6
smmapdfw/test/test_worker1.py
Normal file
6
smmapdfw/test/test_worker1.py
Normal 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
29
smmapdfw/test/verifier.py
Normal 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()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user